Définir une Matrice en C [Résolu]

Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
- - Dernière réponse : Ashretor
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
- 13 nov. 2009 à 15:29
Bonjour, je travaille sur DevC++, en C:
Je cherche à créer une matrice contenant et affichant:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

J'ai déjà créé le type de matrice, la seule chose qui me manque c'est comment définir les nombres ci-dessus dans ma matrice.
J'ai fait:
Matrice mat={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

(Matrice est mon type, comme int, char ou float)

Cette solution fonctionne-t-elle ? J'en ai pas l'impression ^^
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
3
Merci
Oui, ça fonctionne. Il ne te reste qu'à indiquer le type et les dimensions:
int mat[4][4] = 
 {
   {1,2,3,4},
   {5,6,7,8},
   {9,10,11,12},
   {13,14,15,16}
 };

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
1
Merci
Ceci fonctionne chez moi:
#include <stdio.h>

#define maxM 4
typedef float Matrice[maxM][maxM];

void Affichermat(Matrice val)
{
  int x;
  int y;
  for(x = 0; x < maxM; ++x)
  {
    for(y = 0; y < maxM; ++y)
      printf("%f ", val[x][y]);
    printf("\n");
  }
}

int main(void)
{
  Matrice mat =
    {
      {1,2,3,4},
      {5,6,7,8},
      {9,10,11,12},
      {13,14,15,16}
    };

  Affichermat(mat);
  return 0;
}
Commenter la réponse de cptpingu
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
0
Merci
A noter que ceci fonctionnerai:
int mat[][4] = 
 {
   {1,2,3,4},
   {5,6,7,8},
   {9,10,11,12},
   {13,14,15,16}
 };

Mais pas ceci:
int mat[][] = 
 {
   {1,2,3,4},
   {5,6,7,8},
   {9,10,11,12},
   {13,14,15,16}
 };
Commenter la réponse de cptpingu
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
Voila ce que j'ai déjà:

#define maxM 4
typedef float Matrice[maxM][maxM];

Matrice mat= {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

Et maintenant, je cherche une solution pour l'afficher.
Je pensais à quelque chose dans le style:

void Affichermat(Matrice val)
{
int x;
for(x =0;x<maxM;x++) printf("%d ", val[x]);
}

C'est ce que j'utilise pour afficher un tableau, et je ne vois pas comment modifier cette solution pour l'adapter à une matrice...
Commenter la réponse de Ashretor
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
0
Merci
Double boucle:
void Affichermat(Matrice val)
{
  int x;
  int y;
  for(x = 0; x < maxM; ++x)
  {
    for(y = 0; y < maxM; ++y)
      printf("%d ", val[x][y]);
    printf("\n");
  }
}
Commenter la réponse de cptpingu
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
J'ai testé mais cela m'affiche:
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

J'ai mis ma fonction au dessus du main, et dans le main j'ai:

int main(int argc, char *argv[])
{
Matrice mat={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

Affichermat(mat);

system("PAUSE");
return 0;
}
Commenter la réponse de Ashretor
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
ça marche, merci bien Cap'taine Pingu
Commenter la réponse de Ashretor
Messages postés
2
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
je fait le même exercice et j'étais bloqué également.
Donc merci bien pour ton aide !!!
Commenter la réponse de yoatho
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
0
Merci
Pensez à valider la réponse, pour permettre à quelqu'un qui recherche quelque chose de similaire de pouvoir se dire: "Ah ok, il y a une réponse validée, je suis sur de trouver une solution".
Commenter la réponse de cptpingu
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
C'est fait, merci du conseil.
Commenter la réponse de Ashretor
Messages postés
2
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
J'ai trouver pourquoi je n'avais que des "0" !!!
En fait au lieu de mettre :
for(y = 0; y < maxM; y++) printf("%f ", val[x][y]);
je mettais :
for(y = 0; y < maxM; y++) printf("%d ", val[x][y]);

Une erreur toute bête qui fait perdre énormément de temps!!!

Mais bon c'est finit !!!

Merci encore
Commenter la réponse de yoatho
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
0
Merci
Si tu compiles avec les bon flags, ce genre d'erreur t'es indiqué.
Par exemple moi en tapant:
gcc -W -Wall -Wextra -ansi -pedantic mat.c -o mat

J'ai:
mat.c: In function &#8216;Affichermat&#8217;:
mat.c:13: attention : format &#8216;%d&#8217; expects type &#8216;int&#8217;, but argument 2 has type &#8216;double&#8217;

PS: Compilateur gcc sous Linux, doit avoir un équivalent sous Windows
Commenter la réponse de cptpingu
Messages postés
6
Date d'inscription
vendredi 13 novembre 2009
Dernière intervention
13 novembre 2009
0
Merci
Mais avec DevC++, le logiciel a compilé le programme sans détecter d'erreur, puis a exécuté, je verrais dans la soirée si il y a moyen de détecter ce genre d'erreurs avec ce logiciel.
Merci pour ton aide.
Commenter la réponse de Ashretor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.