Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice tableau 1

problème d'amélioration

    17 avril 2006 à 12:05:47

    Salut salut !
    J'ai un petit problème a propos de l'exercice 1 du cours sur les tableaux
    J'ai réussi l'exercice sans trop de problème et j'ai essayé de l'amélioré en rendant possible le choix de la taille du tableau ainsi que le choix de chaque valeur du tableau : mais la "problème" mon code ne fonctionne pas.
    Un pti coup de main serais le bienvenue s'il vous plait...
    Voilà mon code...

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

    long sommeTableau(long tableau[], long tailleTableau);

    int main()
    {
        long nbTermes = 0;
        long tableau[] = {0};
        long somme = 0;
        long i = 0;

    // On demande le nombre de termes de la somme
        printf("Combien de termes souhaitez vous entrer ?  ");
        scanf("%ld", &nbTermes);
        printf("\n\n");

    // On demande les termes choisis un par un
        for(i=1 ; (i-1)<nbTermes ; i++)
        {
            printf("Entrez terme %ld :  ", i);
            scanf("%ld", &tableau[i-1]);
        }

    // On fait la somme de tous les termes à l'aide de la fonction sommeTableau
        somme = sommeTableau(tableau, nbTermes);

        printf("La somme de tous les termes vaut %ld", somme);

            return 0;
    }


    long sommeTableau(long tableau[], long tailleTableau)
    {
        long i=0, somme=0;

        for(i=0; i<tailleTableau; i++)
        {
            somme += tableau[i];
        }

        return somme;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2006 à 12:21:49

      Citation : kinito44


      int main()
      {
          long nbTermes = 0;
          long tableau[] = {0};

              scanf("%ld", &tableau[i-1]);

      La taille du tableau est 1. Les index valides sont donc 0 = 1-1, soit 0. Même si il est techniquement possible d'accéder au-dela de l'index max (le C ne contrôle pas le débordement, c'est du ressort du programmeur), le comportement est indéfini et tout peut arriver. C'est donc un bug.

      Si tu veux un tableau de taille définie par l'utilisateur, il faut utiliser l'allocation dynamique avec malloc() / free().

      Et puis utilise directement les bons indices, sans bricoler avec des -1...
      for (i = 0; i < n; i++)

      Pour le numéro du terme, tu mets +1 et c'est tout.

      Enfin, je déconseille l'usage de scanf(). Trop complexe pour un débutant (et même pour la plupart des professionels, je te rassure). Je conseille un combinaison de fgets() et de sscanf().

      http://mapage.noos.fr/emdel/notes.htm#saisie
      http://mapage.noos.fr/emdel/notes.htm#fichiers
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        17 avril 2006 à 12:31:51

        Merci bien pour ton aide.
        J'ai compris en gros mon problème mais comme je n'ai pas encore vu les "allocation dynamique" je pense que je vais avancer un peu dans le cours avant de me lancer la dedans.

        Merci encore ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Exercice tableau 1

        × 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