Partage
  • Partager sur Facebook
  • Partager sur Twitter

Somme de ligne dans un tableau 2D avec pointeur

Sujet résolu
    12 février 2022 à 12:20:08

    Bonjours , je dois faire un code permettant d'additionner les sommes d'une ligne dans un tableau 2D avec pointeur et comparer les sommes des lignes entre elles et retourner la somme la plus grande ainsi que son indice. Le soucis c'est que je ne sais pas comment je peux faire pour garder la somme de la première ligne et la comparer avec la suivante.

    Voici mon code 

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define MAX 20
    #define MIN 0
    // saisir tableau 2d remplir aleatoirement et regarder celui qui a la ligne avec le somme la  plus grand et renvoyer le numero de la ligne
    
    void fremplir(int *, int ,int,int );
    void fafficher (int *, int ,int ,int );
    void fsomme(int *, int ,int ,int );
    
    int main()
    {
        int tab[20][20];
        int colmax=20;
        int nbl, nbc,ind;
    
        printf("Entrez le nombre de ligne que vous voulez utilisez (Max20) :");
        scanf("%d",&nbl);
    
        printf("Entrez le nombre de colonne que vous voulez utilisez Max20) :");
        scanf("%d",&nbc);
    
        fremplir(tab,nbc,nbl,colmax);
        fafficher(tab, nbc, nbl, colmax);
        /*ind=*/fsomme(tab, nbc,nbl, colmax);
    
        //printf("La somme la plus grande  se trouve en ligne %d",ind);
    
    
        return 0;
    }
    void fremplir( int *ptab, int nbc, int nbl, int colmax)
    {
        int i, j;
    
        srand(time(NULL));
    
        for(i=0;i<nbl;i++)
        {
            for(j=0;j<nbc;j++)
            {
                *ptab=rand()%(MAX-MIN+1)+MIN;
                ptab++;
            }
            ptab=ptab+colmax-nbc;
        }
    }
    void fafficher( int *ptab, int nbc, int nbl, int colmax)
    {
    
        int i,j;
    
        printf("Voici votre tableau\n");
    
        for(i=0;i<nbl;i++)
        {
            for(j=0;j<nbc;j++)
            {
                printf("%d\t",*ptab);
                ptab++;
            }
    
            printf("\n");
            ptab=ptab+colmax-nbc;
        }
    }
    void fsomme(int *ptab, int nbc, int nbl, int colmax)
    {
        int i,j, ind,somme=0;
        int max=0;
    
    
        for(i=0;i<nbl;i++)
        {
            somme=0;
    
            for(j=0;j<nbc;j++)
            {
    
                somme=somme+*ptab;
                ptab++;
            }
    
            ptab=ptab+colmax-nbc;
    
    
        }
    
        printf("%d",ind);
    
        return 0;
    }
    
    



    -
    Edité par BastienGayet 12 février 2022 à 12:22:20

    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2022 à 12:50:14

      Il y a beaucoup d'erreur (warning) dans ton code ! Tu devrais activer les warnings, ça te signalerait déjà pas mal de problème.

      Un des principaux est que tu ne peux pas passer un tableau de tableau d'int (tableau 2D) par un pointeur d'int ce n'est pas compatible.

      Et ligne 90 tu affiches une variable non initialisé ! Donc forcement ça va pas donner ce que tu souhaites.

      BastienGayet a écrit:

      Le soucis c'est que je ne sais pas comment je peux faire pour garder la somme de la première ligne et la comparer avec la suivante.

      Et bien tu la garde dans une variable puis tu la compare à la somme de la suivante et tu mets dans cette même variable la plus grande somme des deux. Tu sauvegarde dans une seconde variable l'indice de celle qui a la plus grande somme et ainsi de suite jusqu'à la dernière ligne de ton tableau.

      • Partager sur Facebook
      • Partager sur Twitter
      ...
        12 février 2022 à 13:20:47

        C'est bon, j'ai réussi à le faire.
        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2022 à 13:53:26

          BastienGayet a écrit:

          C'est bon, j'ai réussi à le faire.

          Bonjour,

          Sujet résolu

          Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

          • Partager sur Facebook
          • Partager sur Twitter
            12 février 2022 à 15:08:19

            Bravo !

            Tu as pu éliminer tout les warnings ? 

            Une chose que je ne t'avais pas dites et qui ne fait pas de warning, C'est qu'on appelle srand qu'une seules fois durant l'exécution du programme.

            • Partager sur Facebook
            • Partager sur Twitter
            ...

            Somme de ligne dans un tableau 2D avec pointeur

            × 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