Langage c

Résolu/Fermé
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 - Modifié par delavega470 le 20/09/2014 à 14:14
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 sept. 2014 à 23:25
Bonjour à vous je voudrai avoir un coup de main svp !!
Je veux saisir 5 notes et faire afficher ces 5 notes mais c'est la dernière note seule qui s'affiche.
/*#include <stdio.h>
#include <stdlib.h>
int note , i ;
int main()
{
    printf("entrer les 5 notes!\n");
    for (i=0; i<5; i++)
    {
        scanf("%d",¬e);
    }

        printf("les notes sont %d",note);

    return 0;
} */

2 réponses

Sugel Messages postés 4070 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 724
Modifié par Sugel le 20/09/2014 à 14:34
c'est logique, tu n'as pas créé 5 variables, tu écrase la même à chaque tour de boucle ;-)

une version corrigée de ton code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int note[5];
    int i;
    printf("entrer les 5 notes!\n");
    for (i=0; i<5; i++)
    {
        scanf("%d",note+i);
    }

    puts("les notes sont :");

    for (i=0; i<5; i++)
    {
        printf("%d ",*(note+i));
    }
    return 0;
}


PS: évite absolument de créer des variables globales, c'est une très très mauvaise habitude !

------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
20 sept. 2014 à 14:46
Pour info, *(note+i) peut être remplacé par l'expression plus courte et plus lisible : note[i]
N'oublie pas de mettre un '\n' avant le return 0; pour forcer l'affichage.
Ou à défaut un petit fflush(stdout);
0
Sugel Messages postés 4070 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 724
20 sept. 2014 à 14:51
effectivement :)

pour le note+i, c'est un style; un moyen de ne pas oublier ce que ça veut vraiment dire, comment les listes occupent réellement la mémoire. Tu perds en lisibilité mais gagne en sens ^^

après c'est vrai que c'est plus facile avec les crochets.

Et merci pour le \n, je n'y avais jamais pensé !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
20 sept. 2014 à 23:25
Yep. D'un autre côté, cela laisse croire que note est un pointeur alors qu'il s'agit d'un tableau. Mais bon, grâce à l'arithmétique des pointeurs, on retombe sur nos pattes, et c'est le principal :-).
0
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 48
20 sept. 2014 à 14:42
Merci beaucoup!!!
0
Sugel Messages postés 4070 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 724
Modifié par Sugel le 20/09/2014 à 14:44
passe le sujet en résolu.

PS:tu peux encore améliorer le code en décrémentant la variable dans la seconde boucle au lieu de la remettre à zéro.
0