Pourtant simple ! ( C)

Résolu/Fermé
GIO0892 Messages postés 581 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 29 septembre 2011 - Modifié par GIO0892 le 17/12/2010 à 22:32
GIO0892 Messages postés 581 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 29 septembre 2011 - 19 déc. 2010 à 11:08
Bonjour,
voila je n'arrive pas a résoudre se code assez simple ^^

il maffiche toujour la derniere valeur tapez en la repetant n fois .

#include <stdio.h>   
#include <stdlib.h>   
void affichage(double *km,int n);   
int main()   
{   
    int i,n;// n = trajet   
    double *km;// nombre de km parcourue stocket dans un tableau   
        printf("veuillez entrer le nombre de trajet effectuer :",n);// on demande le nombre de trajet   
        scanf("%d",&n);   
        km=malloc(n*sizeof(double));   
        for(i=0;i<n;i++){   
            printf("veuillez entrer le nombre de km parcourrue pour le trajet %d :",i+1);   
            scanf("%lf",km);   
            }   
    affichage(km,n);   




    return 0;   
}   
void affichage(double *km, int n){   

    int i;   

    for(i=0;i<n;i++){   
        printf("%lf",*km);   

        }   
    }   



merci de votre aide
A voir également:

5 réponses

Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
17 déc. 2010 à 22:25
Salut,

comme tu le dis c'est plutôt simple : tu n'utilises pas la variable i dans tes boucles for. Je pense que tu n'es pas à l'aise avec le principe des pointeurs, et tu devrais commencer par faire des tutos dessus.

;)
0
GIO0892 Messages postés 581 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 29 septembre 2011 59
Modifié par GIO0892 le 17/12/2010 à 22:58
super sa repond pas a ma question ;)
sinon je me debrouille bien avec les pointeurs .....
0
GIO0892 Messages postés 581 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 29 septembre 2011 59
17 déc. 2010 à 23:02
comme tu ma pas rep j'ai trouvais tous seul il manquer le & a un endroit ....
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
18 déc. 2010 à 02:25
Bonjour,

Je me permets d'écrire même si tu as trouvé la solution car le code est faux, même si ça semble marcher...
scanf("%lf",km);
km est un pointeur sur un tableau de double. J'imagine que tu veux donc écrire dans chacune de ses cases.
Pour ça, il faut mettre : scanf("%lf",&km[i]); ou plus simplement : scanf("%lf",km+i);

printf("%lf",*km);
Même si certains compilateurs ne râlent pas. Il faut mettre "%f" dans printf pour les double. Et là, tu n'affiches pas tous les éléments du tableau.
Il faudrait donc mettre : printf("%f",km[i]);

Sinon, petite remarque sur ta fonction affichage. Pourquoi faire passer le pointeur ? Autant mettre le prototype en : void affichage (double km, int n); et appeler la fonction par : affichage(*km, n); C'est mieux ainsi puisque affichage n'a pas lieu de modifier les variables.

Et enfin, n'oublie pas non plus de mettre un free pour libérer la zone avec le return 0; final.

Cdlt,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GIO0892 Messages postés 581 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 29 septembre 2011 59
19 déc. 2010 à 11:08
déjà merci de ta réponse .
effectivement c'était le scanf qui était a l'origine du problème et merci de tes conseil
0