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
Bonjour,
quelqu'un pourrait me dire ce qui ne va pas dans mon programme?
http://pastebin.com/m18bce61b
merci d'avance.

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
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^^
0
le but est de remplir un tableau et de le trier par ordre decroissant.
le programme ne m'affiche pas ce qu'il faut.
0
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
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...
0
mais qui parle d'adresse?
0

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
&N : affiche l'ADRESSE de la variable dans la memoire.

On est bien d'accord la dessus?
0
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.
0
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
il ne t'affiche pas ce qu'il faut ou rien du tous ??
0
il n'affiche pas ce qu'il faut
0
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
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.
0
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
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].
0
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
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.
0
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
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
0
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
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...
0
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
Moi je pratique alors c'est un peu plus simple mais c'est vrai qu'on a tendance a oubliée :)
0
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
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,
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
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 :
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;
            }
        }
    }

}

0