Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1187 connectés 

  FORUM HardWare.fr
  Programmation
  C

  passage de matrice en parametre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage de matrice en parametre

n°1505401
bigears
Posté le 20-01-2007 à 21:20:35  profilanswer
 

Salu,  
 
j'ai une matrice 1000x1000 et je souhaite la remplir dans l'appel d'une fonction :
 

Code :
  1. int main()
  2. {
  3.    int matrice[1200][1200];
  4.   fonction(matrice);
  5. }
  6. fonction(int ** mat)
  7. {
  8. //remplissage de la matrice
  9. }


 
Et bien sûr, gcc me dit qu'il y un conflit de type.
 
une idée de ce qu'il faut faire?
merci

mood
Publicité
Posté le 20-01-2007 à 21:20:35  profilanswer
 

n°1505413
Sve@r
Posté le 20-01-2007 à 21:53:54  profilanswer
 

bigears a écrit :

j'ai une matrice 1000x1000...

Code :
  1. ...
  2.    int matrice[1200][1200];
  3. ...




Déjà si t'étais cohérent entre la description de ton pb et ce que t'as écrit dans ton code...
 

bigears a écrit :

Et bien sûr


Donc tu sais déjà qu'il y aura une erreur...
 

bigears a écrit :

gcc me dit qu'il y un conflit de type.
une idée de ce qu'il faut faire?


Oui: aller ici http://forum.hardware.fr/hfr/Progr [...] 0049_1.htm et lire mon post du 9 janvier dernier...


Message édité par Sve@r le 20-01-2007 à 21:57:18

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1505426
bigears
Posté le 20-01-2007 à 22:06:13  profilanswer
 

nikel, c'est ce qu'il me fallait.
merci

n°1505437
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-01-2007 à 23:28:22  profilanswer
 

bigears a écrit :

j'ai une matrice 1000x1000 et je souhaite la remplir dans l'appel d'une fonction :

Code :
  1. int main()
  2. {
  3.    int matrice[1200][1200];




Alors c'est 1000 ou 1200 ? De toutes façon, c'est trop gros pour être une variable locale. Je recommande 'static'.

Code :
  1. static int matrice[1200][1200];


Citation :


Code :
  1. fonction(int ** mat)


Et bien sûr, gcc me dit qu'il y un conflit de type.


Ben oui...

 

http://mapage.noos.fr/emdel/notes.htm#param_tab

 

Il n'est pas inutile de relire son livre de C de temps en temps...


Message édité par Emmanuel Delahaye le 21-01-2007 à 12:12:29

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1505467
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-01-2007 à 02:23:54  profilanswer
 

bigears a écrit :

Salu,

 

j'ai une matrice 1000x1000 et je souhaite la remplir dans l'appel d'une fonction :

 
Code :
  1. int main()
  2. {
  3.    int matrice[1200][1200];
  4.   fonction(matrice);
  5. }




livrons nous à un petit calcul...
une matrice de 1200*1200 contient donc 1 440 000 éléments
sachant qu'un élément tient sur 4 octets (on va dire ça, même si ce n'est pas toujours vrai), ça nous fait une occupation mémoire de 5 760 000 octets, soit 5 760 000 / 1024 = 5 625 Ko, soit 5.493 Mo !!!
t'as pas peur des stack overflows toi [:pingouino]

 

edit: [:benou_grilled]

Message cité 2 fois
Message édité par Harkonnen le 21-01-2007 à 02:25:17
n°1505552
Sve@r
Posté le 21-01-2007 à 14:47:09  profilanswer
 

Harkonnen a écrit :

... = 5 625 Ko, soit 5.493 Mo !!!


Hé oui, seuls les vendeurs de disques durs croient (ou font semblant de croire) que 1Mo = 1000 ko alors que tout le monde (sauf eux) sait bien qu'il n'en est rien !!!
 


Oui, de 3h !!! On peut pas dire que tu sois un rapide du clavier toi [:ddr555]


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1505581
bigears
Posté le 21-01-2007 à 16:04:01  profilanswer
 

Harkonnen a écrit :


t'as pas peur des stack overflows toi [:pingouino]
 
edit: [:benou_grilled]


 
en fait le but du programme, c'est de comparer l'efficacité de différentes méthodes d'interpolation .
 
Donc en gros, si le compilo arrive a m'allouer les 1200x1200 int tant mieux, sinon je trouverai une autre solution.(A priori, ca passe )
Petite question subsidiaire :D : Est-il possible d'allouer un tableau 2D dans le tas, et d'y avoir un accès grace a l'operatreur[][] ?
 
(oui oui je sais j'ai quelques lacunes avec la memoire......^^)

n°1505592
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-01-2007 à 17:10:05  profilanswer
 

bigears a écrit :

Est-il possible d'allouer un tableau 2D dans le tas, et d'y avoir un accès grace a l'operatreur[][] ?
 
(oui oui je sais j'ai quelques lacunes avec la memoire......^^)


Oui.
 
http://mapage.noos.fr/emdel/notes.htm#tabdyn_2d
 
Mais comme je te l'ai dit, pour du quick'n dirty, static, ça passe. (pas en MS-DOS, bien sûr...)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  passage de matrice en parametre

 

Sujets relatifs
passer un parametre avec un include[Résolu] Matrice et fonctions
[résolu] passage d'excel 2003 à excel 2000Permuter une image au passage de la souris
Parametre dans URL, foire une fois sur 5...[Résolu ] [Cobol et JCL] Paramètre d'un programme
inverse matrice en ctable avec header fixe
un algo pour des éléments identiques d'une matriceProblème de passage des accents avec IE7 (utf8 et iso)
Plus de sujets relatifs à : passage de matrice en parametre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR