#include <stdio.h>
#include <stdlib.h>
int swaps(int *num1, int *num2);
int main()
{ int card;
/*D'abord on demande combien de nombres
mettre dans la liste.
*/
printf("How many elements?\n");
/*grace a la ligne suivante l'utilisateur
va inscrire ce nombre qui sera appele "card'.*/
scanf("%d", &card);
/*par la ligne suivante on affiche le nombre "card"
qui a ete choisi.*/
printf("The length of the array will be %d\n", card);
/*a la ligne suivante on initialise un tableau qui
a pour longueur "card'.*/
int numbers[card];
/*Dans la boucle qui suit on va demander a l'utilisateur
de remplir dans l'ordre les "card" nombres du tableau*/
for (int i = 0; i<card; i++)
{
printf ("enter the %d indexed number\n", i);
scanf ("%d", &numbers[i]);
}
/*Dans la ligne suivante on va impimer le tableau.*/
printf("\nThe list of numbers is ");
/*Ici on va utiliser un pointeur pour l'incrementer
et avoir tous les elements de la liste*/
int *ptnumbers = NULL;
int j;
ptnumbers = numbers;
for(j = 0; j < card; j++)
printf("%d ,", *(ptnumbers +j));
/*Maintenant on va faire defiler tous les couples de nombres
adjacents, le premier et le deuxieme, le premier et le troisieme,
jusqu'a la fin, puis le deuxieme et le troisieme, le deuxieme et
le quatrieme etc, de maniere a s'assurer que le premier n'est pes
plus grand qu'un des nombres qui le suivent, de meme pour le
deuxieme avec les nombres qui le suivent ect*/
for(int a = 0; a < card; a++)
{
for(int b = a+1; b < card; b++)
{
/*Mais il y a le cas ou les nombres ne sont pas bien ordonner,
on prete attention a ce cas par la ligne suivante qui exprime
ceci par une condition*/
if(numbers[a] > numbers[b])
/*Si cette condition est remplie il faut changer l'ordre
de ces deux nombres.
Pour ce faire on va utiliser la forncion "swap" qui inverse
les adresses de deux nombres, c'est dans cette adresse qu'est insrite
la valeur de chaque nom de nombre*/
swaps(&numbers[a], &numbers[b]);
}
}
/*Et finalement on imprime la nouvelle version ordonnee du tableau.*/
printf("\nThe new list of numbers is ");
for(j = 0; j < card; j++)
printf("%d ,", *(ptnumbers +j));
return 0;
}
/*Cette fonction"swap" utilise une valeur temporaire, c'est a dire les adresses des
variables, car si on utilisait les variables et on faisait num1 = num2 et num2=num1,
ces deux variables auraient la valeur de num2, de plus, pour que la transformation
soit gardee meme apres le scope de la fornction on utilise les pointeurs qui
atteigne l'endroit ou est stockee la valeur correspondant a chaque variable.*/
int swaps(int *num1, int *num2)
{
int temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
return 0;
}
utiliser scanf, utiliser des tableaux et des pointeurs, la fonction swap, et un algorithme de rangement. utiliser un pointeur pour l'incrementer et faire defiler les elements de la liste.
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.