Souci programme C
Résolu/Fermé
freewoman
-
17 nov. 2008 à 17:00
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 nov. 2008 à 17:50
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 nov. 2008 à 17:50
A voir également:
- Souci programme C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
16 réponses
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:03
17 nov. 2008 à 17:03
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^^
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.
le programme ne m'affiche pas ce qu'il faut.
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:10
17 nov. 2008 à 17:10
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
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:16
17 nov. 2008 à 17:16
&N : affiche l'ADRESSE de la variable dans la memoire.
On est bien d'accord la dessus?
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.
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.
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
17 nov. 2008 à 17:22
17 nov. 2008 à 17:22
il ne t'affiche pas ce qu'il faut ou rien du tous ??
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:24
17 nov. 2008 à 17:24
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.
Qu'est que ton programme t'affiche exactement?
Rien,des valeurs abherentes?
Désolé d'etre aussi rouillé, c'en est désolant.
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
17 nov. 2008 à 17:25
17 nov. 2008 à 17:25
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].
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].
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:25
17 nov. 2008 à 17:25
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.
Si c'est des valeurs du genre 1221455775000 erreur dans la boucle d'increment.
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
17 nov. 2008 à 17:26
17 nov. 2008 à 17:26
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
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
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:33
17 nov. 2008 à 17:33
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...
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...
kill4m
Messages postés
224
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
28 janvier 2012
26
17 nov. 2008 à 17:36
17 nov. 2008 à 17:36
Moi je pratique alors c'est un peu plus simple mais c'est vrai qu'on a tendance a oubliée :)
Nuk
Messages postés
177
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
5 mai 2009
20
17 nov. 2008 à 17:38
17 nov. 2008 à 17:38
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,
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,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 nov. 2008 à 17:50
17 nov. 2008 à 17:50
@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 :
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; } } } }