Acceder au elemen d'1e matrice en c
rimounatn
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
rimounatn Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
rimounatn Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Aidez moi SVP, je ss débutante en c .
bon mon probleme c'est que j'ai une matrice que j'ai declaré dans la fonction main() comme suit:
int ** matrice;
maintenant j'ai besoin de cette matrice dans une autre fonction (j'ai besoin de contenu selement , je ne veux pas appliqué des modifications sur cette matrice)
voici l'entete de ma fonction:
int gain ( int a, int b, int ** matrice, int taille_matrice);
en faite je veux faire ca dans cette fonction gain:
int g= matrice [a][b]+matrice[b][a];
return g;
mais le probleme que ca fonctionne pas et je sais dès le depart que ca ne fonction mais je ne sais pas pourquoi et j'ecrit koi poiur ke ca fonctionne ;((((((
SVP AIDEZ MOI C URGENT ET MERCI D'AVANCE
:((((
Aidez moi SVP, je ss débutante en c .
bon mon probleme c'est que j'ai une matrice que j'ai declaré dans la fonction main() comme suit:
int ** matrice;
maintenant j'ai besoin de cette matrice dans une autre fonction (j'ai besoin de contenu selement , je ne veux pas appliqué des modifications sur cette matrice)
voici l'entete de ma fonction:
int gain ( int a, int b, int ** matrice, int taille_matrice);
en faite je veux faire ca dans cette fonction gain:
int g= matrice [a][b]+matrice[b][a];
return g;
mais le probleme que ca fonctionne pas et je sais dès le depart que ca ne fonction mais je ne sais pas pourquoi et j'ecrit koi poiur ke ca fonctionne ;((((((
SVP AIDEZ MOI C URGENT ET MERCI D'AVANCE
:((((
A voir également:
- Acceder au elemen d'1e matrice en c
- Comment acceder au presse papier - Guide
- Comment accéder au trousseau icloud - Guide
- Accéder au presse papier windows - Guide
- Comment accéder à wetransfer gratuitement ? - Guide
- Acceder au bios - Guide
6 réponses
bon mon probleme c'est que j'ai une matrice que j'ai declaré dans la fonction main() comme suit:
int ** matrice;
non. Ceci est un pointeur vers un endroit où le programme est censé trouver une matrice.
Mais tu n'as jamais crée de matrice.
il faut que tu utilises malloc pour créer un espace mémoire dynamiquement.
Si tu ne connais pas ça, apprend la création dynamique avec malloc, ou alors tu peux faire comme ça aussi :
int ** matrice;
non. Ceci est un pointeur vers un endroit où le programme est censé trouver une matrice.
Mais tu n'as jamais crée de matrice.
il faut que tu utilises malloc pour créer un espace mémoire dynamiquement.
Si tu ne connais pas ça, apprend la création dynamique avec malloc, ou alors tu peux faire comme ça aussi :
int matrice[10][12]; // créer véritablement une matrice 10 fois 12.
salut , merci de me repondre
dans la fonction main()
g declarée une matrice :
** matrice
puis j'ai fais l'allocation dynamique avec malloc
et j'ai fais une boucle pour la remplire en utilisan matrice[i][j]
et maintenant mon probleeme c'est applé cette matrice et utilisé son contenu dans une fonction que j'ai appelé Gain
mais quand je veu accéder au ellement de la matrice avec matrice [i][j] dans la fonction je ne peu pas
:(((
dans la fonction main()
g declarée une matrice :
** matrice
puis j'ai fais l'allocation dynamique avec malloc
et j'ai fais une boucle pour la remplire en utilisan matrice[i][j]
et maintenant mon probleeme c'est applé cette matrice et utilisé son contenu dans une fonction que j'ai appelé Gain
mais quand je veu accéder au ellement de la matrice avec matrice [i][j] dans la fonction je ne peu pas
:(((
pardon, je crois qu'il y a en effet un souci au niveau des passage de tableaux à plusieurs dimension en C.
En effet , il faut toi même parcourir le tableau comme s'il était à une dimension. Voir cette astuce ici : https://c.developpez.com/faq/?page=Les-tableaux#TABLEAUX_tableau_parametre , c'est le deuxième exemple.
En effet , il faut toi même parcourir le tableau comme s'il était à une dimension. Voir cette astuce ici : https://c.developpez.com/faq/?page=Les-tableaux#TABLEAUX_tableau_parametre , c'est le deuxième exemple.
merciiii Pacorabanix,
au niveau de main ()
je peu affiché ma matrice nomallement
voici mon code compet peu etre ke tu pourra m'aidé :)
#include<stdio.h>
#include<stdlib.h>
int gain ( int a, int b, int ** matrice, int taille_matrice)
{
int g= matrice [a][b]+matrice[b][a]; //que dois je mettre ici pourque ca fonctionne??
return g;
}
int main()
{
int ** matrice;
int i,j, nb, resG;
nb=10;
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
// remplissage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
matrice[i][i]=i*j
}
}
//affichage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
printf("%d,%d", matrice[i][i]);
}
printf("\n");
}
// saisie
printf("donner 1premier entier");
scanf ("%d",&a);
printf("donner le 2eme entier");
scanf("%d",&b);
// appel fonction gain
resG= (a,b, matrice, nb); // mon probleme ici
printf("voici le resultat obtenu: %d\n": resG);
}
voici mon programme simplifié j'espere que vous pouvez m'aider c urgent SVP.
au niveau de main ()
je peu affiché ma matrice nomallement
voici mon code compet peu etre ke tu pourra m'aidé :)
#include<stdio.h>
#include<stdlib.h>
int gain ( int a, int b, int ** matrice, int taille_matrice)
{
int g= matrice [a][b]+matrice[b][a]; //que dois je mettre ici pourque ca fonctionne??
return g;
}
int main()
{
int ** matrice;
int i,j, nb, resG;
nb=10;
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
// remplissage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
matrice[i][i]=i*j
}
}
//affichage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
printf("%d,%d", matrice[i][i]);
}
printf("\n");
}
// saisie
printf("donner 1premier entier");
scanf ("%d",&a);
printf("donner le 2eme entier");
scanf("%d",&b);
// appel fonction gain
resG= (a,b, matrice, nb); // mon probleme ici
printf("voici le resultat obtenu: %d\n": resG);
}
voici mon programme simplifié j'espere que vous pouvez m'aider c urgent SVP.
merciiii Pacorabanix,
au niveau de main ()
je peu affiché ma matrice nomallement
voici mon code compet peu etre ke tu pourra m'aidé :)
#include<stdio.h>
#include<stdlib.h>
int gain ( int a, int b, int ** matrice, int taille_matrice)
{
int g= matrice [a][b]+matrice[b][a]; //que dois je mettre ici pourque ca fonctionne??
return g;
}
int main()
{
int ** matrice;
int i,j, nb, resG;
nb=10;
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
// remplissage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
matrice[i][i]=i*j
}
}
//affichage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
printf("%d,%d", matrice[i][i]);
}
printf("\n");
}
// saisie
printf("donner 1premier entier");
scanf ("%d",&a);
printf("donner le 2eme entier");
scanf("%d",&b);
// appel fonction gain
resG= (a,b, matrice, nb); // mon probleme ici
printf("voici le resultat obtenu: %d\n": resG);
}
voici mon programme simplifié j'espere que vous pouvez m'aider c urgent SVP.
au niveau de main ()
je peu affiché ma matrice nomallement
voici mon code compet peu etre ke tu pourra m'aidé :)
#include<stdio.h>
#include<stdlib.h>
int gain ( int a, int b, int ** matrice, int taille_matrice)
{
int g= matrice [a][b]+matrice[b][a]; //que dois je mettre ici pourque ca fonctionne??
return g;
}
int main()
{
int ** matrice;
int i,j, nb, resG;
nb=10;
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
// remplissage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
matrice[i][i]=i*j
}
}
//affichage de la matrice
for (i=0;i<nb;i++)
{
for (j=0;j<nb;j++)
{
printf("%d,%d", matrice[i][i]);
}
printf("\n");
}
// saisie
printf("donner 1premier entier");
scanf ("%d",&a);
printf("donner le 2eme entier");
scanf("%d",&b);
// appel fonction gain
resG= (a,b, matrice, nb); // mon probleme ici
printf("voici le resultat obtenu: %d\n": resG);
}
voici mon programme simplifié j'espere que vous pouvez m'aider c urgent SVP.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bon, alors dans la création :
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
il y a un souci je pense. Le premier tableau de base contient des int*, pas des int.
Ce serait plutot : matrice =(int**)malloc( nb* sizeof(int*));
comme ça à vue de nez. Si ça marchait avant sans problème, c'est que tu as beaucoup de chance !
ainsi, ta notation avec les crochets dans ta fonction gain que tu essayais de faire devrait marcher maintenant.
// Allocation dynamique :
matrice =(int**)malloc( nb* sizeof(int));
for(i=0; i<nb,i++)
{
matrice[i]=(int*)malloc (nb*sizeof(int));
}
il y a un souci je pense. Le premier tableau de base contient des int*, pas des int.
Ce serait plutot : matrice =(int**)malloc( nb* sizeof(int*));
comme ça à vue de nez. Si ça marchait avant sans problème, c'est que tu as beaucoup de chance !
ainsi, ta notation avec les crochets dans ta fonction gain que tu essayais de faire devrait marcher maintenant.