Accueil > Forum > > > > probleme d'allocation d'une matrice
probleme d'allocation d'une matrice
jeudi 30 décembre 2010 à 14:10:12 |
probleme d'allocation d'une matrice

emomar
|
salut à tous voila j'ai un probleme avec la fonction remplir voila le code si quelqu'un peut m'aider merci
code :
Code C/C++ : #include <stdio.h>
#include <stdlib.h>
int n,m;
void dimen()
{
printf("donner le nbre de ligne");
scanf("%d",n);
printf("donner le nbre de colonne");
scanf("%d",m);
}
void Affich(int **A)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d\t",A[i][j]);
printf("\n");
}
}
void remplir(int **T)
{
int *z;
int i,j;
printf("donner le nbre de ligne");
scanf("%d",&n);
printf("donner le nbre de colonne");
scanf("%d",&m);
z=(int*)malloc(n*m*sizeof(int)); /*allocation d'espace pour les elements de la matrice*/
T=(int**)malloc(n*sizeof(int*)); /*allocation d'espace pour le vecteur de pointeurs*/
/*remplissage du vecteur pointeur*/
for(i=0;i<n;i++)
{
T[i]=z+i*m;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("donner la valeur\n");
scanf("%d",&T[i][j]);
}
}
}
void Add(int **A,int **B)
{
int i,j;
printf("n = %d\n",n);/*juste pour verifier le contenu de n et m*/
printf("m = %d\n",m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
A[i][j]=A[i][j]+B[i][j];
}
}
Affich(A);
}
void main()
{
int **A,**B;
remplir(A);
Affich(A);/* ca plante la tant dis que si je mets affiche dans la fonction ca marche */
remplir(B);
Affich(B);
Add(A,B);
}
|
|
jeudi 30 décembre 2010 à 14:26:53 |
Re : probleme d'allocation d'une matrice

TychoBrahe
|
Salut,
C'est juste un soucis de portée des variables. Dans remplir() tu alloue de la mémoire à T... sauf que T c'est qu'une copie du pointeur A (qui pointe sur n'
importe quoi). Bref, tu n'alloue pas de mémoire pour A et forcément... ça plante lorsque tu veux l'afficher. Ce n'est donc pas une copie de A que tu veux passer mais un pointeur dessus.
Quelques autres erreurs :
- Dans ta fonction dimen(), et plus particulièrement dans tes scanf(), c'est l'adresse de tes variables globales qu'il faut passer.
- Si tes matrices sont de taille différentes, la fonction Add() plante lamentablement.
|
|
jeudi 30 décembre 2010 à 14:33:06 |
Re : probleme d'allocation d'une matrice

CptPingu
|
Ton allocation est étrange.
Si tu as une matrice, tu dois allouer la taille puis taille * largeur.
Ex tableau de 3 par 4:
Code C/C++ :
int** tab = NULL;
int i = 0;
tab = malloc(3 * sizeof(int*));
for (i = 0; i < 3; ++i)
tab[i] = malloc(4 * sizeof(int));
PS: Si tu fais du C, utilise un compilateur de C, pas de C++. (En C, il n'y aucune raison de caster un malloc...)
Évite aussi les variables globales.
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
jeudi 30 décembre 2010 à 14:33:18 |
Re : probleme d'allocation d'une matrice

emomar
|
tout d'abord merci pour m'avoir repondu aussi rapidement
je vais voir ca et pour la fonction add j'ai pas fini je sais qu'il faut verifier les dimensions encore merci
|
|
jeudi 30 décembre 2010 à 14:36:31 |
Re : probleme d'allocation d'une matrice

emomar
|
oui je fais du c
j'ai pas bien compris ton example tu peux m'expliqué merci
|
|
jeudi 30 décembre 2010 à 14:39:30 |
Re : probleme d'allocation d'une matrice

buno
|
Yop,
J'ajouterais que l'allocation en elle-même est un peu louche...
Généralement, on alloue un tableau 2D de la manière suivante:
Code C/C++ :
T=(int**)malloc(n*sizeof(int*));
for (int i=0; i<n; i++)
{
T[i] = (int*)malloc(m*sizeof(int));
for (int j=0; j<m; j++)
{
printf("donner la valeur de l'élément (%d,%d): ", i, j);
scanf("%d",&T[i][j]);
}
}
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
|
|
jeudi 30 décembre 2010 à 14:42:54 |
Re : probleme d'allocation d'une matrice

buno
|
*tain!! Double-grilled, là...ma connexion est à la masse...sorry
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
|
|
jeudi 30 décembre 2010 à 15:06:07 |
Re : probleme d'allocation d'une matrice

CptPingu
|
@buno: :D. En tous cas on donne vraiment les mêmes types de réponses ! :)
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
Cette discussion est classée dans : int, printf, void, for, donner
Répondre à ce message
Sujets en rapport avec ce message
Problem Affichage de mon Tableau [ par Orezza ]
salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le
affichage de caractere dans une grille [ par anzelus ]
bonjour, voila, je suis un debutant en c, je dois faire un programme qui affiche une grille de points sur console, apres afficher un caractere special
pb en c urgenttttttttttttttttt [ par natacha86 ]
bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as
help une fonction qui a besoin de vous [ par natacha86 ]
Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell
bitte hilfe!!!!!!!!! [ par sansan_2 ]
Bonjour!!!!!!!! le programme c est un FIFO (ringpufffer) et j aimerais avoir une amelioration. Apres execution du programme, faire une tabulation, un
Bug windows avec mon programme (nivo débutant) [ par MATHIS49 ]
Bonjour ! Etant un gros debutant en C je m'essai à faire un programme d'amortissement tout simple. Mais le probleme c'est que windows plante lorsque j
methode de simplexe en c [ par antttar ]
#include #include #include #include #include #include #include </
compilation mai au lancement "erreur la memoire ne peu pas pas etre read" [ par touny23 ]
je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre .j arrive a compiler sous dev-cpp mai lo
execution en DEV C++ [ par lucky31 ]
bonsoir, j'ai 1 probleme avec l'execution de mon prg ecrit en c et j'utilise le dev c++voila mon code source alors si vous pouvez m'aider merci d'avan
parcourir un labyrinthe [ par emmy75fr ]
<fo
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|