Aide : Tri a bulle !
Fermé
Mizo-Up
Messages postés
41
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
25 mars 2014
-
28 févr. 2013 à 21:40
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 mars 2013 à 23:54
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 mars 2013 à 23:54
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
28 févr. 2013 à 22:31
28 févr. 2013 à 22:31
int t[n];
Ne marche qu'en C99. Sinon il faut utiliser le malloc().
while (f=1)
Boucle infinie. L'opérateur de comparaison est == (et non =).
for (i=0;i<=n;i++){
if (t[i]>t[i+1]){
La valeur max est i=n. Donc t[i] est à l'extérieur du tableau et ne parlons pas de t[i+1]
Ne marche qu'en C99. Sinon il faut utiliser le malloc().
while (f=1)
Boucle infinie. L'opérateur de comparaison est == (et non =).
for (i=0;i<=n;i++){
if (t[i]>t[i+1]){
La valeur max est i=n. Donc t[i] est à l'extérieur du tableau et ne parlons pas de t[i+1]
Mizo-Up
Messages postés
41
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
25 mars 2014
28 févr. 2013 à 22:36
28 févr. 2013 à 22:36
Merci Fiddy,
Pour la derniere Remarque, j'ai pas bien compirs,
Enfin kesk'il faut faire ?!
Pour la derniere Remarque, j'ai pas bien compirs,
Enfin kesk'il faut faire ?!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
28 févr. 2013 à 22:42
28 févr. 2013 à 22:42
Au lieu de i<=n, mets plutôt i<n-1 (ou i<=n-2)
Mizo-Up
Messages postés
41
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
25 mars 2014
28 févr. 2013 à 22:46
28 févr. 2013 à 22:46
Ok merci c fait ! Mais dans la class on utulise int t[n];
Bon, tu peux m'expliquer en resume "malloc(). "
Et donne moi un example(de cet exercice) pour ke je comprend bien :)
Bon, tu peux m'expliquer en resume "malloc(). "
Et donne moi un example(de cet exercice) pour ke je comprend bien :)
Mizo-Up
Messages postés
41
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
25 mars 2014
28 févr. 2013 à 22:49
28 févr. 2013 à 22:49
Et on peux aussi met int* t[n] dans les parametres, nn ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
28 févr. 2013 à 23:00
28 févr. 2013 à 23:00
Mais dans la class on utulise int t[n];
Exaspérant ^^.
En bon C, int t[X] est une allocation statique (on fixe X une bonne fois pour toute).
Si on désire créer un tableau d'une taille connue à l'exécution, on utilise l'allocation dynamique. Concrètement, il s'agit d'un pointeur qui pointe sur une zone qu'on va allouer dans le heap.
Cela donne :
/*déclaration*/
int *p;
/*allocation dynamique : n est défini avec scanf()*/
p=malloc(n*sizeof(int));
/*lorsque tu n'as plus besoin du tableau, libération de la mémoire*/
free(p), p=NULL;
Variante statique :
#define X 15
/*allocation statique : X est connue à la compilation*/
int t[X];
C'est d'ailleurs le cas idéal en C pour apprendre les pointeurs.
Une nouvelle norme est sortie pour le C (ISO C99) et cela autorise dans certains cas int t[n]; avec n défini à l'exécution. Il s'aggit du mécanisme complexe de VLA. Mais quand on débute, ce n'est pas recommandé.
En espérant avoir été clair
Exaspérant ^^.
En bon C, int t[X] est une allocation statique (on fixe X une bonne fois pour toute).
Si on désire créer un tableau d'une taille connue à l'exécution, on utilise l'allocation dynamique. Concrètement, il s'agit d'un pointeur qui pointe sur une zone qu'on va allouer dans le heap.
Cela donne :
/*déclaration*/
int *p;
/*allocation dynamique : n est défini avec scanf()*/
p=malloc(n*sizeof(int));
/*lorsque tu n'as plus besoin du tableau, libération de la mémoire*/
free(p), p=NULL;
Variante statique :
#define X 15
/*allocation statique : X est connue à la compilation*/
int t[X];
C'est d'ailleurs le cas idéal en C pour apprendre les pointeurs.
Une nouvelle norme est sortie pour le C (ISO C99) et cela autorise dans certains cas int t[n]; avec n défini à l'exécution. Il s'aggit du mécanisme complexe de VLA. Mais quand on débute, ce n'est pas recommandé.
En espérant avoir été clair
Mizo-Up
Messages postés
41
Date d'inscription
mardi 19 février 2013
Statut
Membre
Dernière intervention
25 mars 2014
28 févr. 2013 à 23:12
28 févr. 2013 à 23:12
Un peu .. Mais merci bien fiddy tu es tjr ^^
Mnt je veux just ke tu me donne le code source corrige,
Stp, just pour cette fois !
Mnt je veux just ke tu me donne le code source corrige,
Stp, just pour cette fois !