lecture matrice alloué dynamiquement [C] [resolu] - C - Programmation
Marsh Posté le 12-11-2009 à 13:07:32
Ta matrice n'étant pas allouée de manière contigüe, ton affichage ne peut pas fonctionner.
*(matr + i * taille + j) est faux;
Il faut écrire matr[i][j].
La signature de la fonction doit être void affichagematr(int taille, double ** matr) et tu dois écrire affichagematr(taille, matr);
Marsh Posté le 12-11-2009 à 14:48:19
Re, merci pour votre aide mais j'ai toujours une erreur;
j'ai corrigé comme conseillé mais il ne veut toujours pas afficher la matrice :
(bug avec la ligne: printf("%10.4f\n", matr[i][j]); avant tout marche)
meme si je la met dans le main (par exemple printf("%f ", matr[0][0]); ca ne marche )
J'ai inséré les bibliotheques: "stdio" et "stdlib";
Je n'ai aucune erreur a la compilation;
j'utilise codeblocks;
lors du bug, j'ai le message vista classique: "tp3.exe a cessé de fonctionner ..."
merci d'avance!
code corrigé avec les bibliothques
Code :
|
Marsh Posté le 12-11-2009 à 16:46:22
Oui, je viens de tester chez moi, il faut passer l'adresse de matr à int lecturematr(char * nom, double ** matr) pour que les modifs sur matr soient effectives dans le main.
La signature de lecturematr est int lecturematr(char * nom, double *** matr)
Aprrès c'est un joli exercice sur les pointeurs !
Marsh Posté le 12-11-2009 à 17:31:16
<hs> sauf que paye ta méthode d'allocation moisie des matrix 2D </hs>
Marsh Posté le 12-11-2009 à 21:01:15
d'accord avec toi, je trouve ca pourri mais mes profs me laissent pas le choix
sinon j'ai bien fait comme tu as dis
int lecture(..., *** matr)
puis appel avec: lecturematr(nomfic3, &matr) mais ca bug encore
"euh...hmm.. vous voyez?"
desolé
si quelqu'un voie ou est l'erreur (a part moi faisant du C )
merci d'avance
lecture matr modifié:
Code :
|
Marsh Posté le 12-11-2009 à 21:19:24
Je dirais là, les [] ont priorité sur * :
Code :
|
Marsh Posté le 12-11-2009 à 21:24:30
J'ai modifié les deux lignes comme tu l'as dit mais ca marche toujours pas (j'ai même réussi a faire bugger codeblocks)
(*adrmatr)[cpt] = calloc ( taille, sizeof(double));
...
printf("%f ", (*adrmatr)[cpt][i]);
snif!
merci pour vos aides, ca avance!
Marsh Posté le 12-11-2009 à 22:15:36
On t'a dit que les [] ont priorité sur *, il faut corriger partout.
Marsh Posté le 13-11-2009 à 13:50:23
je l'ai fait partout
mais c'est bon normalement, j'ai fait tout le reste de mon tp, j'ai plus que c eprobleme la et j'ai cours dans 1h, je verrais avec le prof et posterais la code final
merci pour vos aides, j'ai réappris pas mal de chose sur les pointeurs!
Marsh Posté le 13-11-2009 à 20:10:35
ben en fait ca marche sur unix!
donc le code est le meme avec les parentheses
(par contre: ca marche pas sur codeblocks, bizarre)
Marsh Posté le 12-11-2009 à 12:35:45
Salut à tous!
j'arrive pas lire à lire ma matrice.
Résumé:
trois fonctions:
lecturematr => lit la matrice depuis un fichier texte de la forme et retourne la taille
3
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
affichagematr => affiche la matrice (celle qui marche pas)
et le main
ps: il y a des trucs inutles a l'interieur, c'est parce que seul une partie du code marche pas
mon compilateur me fait la gueule et m'aime pas (meme si la plus grande source d'erreur en informatique se situe entre la chaise et le clavier )
voici le code:
merci d'avance
Message édité par karlakir le 13-11-2009 à 20:10:52
---------------
Si vous avez rien à faire, cliquez ici: