Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rentrer des nombres dans un tableau

(avec scanf)

Sujet résolu
    14 juillet 2006 à 13:47:05

    Bonjour à tous

    Voilà mon problème

    Je voudrais rentrer des nombres dans un tableau avec un scanf mais je n'y arrive pas car il y a un message d'erreur après que je saisisse le premier nombre du tableau. Quelqu'un pourrait m'aider et m'expliquer pourquoi ça ne fonctionne pas ?
    Voici mon code

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
        int tableau[2], i= 0, somme = 0;
            printf("Remplir le tableau :\n");
            for (i= 0 ; i < 3; i++)
            {
                scanf("%ld", tableau[i]);
            somme+= tableau[i];
            }
        printf("Voici la somme %d", somme);

        return 0;
    }

    • Partager sur Facebook
    • Partager sur Twitter
      14 juillet 2006 à 13:49:09

      Il te faut utiliser &tableau[i] ou tableau+i.
      Sinon attention à ton for il doit s'arreter à 1 cad i<2 et pas i<3.
      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2006 à 14:03:27

        Salut

        Merci pour ta réponse mais je viens d'essayer avec tes modifications et ça ne fonctionne toujours pas ou alors je l'ai mal placé, j'ai juste modifié à l'intérieur de la boucle avec :
        for (i= 0 ; i < 1; i++)
        {
        scanf("%ld", &tableau[i]);
        somme+= &tableau[i];
        }
        </code>
        mais ça ne marche toujours pas.
        • Partager sur Facebook
        • Partager sur Twitter
          14 juillet 2006 à 14:20:37

          Pour le for c'est i<2... et il fallait utiliser &tableau[i] uniquement pour le scanf. En effet celui ci attend une adresse. (Jete un coup d'oeil au chapitre portant sur ce sujet)
          • Partager sur Facebook
          • Partager sur Twitter
            14 juillet 2006 à 14:35:12

            Ok pour le scanf, j'ai compris ma faute, en fait le scanf attend l'adresse de la case du tableau pour pouvoir stocker la valeur mais après là ou je ne comprend plus c'est pourquoi la ligne d'en dessous ne marche pas. Je vais t'expliquer comment je comprends les choses :

            voici la boucle


            for (i= 0 ; i < 2; i++)
                    {
                        scanf("%ld", &tableau[i]);
                        somme+= tableau[i];
                    }


            on demande à l'utilsateur un nombre, qui va dans tableau[i], ensuite on met le contenu de tableau[i] dans somme et cela pour tous les indices.

            J'ai déjà regardé le chapitre sur les tableaux mais cela je ne comprends pas. Tu peux m'expliquer s'il te plaît ?

            Merci d'avance.
            • Partager sur Facebook
            • Partager sur Twitter
              15 juillet 2006 à 19:07:57

              Je ne vois pas d'erreur à priori, dis nous ce que tu saisis.
              • Partager sur Facebook
              • Partager sur Twitter
                15 juillet 2006 à 19:52:18

                Salut,

                Eh bien je remplis mon tableau avec un chiffre, je valide pour passer à la case suivante du tableau et aussitôt après la validation, le message d'erreur habituel "Ce programme va s'arrêter..."

                Qu'est-ce que je fais de mal, je ne comprends pas :(
                • Partager sur Facebook
                • Partager sur Twitter
                  15 juillet 2006 à 19:53:10

                  On peux avoir le code complet ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 juillet 2006 à 19:56:46

                    Bien sûr (désolé)


                    #include <stdio.h>
                    #include <stdlib.h>

                    int main()
                    {
                        int tableau[2], i= 0, somme = 0;
                            printf("Remplir le tableau :\n");
                            for (i= 0 ; i < 2 ; i++)
                            {
                                scanf("%ld", &tableau[i]);
                            somme+= tableau[i];
                            }
                        printf("Voici la somme %d", somme);

                        return 0;
                    }

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juillet 2006 à 19:59:29

                      décole ton += de ton somme. Concordance des types (ça le fait) : tu as un tableau d'int donc dans ton scanf tu dois utiliser %d et non %ld (pourtant tu l'utilises bien dans ton printf)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 juillet 2006 à 20:02:31

                        Citation : Dede86

                        [...] le message d'erreur habituel "Ce programme va s'arrêter..."

                        Qu'est-ce que je fais de mal, je ne comprends pas :(



                        T'es pas prêt d'arrêter de le voir ce message... En général ce sont les erreurs les plus tenaces, signe d'un débordement de mémoire, ce qui signifie que tu as depassé les limites d'un tableau par exemple.

                        Tout dépend du type de ton tableau, de la manière dont tu l'a alloué, de ce que tue entre exactement etc. Je rejoins Octal sur le fait qu'on aimerais avoir le code complet (ou en tout cas le nécessaire).

                        Dans tous les cas, bien que l'erreur semble être au niveau du scanf, je te conseille d'utiliser ton debugger afin de voir quelle ligne il te surligne...

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 juillet 2006 à 11:07:18

                          Merci à tous, j'ai résolu mon problème grâce aux modifications apportés. Apparement, quand je compilais et exécutais le code, j'utilisais une version précédente de ce code, je veux dire par là que les modifications apportés n'étaient pas enregistrés.
                          Vous voyez ce que je veux dire ?
                          Avez-vous une solution pour ne plus avoir ce genre de problème car j'ai été obligé de créer à nouveau un nouveau projet et de copier/coller mon code avec les modifications apportés pour qu'il fonctionne (j'utilise Code Blocks v 1.0)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 juillet 2006 à 16:25:15

                            Sauvegardes tu ton code avant de le compiler ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 juillet 2006 à 22:48:28

                              Oui je le sauvegarde mais le problème semble être que quand je le compile, le nouveau fichier modifié ne semble pas être pris en compte et c'est pour cette raison que mon code ne marchait pas.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 juillet 2006 à 23:34:05

                                J'ai trouvé la solution à mon problème, il suffisait juste de modifier l'endroit ou l'exécutable doit être crée.

                                Merci beaucoup !

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Rentrer des nombres dans un tableau

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown