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

  FORUM HardWare.fr
  Programmation
  C

  probléme : passage de l'adresse d'une matrice

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probléme : passage de l'adresse d'une matrice

n°1356053
big_dadi_f​at
Posté le 28-04-2006 à 15:46:25  profilanswer
 

salut
 
j'ai un probléme avec une partie d'un exercice (dans le passage de l'adresse ... etc) , et je ne vois pas comment je peut faire , alors si quelqu'un peut m'aider :
 
Il faut faire une fonction qui construis une matrice à partire d'un polynôme ,
donc je dois saisir les valeur (les coeficiens) dans une matrice .
 
voici le code que j'ai fait :
 

Code :
  1. #include<stdio.h>
  2. void constructeur( int *a )            /*a c'est le nom de la matrice*/
  3. {
  4. int i,j,maxi,maxj;                         /*maxi et maxj :  les plus grand exposant de X et Y (dans le polynôme)*/
  5. printf("donnez le plus grand exposant de X :  " );
  6. scanf("%d",&maxi);
  7. printf("donnez le plus grand exposant de Y :  " );
  8. scanf("%d",&maxj);
  9. for(i=0 ; i<=maxi ; i++)
  10. for(j=0 ; j<=maxj ; j++)
  11. {
  12.   printf(" la coeficien du monome  ( x^%d * y^%d )   : " , i , j );
  13.   scanf(" %d " , &a[i][j] );      /*c'est la qu'il y a un probléme*/
  14. }
  15. }
  16. main()
  17. {
  18. int t1[30][30];
  19. constructeur( (int*)t1 );   /*on utilise l'opérateur de conversion forcée ("cast" ) */
  20. }

 
 
 
merci
 
 

mood
Publicité
Posté le 28-04-2006 à 15:46:25  profilanswer
 

n°1356062
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 15:56:02  profilanswer
 

renseigne toi sur l'utilisation des pointeurs


---------------
Töp of the plöp
n°1356079
big_dadi_f​at
Posté le 28-04-2006 à 16:04:42  profilanswer
 

_darkalt3_ a écrit :

renseigne toi sur l'utilisation des pointeurs


 
 
mais c'est que le problaime n'est que deans cette ligne

Code :
  1. scanf(" %d " , &a[i][j] );      /*c'est la qu'il y a un probléme*/


 
je ne suis renseigner : et j'est trouver qu'il faut utiliser la matrice comme un vecteur de dimention (m*n)  .
ca s'est bien  :)  
 
mais le prob , est que je dois absolument l'utiliser sous forme de matrice , pour faire ensuite dans l'exercice l'adition de deux poly (avec 2 variable x,y) , et la multiplication ...
 
 :(  :(

n°1356088
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 16:06:43  profilanswer
 

- corrige tes fautes de français, tu fais mal aux yeux.
- quel est le problème ? plantage ? compilation impossible ? ...
- renseigne toi sur l'utilisation des pointeurs


---------------
Töp of the plöp
n°1356093
big_dadi_f​at
Posté le 28-04-2006 à 16:11:15  profilanswer
 

_darkalt3_ a écrit :

- corrige tes fautes de français, tu fais mal aux yeux.
- quel est le problème ? plantage ? compilation impossible ? ...
- renseigne toi sur l'utilisation des pointeurs


 
 
un liens pour se renseigner sur ce truc ?  svp

n°1356098
tabb
Posté le 28-04-2006 à 16:14:02  profilanswer
 
n°1356102
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 16:16:30  profilanswer
 

big_dadi_fat a écrit :

un liens pour se renseigner sur ce truc ?  svp


 
 [:ark]


---------------
Töp of the plöp
n°1356103
big_dadi_f​at
Posté le 28-04-2006 à 16:17:10  profilanswer
 


 
 
 :kaola:  :kaola:  :kaola:  
 
 

n°1356304
joneal
Posté le 28-04-2006 à 22:50:11  profilanswer
 

big_dadi_fat,
 
je doutes que le cast de int [][] en int * est propre
si tu tiens absolumment a utiliser 2 dim pour ta matrice alors
 
void constructeur( int a[][30] )            /*a c'est le nom de la matrice*/
{
 int i,j,maxi,maxj;                         /*maxi et maxj :  les plus grand exposant de X et Y (dans le polynôme)*/
 
 printf("donnez le plus grand exposant de X :  " );
 scanf("%d",&maxi);
 
 printf("donnez le plus grand exposant de Y :  " );
 scanf("%d",&maxj);
 
 for(i=0 ; i<=maxi ; i++)
  for(j=0 ; j<=maxj ; j++)
  {
   printf(" la coeficien du monome  ( x^%d * y^%d )   : " , i , j );
   scanf(" %d " , &a[i][j] );      /*c'est la qu'il y a un probléme*/
  }
 
}
 
int main()
{
 int t1[30][30];
 constructeur( t1 );  
     
 return 0;
}

n°1356608
brojnev
Posté le 29-04-2006 à 20:36:04  profilanswer
 

big_dadi_fat a écrit :

salut
 
J'ai un problème avec une partie d'un exercice (dans le passage de l'adresse ... etc) , et je ne vois pas comment je peux faire, alors si quelqu'un peut m'aider :
 
Il faut faire une fonction qui construis une matrice à partir d'un polynôme ,
donc je dois saisir les valeur (les coeficients) dans une matrice .
 
merci


 
1 : il faut absolument que tu te rachètes une orthographe et une grammaire ou une méchante dose de concentration.
 
2 : je te conseille vivement d'écrire du code structuré et donc, réutilisable. Parce que il y a au moins dix façons différentes de résoudre ton problème mais il te faut une solution plus ou moins élégante.
 
Personellement, le premier truc que j'aurais fait  serait la création d'un type matrice :

Code :
  1. typedef struct _matrix
  2. {
  3.    int cols;
  4.    int rows;
  5.    int * tab; // on utilise 1 seule dimension mais pour ranger cols * rows entiers.
  6. } matrix;


 
comme tu remarques, on est pas obligé d'avoir un tableau à double dimensions, pourquoi ?
Dans un tableau à 2 dimensions, j'ai cols*rows éléments, avec un tableau à une dimension de cols*rows indexs, il est possible de ranger tous les éléments de la matrice à 2 dimensions et d'atteindre l'élément [i][j] (avec i la colonne et j la ligne) par la notation tab[j*cols + i]
Exemple dans la matrice M de 3 colonnes par 4 lignes :

Code :
  1. 1  2  3
  2. 4  5  6
  3. 7  8  9
  4. 10 11 12


Elle est représenté par le tableau T :

Code :
  1. [1 2 3 4 5 6 7 8 9 10 11 12]


et l'élement à M[2][1] (=6 parce que les index commencent à 0) est bien égale à T[1*3 + 2] soit T[5] (tjs avec les index commençant à 0, c'est à dire que T[0]=1)
Le gain est qu'on utilise un tableau simple, l'inconvénient est que l'accès à une case de la matrice nécessite forcément un calcul de l'index dans le tableau (1 multiplication + 1 addition).
 
Nous savons qu'il est possible de représenter une matrice à 2 dimensions dans un tableau à simple dimensions, maintenant, on a juste besoin de 4 fonctions :
1 : allocation de structure.
2 : désallocation de structure
3 : assignation de valeur dans la matrice
4 : récupération de valeur.
 
allocation de structure :  prend en paramètre le nombre de colonnes, de lignes et renvoit un pointeur vers une structure matrix allouée en mémoire (c'est un exemple, on peut faire autrement):

Code :
  1. matrix * alloc_matrix( int cols, int rows )
  2. {
  3.    matrix * m = (matrix*) calloc( 1, sizeof( matrix ) );
  4.    m->tab = (int*) calloc( cols*rows, sizeof( int ) );
  5.    return m;
  6. }


la désallocation prend juste un pointeur vers une matrice :

Code :
  1. void free_matrix( matrix *m )
  2. {
  3.    free( m->tab );
  4.    free( m );
  5. }


 
maintenant, verrais-tu comment écrire :

Code :
  1. set_value( matrix *m, int x, int y, int value)

??
et  

Code :
  1. get_value( matrix *m, int x, int y)

??
 
et surtout, vois-tu l'intérêt de faire ainsi ???

Message cité 1 fois
Message édité par brojnev le 30-04-2006 à 00:32:46
mood
Publicité
Posté le 29-04-2006 à 20:36:04  profilanswer
 

n°1356618
Sve@r
Posté le 29-04-2006 à 21:02:30  profilanswer
 

brojnev a écrit :

comme tu remarques, on est pas obligé d'avoir un tableau à double dimensions, pourquoi ?
Dans un tableau à 2 dimensions, j'ai cols*rows éléments, avec un tableau à une dimension de cols*rows indexs, il est possible de ranger tous les éléments de la matrice à 2 dimensions et d'atteindre l'élément [i][j] (avec i la colonne et j la ligne) par la notation tab[j*cols + i]
Exemple dans la matrice M de 3 colonnes par 4 lignes :

Code :
  1. 1  2  3
  2. 4  5  6
  3. 7  8  9
  4. 10 11 12


Elle est représenté par le tableau T :

Code :
  1. [1 2 3 4 5 6 7 8 9 10 11 12]


et l'élement à M[2][1] (=6 parce que les index commencent à 0) est bien égale à T[1*3 + 2] soit T[5] (tjs avec les index commençant à 0, c'est à dire que T[0]=1)
Le gain est qu'on utilise un tableau simple, l'inconvénient est que l'accès à une case de la matrice nécessite forcément un calcul de l'index dans le tableau (1 multiplication + 1 addition).


 
Remarquablement bien expliqué. Seul détail à rectifier: que tu travailles en une dimension ou en plusieurs, le calcul "j * col + i" se fera de toute les manières car, en mémoire, il n'y a toujours qu'une seule dimension. Soit c'est toi qui écrit le calcul, soit c'est l'assembleur...
 

brojnev a écrit :

allocation de structure :  prend en paramètre le nombre de colonnes, de lignes et renvoit un pointeur vers une structure matrix allouée en mémoire (c'est un exemple, on peut faire autrement):

Code :
  1. matrix * alloc_matrix( int cols, int rows )
  2. {
  3.    matrix * m = (matrix*) calloc( 1, sizeof( matrix ) );
  4.    m->tab = (int*) calloc( cols*rows, sizeof( int ) );
  5.    return m;
  6. }


la désallocation prend juste un pointeur vers une matrice :

Code :
  1. void free_matrix( matrix *m )
  2. {
  3.    free( m->tab );
  4.    free( m );
  5. }




 
Là, je suis moins d'accord. Tu considères d'office que le programmeur n'utilisera que des pointeurs et tu lui interdis d'utiliser un "matrix m"
 
Moi, ma fonction "alloc" et "free" ne s'occuperaient que de l'allocation et libération de "tab" et je laisserais au programmeur le choix d'utiliser une variable de type "matrix m" en appelant "alloc_matrix(&m)" ou un pointeur "matrix *pt" et en appelant "alloc_matrix(pt)" (en laissant au programmeur le soin d'allouer "pt" )...

Message cité 1 fois
Message édité par Sve@r le 29-04-2006 à 21:11:35

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1356653
brojnev
Posté le 30-04-2006 à 00:27:06  profilanswer
 

Sve@r a écrit :

Remarquablement bien expliqué. Seul détail à rectifier: que tu travailles en une dimension ou en plusieurs, le calcul "j * col + i" se fera de toute les manières car, en mémoire, il n'y a toujours qu'une seule dimension. Soit c'est toi qui écrit le calcul, soit c'est l'assembleur...


tout à fait exact.
 

Sve@r a écrit :


Là, je suis moins d'accord. Tu considères d'office que le programmeur n'utilisera que des pointeurs et tu lui interdis d'utiliser un "matrix m"
 
Moi, ma fonction "alloc" et "free" ne s'occuperaient que de l'allocation et libération de "tab" et je laisserais au programmeur le choix d'utiliser une variable de type "matrix m" en appelant "alloc_matrix(&m)" ou un pointeur "matrix *pt" et en appelant "alloc_matrix(pt)" (en laissant au programmeur le soin d'allouer "pt" )...


 
Complètement d'accord, c'est pour cette raison que j'ai spécifié que l'on peut faire autrement  :)  
Mais, cependant, je n'aime pas trop l'idée de laisser le soin au programmeur. Évidemment, c'est un choix qui dépend principalement de ce que l'on veut faire. Mon idée de base était surtout de présenter comment fonctionnaliser et aussi, programmer de façon orientée objet en C : Un type de donnée (matrix) + des fonctions pour y accéder.
Dans cette optique, il faut aussi rajouter les fonctions :

Code :
  1. int get_nb_columns ( matrix * m );
  2. int get_nb_rows ( matrix * m);


 
Le problème avec les pointeurs est principalement la vérification de leur validité à effectuer à chaque fois qu'on les utilise, mais, dans notre cas, les vérifications se font dans les 4 fonctions d'accès et la fonction de désallocation.
 
big_dadi_f at !!! c'est pour toi qu'on se prend la tête là ! un feedback serait fort apprécié  :jap:  Tu comprends ce qu'on raconte là où tu fais ça à l'arrache sans structures de données ????


Message édité par brojnev le 30-04-2006 à 00:35:05
n°1356685
big_dadi_f​at
Posté le 30-04-2006 à 10:16:31  profilanswer
 

Citation :


big_dadi_f at !!! c'est pour toi qu'on se prend la tête là ! un feedback serait fort apprécié  :jap:  Tu comprends ce qu'on raconte là où tu fais ça à l'arrache sans structures de donnée


 
merci les gas , mais je ne comprend pas trop , ce vous raconter (je sis débutant en C)
 
par contre j'ai fais le code suivant:
 

Code :
  1. #include<stdio.h>
  2. #define n 7
  3. void constructeur( int *a , int pl , int pc )
  4. {
  5. int i,j;
  6. for(i=0;i<=pl;i++)
  7. for(j=0;j<=pc;j++)
  8. {
  9.   printf("le coeficien du monome  x^%d y^%d : ",i,j);
  10.   scanf("%d",a+(n*i+j));
  11. }
  12. }
  13. void addition( int *aa , int *bb , int *cc , int p , int pp )
  14. {
  15. int i,j;
  16. for(i=0;i<=p;i++)
  17. for(j=0;j<=pp;j++)
  18.   *(cc+(n*i+j)) = *(aa+(n*i+j)) + *(bb+(n*i+j));
  19. }
  20. void soustraction( int *dd , int *rr , int *ss , int h , int hh )
  21. {
  22. int i,j;
  23. for(i=0;i<=h;i++)
  24. for(j=0;j<=hh;j++)
  25.   *(ss+(n*i+j)) = *(dd+(n*i+j)) - *(rr+(n*i+j));
  26. }
  27. main(void)
  28. {
  29. int t1[n][n],t2[n][n],addi[n][n],soust[n][n],l1,c1,l2,c2,l,c,i,j;
  30. for(i=0;i<n;i++)
  31. for(j=0;j<n;j++)
  32.   t1[j] = t2[i][j] = 0;
  33. printf("le 1er poly:\n" );
  34. printf("donnez le plus grand exposant de X :  " );
  35. scanf("%d",&l1);
  36. printf("donnez le plus grand exposant de Y :  " );
  37. scanf("%d",&c1);
  38.   constructeur( (int*)t1 , l1 , c1 );
  39. printf("\n\nla matrice corespendante au 1er poly est:\n" );
  40. for(i=0;i<=l1;i++)
  41. {
  42.   for(j=0;j<=c1;j++)
  43. printf("%d\t",t1[i][j]);
  44. printf("\n" );
  45. }
  46. printf("\n\n\nle 2eme poly:\n" );
  47. printf("donnez le plus grand exposant de X :  " );
  48. scanf("%d",&l2);
  49. printf("donnez le plus grand exposant de Y :  " );
  50. scanf("%d",&c2);
  51.   constructeur( (int*)t2 , l2 , c2 );
  52. printf("\n\nla matrice corespendante au 1er poly est:\n" );
  53. for(i=0;i<=l2;i++)
  54. {
  55.   for(j=0;j<=c2;j++)
  56. printf("%d\t",t2[i][j]);
  57. printf("\n" );
  58. }
  59. if ( l1 > l2 )     l = l1;
  60. else              l = l2 ;
  61. if ( c1 > c2 )     c = c1;
  62. else              c = c2 ;
  63. printf("\n\nla mat addition:\n" );
  64.   addition( (int*)t1 , (int*)t2 , (int*)addi , l , c );
  65. for(i=0;i<=l;i++)
  66. {
  67.   for(j=0;j<=c;j++)
  68. printf("%d\t",addi[i][j]);
  69. printf("\n" );
  70. }
  71. printf("\n\nla mat soustraction:\n" );
  72.   soustraction( (int*)t1 , (int*)t2 , (int*)soust , l , c );
  73. for(i=0;i<=l;i++)
  74. {
  75.   for(j=0;j<=c;j++)
  76. printf("%d\t",soust[i][j]);
  77. printf("\n" );
  78. }
  79. }


 
ditent moi comment je peux l'améliorer  :)  
 
merci
 
[i]notte: je ve aussi afficher le poly.
 
 

n°1356696
Sve@r
Posté le 30-04-2006 à 11:10:45  profilanswer
 

big_dadi_fat a écrit :

Citation :


big_dadi_f at !!! c'est pour toi qu'on se prend la tête là ! un feedback serait fort apprécié  :jap:  Tu comprends ce qu'on raconte là où tu fais ça à l'arrache sans structures de donnée


 
merci les gas , mais je ne comprend pas trop , ce vous raconter (je sis débutant en C)
 
par contre j'ai fais le code suivant:
 

Code :
  1. #include<stdio.h>
  2. #define n 7
  3. void constructeur( int *a , int pl , int pc )
  4. {
  5. int i,j;
  6. for(i=0;i<=pl;i++)
  7. for(j=0;j<=pc;j++)
  8. {
  9.   printf("le coeficien du monome  x^%d y^%d : ",i,j);
  10.   scanf("%d",a+(n*i+j));
  11. }
  12. }
  13. void addition( int *aa , int *bb , int *cc , int p , int pp )
  14. {
  15. int i,j;
  16. for(i=0;i<=p;i++)
  17. for(j=0;j<=pp;j++)
  18.   *(cc+(n*i+j)) = *(aa+(n*i+j)) + *(bb+(n*i+j));
  19. }
  20. void soustraction( int *dd , int *rr , int *ss , int h , int hh )
  21. {
  22. int i,j;
  23. for(i=0;i<=h;i++)
  24. for(j=0;j<=hh;j++)
  25.   *(ss+(n*i+j)) = *(dd+(n*i+j)) - *(rr+(n*i+j));
  26. }
  27. main(void)
  28. {
  29. int t1[n][n],t2[n][n],addi[n][n],soust[n][n],l1,c1,l2,c2,l,c,i,j;
  30. for(i=0;i<n;i++)
  31. for(j=0;j<n;j++)
  32.   t1[j] = t2[i][j] = 0;
  33. printf("le 1er poly:\n" );
  34. printf("donnez le plus grand exposant de X :  " );
  35. scanf("%d",&l1);
  36. printf("donnez le plus grand exposant de Y :  " );
  37. scanf("%d",&c1);
  38.   constructeur( (int*)t1 , l1 , c1 );
  39. printf("\n\nla matrice corespendante au 1er poly est:\n" );
  40. for(i=0;i<=l1;i++)
  41. {
  42.   for(j=0;j<=c1;j++)
  43. printf("%d\t",t1[i][j]);
  44. printf("\n" );
  45. }
  46. printf("\n\n\nle 2eme poly:\n" );
  47. printf("donnez le plus grand exposant de X :  " );
  48. scanf("%d",&l2);
  49. printf("donnez le plus grand exposant de Y :  " );
  50. scanf("%d",&c2);
  51.   constructeur( (int*)t2 , l2 , c2 );
  52. printf("\n\nla matrice corespendante au 1er poly est:\n" );
  53. for(i=0;i<=l2;i++)
  54. {
  55.   for(j=0;j<=c2;j++)
  56. printf("%d\t",t2[i][j]);
  57. printf("\n" );
  58. }
  59. if ( l1 > l2 )     l = l1;
  60. else              l = l2 ;
  61. if ( c1 > c2 )     c = c1;
  62. else              c = c2 ;
  63. printf("\n\nla mat addition:\n" );
  64.   addition( (int*)t1 , (int*)t2 , (int*)addi , l , c );
  65. for(i=0;i<=l;i++)
  66. {
  67.   for(j=0;j<=c;j++)
  68. printf("%d\t",addi[i][j]);
  69. printf("\n" );
  70. }
  71. printf("\n\nla mat soustraction:\n" );
  72.   soustraction( (int*)t1 , (int*)t2 , (int*)soust , l , c );
  73. for(i=0;i<=l;i++)
  74. {
  75.   for(j=0;j<=c;j++)
  76. printf("%d\t",soust[i][j]);
  77. printf("\n" );
  78. }
  79. }


 
ditent moi comment je peux l'améliorer  :)  
 
merci
 
[i]notte: je ve aussi afficher le poly.


 
Hum... je suis horrifié de tout ça et surtout que cela fonctionne...
 
Bon, les gros pb  
1) scanf("%d",a+(n*i+j));        => là, je comprends rien à ce que tu veux faire. Probablement que le compilo non plus...
2) t1 est un tableau en 2 dimensions. Quand tu passes "t1" à "constructeur", tu lui passes un "int[n][n]" (on pourrait être tenté d'écrire "int **" mais lorsque tu ferais "t[i][j]", le compilo ne connaissant pas la taille d'une ligne ne pourra pas calculer "i * nbcol + j" donc non) mais en aucun cas un "int *" => Evidemment, tu le castes en (int*) pour éviter les warning mais vaut mieux, pour éviter les warning, supprimer la cause du warning que masquer cette cause => soit tu bosses en 1 dimension du début à la fin, soit tu bosses en 2D mais tu mélanges pas les 2 façons de faire...
 
Pour améliorer:
- tu fais 2 fois une saisie "plus grand exposant" etc. Autant programmer une fonction qui fasse ça et tu appelles cette fonction pour t1 et pour t2 (une surcouche à "constructeur" en fait)
- c'est dommage qu'à chaque fois tu sois obligé de passer à tes fonctions ton tableau, l et c (3 paramètre par matrice). Si, comme l'a dit brojnev tu créais une structure "s_matrix" contenant  

  • ton tableau
  • l
  • c

Il te suffirait de passer juste l'adresse de cette structure à tes fonctions (un seul paramètre par matrice) qui auraient automatiquement accès à l'ensemble des éléments de la matrice et dans le main() ça t'éviterait 6 variables "t1, t2, l1, l2, c1, c2" là où on pourrait n'en mettre que 2
- "main" est de type "int"
 
Voilà en gros. Ensuite, des commentaires expliquant ta façon de voir l'algo seraient appréciés...


Message édité par Sve@r le 30-04-2006 à 11:56:36

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1356707
skelter
Posté le 30-04-2006 à 12:00:54  profilanswer
 

Sve@r > je crois que tu n'as pas compris ce qu'est un tableau 2d, un 'int **' peux contenir l'adresse d'un 'int *' ou l'adresse d'un tableau 'int *', mais certainement pas l'adresse d'un tableau 2d
 
l'adresse d'un tableau 'int [n][n]' est typée 'int (*)[n]'
 
le prototype correcte pour constructeur est
 
void constructeur( int (*a)[n] , int pl , int pc )
 
ou (strictement equivalent)
 
void constructeur( int a[][n] , int pl , int pc )

n°1356708
Sve@r
Posté le 30-04-2006 à 12:06:22  profilanswer
 

skelter a écrit :

Sve@r > je crois que tu n'as pas compris ce qu'est un tableau 2d, un 'int **' peux contenir l'adresse d'un 'int *' ou l'adresse d'un tableau 'int *', mais certainement pas l'adresse d'un tableau 2d


 
J'ai dit "on pourrait" => c'est un conditionnel sous entendant "si on ne savait pas ce qu'est un tableau 2d on pourrait..."
 

skelter a écrit :

ou (strictement equivalent)
void constructeur( int a[][n] , int pl , int pc )


 
Oui, c'est ce que j'ai écrit (sauf que j'y ai mis le nb d'éléments de la première dimension puisqu'il est connu...)
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1356847
big_dadi_f​at
Posté le 30-04-2006 à 19:20:38  profilanswer
 

mais je ne comprend pas bien ce que
 
void constructeur( int a[][30] )
 
veut dire !
 
 
et méme si je l'utilise comme ca:

Code :
  1. void constructeur( int a[][30] )            /*a c'est le nom de la matrice*/
  2. {
  3. int i,j,maxi,maxj;                         /*maxi et maxj :  les plus grand exposant de X et Y (dans le polynôme)*/
  4. printf("donnez le plus grand exposant de X :  " );
  5. scanf("%d",&maxi);
  6. printf("donnez le plus grand exposant de Y :  " );
  7. scanf("%d",&maxj);
  8. for(i=0 ; i<=maxi ; i++)
  9.   for(j=0 ; j<=maxj ; j++)
  10.   {
  11.    printf(" la coeficien du monome  ( x^%d * y^%d )   : " , i , j );
  12.    scanf(" %d " , &a[i][j] );   
  13.   }
  14. }
  15. int main()
  16. {
  17. int t1[30][30];
  18. constructeur( t1 ); 
  19.    
  20. return 0;
  21. }


 
ca me permetra peut etre de diminuer les argument de constructeur ,  
mais les autre fonction (addition et soustraction) reste -aubligatoirement- avec tout ses argument ?
 
et pour l'utilisation des structure je ne vois pas comment je peut faire ! ( une peutite proposition de votre part pourait me permetre de commencer )
merci

n°1356930
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-04-2006 à 23:51:58  profilanswer
 

marre des fautes de français, malgré le fait que je te l'ai signalé plusieurs fois, tu t'en fous.


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
  FORUM HardWare.fr
  Programmation
  C

  probléme : passage de l'adresse d'une matrice

 

Sujets relatifs
Problème de compilation de JonasProblème de gestion des droits d'accès sous Access 2003
probleme Idframe et texteareacompter le nombre de passage dans un if
[CSS débutant] Problème sur un boutonGros problème de formulaire
[VBS] Problème de double quote (")probleme avec la commande revoke
problème de recherche sur une tablevariables externes : passage en membres ou argument de methodes ?
Plus de sujets relatifs à : probléme : passage de l'adresse d'une matrice


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