/*
 * Cours Langage C - AIR1
 * C. Recanati 26/08/2019
 * TP2 exo3
*/

#include <stdio.h>
#include <stdlib.h>

#define NBELEM(tab)  sizeof(tab)/sizeof(tab[0])

void echange (int *x, int *y) { 
	int sauve;

	sauve = *x;
	*x = *y;
	*y = sauve;
}

void trieTab (int tab [], int nbElem)  { 
  int i, j;

  if ( (nbElem == 0) || (nbElem == 1) )
    return; 
   for ( i=0 ; i < nbElem-1; i++)
     for ( j=i+1; j < nbElem ; j++)
       if (tab[i] >  tab[j])
	 echange (&tab[i], &tab[j]);
  return;
}

void printTab (int tab [], int nb)  { 
  int i;
 
  printf("tableau :  {");
  for (i=0; i < nb ; i++)
  	if (i!=nb-1)
      printf("%d ", tab[i]);
    else
      printf("%d", tab[i]);      
  printf("}\n");
  return;
}

void initTab (int tab[], int nb)  { 

  printf("entrez %d entiers pour initialiser le tableau: ", nb);
  for (int i = 0; i < nb; i++)
      scanf("%d", &tab[i]);
  printf("\n");
  return;
}

int main() {
  int tableau [] = { 9, -1, 12, -2, 4, 5, 0 };
  int* tab;  // le tableau initialisé par l'utilisateur
  int n;
  
  printTab(tableau, NBELEM(tableau));
  trieTab(tableau,  NBELEM(tableau));
  printf("après tri\n");
  printTab(tableau, NBELEM(tableau));
  
  printf("entrez la taille d'un nouveau tableau: ");
  scanf("%d", &n);
  tab = (int*) malloc(sizeof(int)*n);
  if (tab == NULL)
  	return -1;
  
  initTab(tab, n);
  printTab(tab, n);
  trieTab(tab, n);
  printf("après tri\n");
  printTab(tab, n);
  
  return EXIT_SUCCESS;
}



