|
|
|
|
Bonjour tout le monde,
j'utilise le c et non le c++.
Mes matrices sont des matrices carrés allant de 2 a 10.
j'arrive à bien rentrer les nombres dedant avec :
void entrermatcarre(int *pmat,int p) {
/*Matrice*/
int i,j;
/*j : colonne*/
/*i : ligne*/
printf("\n\nEntrez les composantes de votre matrice : ");
for(j=0;j<p;j++)
{
for (i=0;i<p;i++)
{
printf("\n\nSaisissez la composante (nombre entier) %d de la colonne X %d : ",(i+1),(j+1));
scanf("%d",pmat+i);
printf("\nVotre composante %d de la colonne %d : %d",(i+1),(j+1),*(pmat+i));
}
}
return;
}
mais j'ai un gros problème pour afficher tout simplement les matrices en entier , voici mes essais :
void ecrirematcarre(int *mat,int p)
{
if (p==2)
{
/*affichage d'une matrice carre d'ordre 2*/
printf("\n\nValeur de votre matrice : ");
for (i=0;i<(p-1);i++)
for(j=0;j<(p-1);j++)
{
{
printf("\n%d %d",*(mat+j),*(mat+j+1));
}
}
}
ou encore
void ecrirematcarre(int *mat[i][j],int p)
{
/* affichage ligne par ligne*/
int i,j;
if (p==2)
{
/*affichage d'une matrice carre d'ordre 2*/
printf("\n\nValeur de votre matrice : ");
for(i=0;i<(p-1);i++)
{
for(j=0;j<(p-1);j++)
{
printf("\n%d",*mat[i][j]);
}
}
}
}
je sais utiliser convenablement un main et appeler les fonctions!
Es-ce que quelqu'un peut me débloquer facilement ?
Merci d'avance !
ps : j'utilise grasp sous linux.
Configuration: Linux Debian Firefox 1.0.4
Deja sa m'etonne que ta fonction entrematcarre() fonctionne tu dis que tu utilise des matrice carré et tu lui donnes pas en argument un tableau 2D...
void entrermatcarre(int **pmat,int p) {
/*Matrice*/
int i,j;
/*j : colonne*/
/*i : ligne*/
printf("\n\nEntrez les composantes de votre matrice : ");
for(i=0;i<p;i++)
{
for (j=0;j<p;j++)
{
printf("\n\nSaisissez la composante (nombre entier) %d de la colonne X %d : ",(i+1),(j+1));
scanf("%d",&pmat[i][j]);
printf("\nVotre composante %d de la colonne %d : %d",(i+1),(j+1),pmat[i][j]);
}
}
} et pour ecrire ta matrice
void ecrirematcarre(int **mat,int p)
{
int i,j;
printf("\n\nValeur de votre matrice : ");
for (i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
printf("%d ",pmat[i][j];
}
printf("\n");
}
} |
Tu peux aussi gérer une matrice par un simple tableau comme suit : #include <stdio.h>
#include <stdlib.h>
void entrermatcarre(int *pmat,int p) {
int i, j, cpt;
printf("\n\nEntrez les composantes de votre matrice : ");
cpt = 0;
for(j=0;j<p;j++){
for (i=0;i<p;i++){
printf("\n\nSaisissez la composante (nombre entier) %d de la colonne X %d : ",(i+1),(j+1));
scanf("%d",&pmat[cpt++]);
printf("\nVotre composante %d de la colonne %d : %d\n",(i+1),(j+1),*(pmat+i));
}
}
}
void ecrirematcarre(int *mat,int p)
{
int i, j;
printf("Affichage \n");
for(i=0; i<p-1;i+=2)
printf("%d\t", mat[i]);
printf("\n");
for(j=1;j<p;j+=2)
printf("%d\t", mat[j]);
printf("\n");
}
int main(int argc, char *argv[])
{
int *mat;
mat = (int *)calloc(4, sizeof(int));
entrermatcarre(mat, 2);
ecrirematcarre(mat, 4);
system("PAUSE");
return 0;
}A toi de choisir ;-)
-- Alex pour vous servir --
-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) -- |
Et hop, encore un long message.... pour mype, voici ce qu'il me dit et ce que j'ai fait :
|
Ton main n'est pas correct c'est pour ça...
void entrermatcarre(int **pmat,int p) {
/*Matrice*/
int i,j;
/*j : colonne*/
/*i : ligne*/
printf("\n\nEntrez les composantes de votre matrice : ");
for(i=0;i<p;i++)
{
for (j=0;j<p;j++)
{
printf("\n\nSaisissez la composante (nombre entier) %d de la colonne X %d : ",(i+1),(j+1));
scanf("%d",&pmat[i][j]);
printf("\nVotre composante %d de la colonne %d : %d",(i+1),(j+1),pmat[i][j]);
}
}
}
void ecrirematcarre(int **mat,int p)
{
int i,j;
printf("\n\nValeur de votre matrice : ");
for (i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
printf("%d ",pmat[i][j];
}
printf("\n");
}
}
int main (void) /*Prototype de la fonction main*/
{
/*Declaration des variables */
int n,re;
int M[10][10];
/*Declaration les fonctions utilisees (prototype) par la fonction main */
int taillematrice(void);
void entrermatcarre(int pmat[10][10],int p);
void ecrirematcarre(int mat[10][10],int p);
/*Initialisation des variables*/
/*saisie par scanf et verification des variables*/
do
{
n=taillematrice();
entrermatcarre(M,n);
ecrirematcarre(M,n);
/*traitement des donnees - calcul divers*/
/*edition des donnees par printf*/
do
{
printf("\n\nVoulez vous relancez le programme ?");
printf("\ntappez 1 pour oui et 0 pour non : ");
scanf("%d",&re);
}
while(re<0||re>1);
}
while(re==1);
return 0;
} |
Bonjour,
|
Pas besoin d'utiliser des malloc puisse que tu as déclaré tes matrices en statique il faut que tu utilise une troisieme boucle et ne pas oublié d'initialisé la matrice du resultat aussi avant
void matcarparmatcar(int mat[10][10],int pat[10][10], int rat[10][10],int p)
{
int i,j,k;
for(i=0;i<p;i++) for(i=0;i<p;i++) rat[i][j]=0;
printf("\n\nMultiplication de deux matrices carres ");
for (i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
for(k=0;k<p;k++){
rat[i][j]+=mat[i][k]*pat[k][j];}
}
}
return;
}
|
Répondre à mype
|
Ben tout est bon jpense que tu te trompe dans ton calcul...
|
Je veux multiplier 3 matrices entre elles :
|
Répondre à mype
|
Tu peux utiliser un booleen pour voir si t'es matrice sont identique ensuite tu l'utilise dans le if
int symetrique=1;
for(i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
if(mat[i][j]!=pat[i][j]) symetrique=0;
}
}
if(symetrique==1)
{
printf("\n\nVotre matrice est symetrique : A-1 = A ");
}
else
{
printf("\n\nVotre matrice n'est pas symetrique. ");
}
return; |