Souci programme C
Résolu
freewoman
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
quelqu'un pourrait me dire ce qui ne va pas dans mon programme?
http://pastebin.com/m18bce61b
merci d'avance.
quelqu'un pourrait me dire ce qui ne va pas dans mon programme?
http://pastebin.com/m18bce61b
merci d'avance.
Configuration: Windows XP Firefox 1.5
16 réponses
-
Le but est de faire trouver a l'utilisateur un chiffre non?
Mon C est un peu rouillé^^ T'as verifié ton tri bulle au milieu?
Quand je faisais du C c'etait ça qui pechait generalement^^ -
le but est de remplir un tableau et de le trier par ordre decroissant.
le programme ne m'affiche pas ce qu'il faut. -
Je vais surement dire une betise et si c'est le cas tu me reprendras....mais pourquoi tu demandes l'adresse de N alors que tu n'as jamais affecté un pointeur dessus cette adresse? a moins que le pointeur ne te ressorte la valeur de l'adresse de t...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
&N : affiche l'ADRESSE de la variable dans la memoire.
On est bien d'accord la dessus? -
bon, je recommence.
le programme demande à l'utilisateur de taper le nombre de valeurs.
le programme les trie, les place dans le tableau et affiche le tableau.
donc N est une valeur et pas une adresse. -
-
-
Autant pour moi apres avoir relu la syntaxe de printf/scanf.(J'en profite pour me remettre a niveau^^)
Qu'est que ton programme t'affiche exactement?
Rien,des valeurs abherentes?
Désolé d'etre aussi rouillé, c'en est désolant. -
for(i=0;i<N;i++){
if (t[i+1]<t[i])
aux=t[i];
t[i]=t[i+1];
t[i+1]=aux;
}
cette partis la ne permet pas trier ton tableau..... mais juste les éléments 2 par 2.
tu auras t[n] qui sera bien inférieur a t[n+1] mais rien n'assure que t[n] sera bien inférieur a t[n+x]. -
Si c'est des valeurs abherentes du genre 022F47E c'est une erreur de pointeurs.
Si c'est des valeurs du genre 1221455775000 erreur dans la boucle d'increment. -
bool ok=false;
while (!ok)
for(i=0;i<N;i++){
if (t[i+1]<t[i])
aux=t[i];
t[i]=t[i+1];
t[i+1]=aux;
}else{
ok=true;
}
essaye sa -
Exact @ kill4m.
C'etait une simple erreur de tribulle..oubli de stockage de la deuxieme valeur testée dans ta variable.
Vais me remettre au C vu les trous de memoire qui ont surgi... -
Moi je pratique alors c'est un peu plus simple mais c'est vrai qu'on a tendance a oubliée :)
-
Merci de ta comprehension^^
Jpensais pas etre aussi mauvais lol..me souvenais que les tri etaient de sources d'erreur mais pas capable de voir celle la...o_O vais retourner a mon .Net^^
Bonne continuation et désolé d'avoir posté pour rien^^
Cordialement, -
@kill4m.
Ton algorithme est faux.
Effectivement, il y a le coup de la variable bool. Mais il y a aussi la double boucle for. Et attention aux indices, lorsque tu parles d'éléments i+1 dans une boucle for qui peut prendre N-1 comme valeur, il y a du débordement de tableau en lecture. Attention également à l'usage des accolades pour le if. Il a plusieurs instructions.
@freewoman,
teste :void saisir(int *t,int N){ int i,j,aux; int enCours; for(i=0;i<N;i++){ printf("taper une valeur\n"); scanf("%d",&t[i]); } enCours=1; for(i=0;i<N && enCours;i++){ enCours=0; for(j=1;j<N-i;j++){ if (t[j]<t[j-1]){ aux=t[j-1]; t[j-1]=t[j]; t[j]=aux; enCours=1; } } } }