Besoin d'aide pour mon petit prog

fairmond88 Messages postés 1 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 3 février 2010 - 3 févr. 2010 à 21:54
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 12 févr. 2010 à 16:12
bjr j'ai besoin d'une aide pour ce prog;
le but est de faire la somme des elements du tableau t à 2 dimenssions
en utilisant le formalisme pointeur;
quand je compile ce prog les erreurs suivants s'affichent:

warning: assignment from incompatible pointer type
som_t2dim.
warning: format ‘%d’ expects type ‘int *’, but argument 2 has type ‘int’

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

int t[3][4];
int i,j;
int som, *s;

int som_t2dim(int *s);

int main ()
{
s=t;
for (i=0;i<3;i++)
for(j=0;j<4;j++)
{
printf("entrer vos nombres\n");
scanf("%d",*(s+i));
}
som += *(s+i);
printf("la somme des elements du tableau est:%d \n", som);

return 0;

}

merci

1 réponse

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
12 févr. 2010 à 16:12
Salut,
En plus des erreurs du programme, celui-ci n'a aucun intérêt... Tu boucles pour demander de rentrer un nombre. Et à la fin, tu ajoutes à 'som' (qui a déjà une valeur inonnue, puisque non-initialisée) un pointeur sur une case mémoire inconnue... Et à quoi sert ton tableau dans l'histoire ? De plus, tu déclares une fonction non-utilisée, des variables globales, etc... c'est franchement moche.

Commences par faire une boucle pour stocker les valeurs saisies par l'utilisateur dans le tableau. Tout ça dans le main
int som_t2dim(int **s);
int main() {
    int i,j,t[3][4];
    for (i=0;i < 3;i++) {
        for(j=0;j < 4;j++) {
            puts("Saisir un nombres");
            scanf("%d",&(t[i][j]));
        }
    }
    printf("La somme des elements du tableau est: %d \n",som_t2dim((int**)t));
}


Ensuite, tu fais une 2ème boucle, dans ta fonction à part, pour faire ta somme.
int som_t2dim(int **s) {
    int i,j,som=0;
    for (i=0;i < 3;i++) {
        for(j=0;j < 4;j++) {
            som+=s[i][j];
        }
    }
    return som;
}

Je ne sais pas si ça fonctionne. Mais essaye tout de même de comprendre.

Cordialement, uaip.
0
Rejoignez-nous