Bonjour,
je viens vers vous car j'ai besoin d'aide !

Voila : je fais un exercice qui doit calculer la somme des éléments en-dessous de la diagonale d'un tableau carré et afficher cette somme.
La consigne est d'utiliser des pointeurs pour effectuer cette tâche.
Pourriez-vous m'aider car je ne comprends pas pourquoi un de mes pointeurs (pt2) ne ce pointe pas au bon endroit.
Merci d'avance.

Voici mon code entier la partie qui pose souci c'est celle à partir de la boucle de calcul

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define NMAX 5
#define MMAX 5
 
int main()
{
   int  tab[NMAX][MMAX];
   int i,j=0,n,m;
   int *ptab,*pt1,*pt2;
   int somme=0;
 
   srand(time(NULL));
 
    do
    {
         printf("entre la dimension de ton tableau carre: \n");
         fflush(stdin);
         scanf("%d",&n);
    }while(n<0||n>20);
 
    m=n;
    ptab=tab[0];
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            *ptab=rand()%9;
              ptab++;
        }
    }
    m=n;
    ptab=tab[0];
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d",*ptab);
            ptab++;
        }
        printf("\n");
    }
//boucle de calcul
   m=n;
   ptab=tab[0];
 
 
   for(i=0;i<n;i++)//colonne
    {
 
        pt1=ptab+i;//parcour les colonnes
 
        pt2=ptab+(i+1)*n;//parcour les lignes fonctionne en partie
      // pt2=ptab+(i+1)*MMAX;//ne fonctionne pas me donne des valeurpointé erronées
 
        for(j=i+1;j<m;j++)//ligne
        {
            somme+=*pt2;
            pt1++;
            pt2=pt2+MMAX;
 
        }
    }
    printf("la somme est de %d",somme);
    return 0;
}