Programme c besoin d'aide
int main
Messages postés
80
Statut
Membre
-
MRAD Messages postés 95 Statut Membre -
MRAD Messages postés 95 Statut Membre -
Bonsoir
Voila j'ai un TP à remettre (rassurez vous je l'ai fait :) ), seulement voila quand je le compile il m'affiche aucune erreur mais lors de l'exécution le programme plante et je sais vraiment pas pourquoi.
Merci de jeter un coup d'oeil au dit TP et au programme ci-dessous.
TP
Écrire une fonction permettant de calculer le produit de deux matrices de dimension n et m; puis une fonction calculant la somme de deux matrices de même dimension.
Écrire ensuite la fonction main où vous appellerez les deux fonctions à l'exécution, l'utilisateur doit avoir le choix entre faire la somme ou le produit des matrices.
Fin du tp
Code source
Merci d'avoir pris le temps de lire
Voila j'ai un TP à remettre (rassurez vous je l'ai fait :) ), seulement voila quand je le compile il m'affiche aucune erreur mais lors de l'exécution le programme plante et je sais vraiment pas pourquoi.
Merci de jeter un coup d'oeil au dit TP et au programme ci-dessous.
TP
Écrire une fonction permettant de calculer le produit de deux matrices de dimension n et m; puis une fonction calculant la somme de deux matrices de même dimension.
Écrire ensuite la fonction main où vous appellerez les deux fonctions à l'exécution, l'utilisateur doit avoir le choix entre faire la somme ou le produit des matrices.
Fin du tp
Code source
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//****************************Produit des matrices*********************************
int prod( )
{
int i,j,k,m,n,p;
float mat1[m][n],mat2[p][m],mat3[m][p];
printf("Saisir la dimension commune au deux matrices (dimension ligne matrice 1, colonne martrice 2): ");
scanf("%f",&m);
//Remplissage de la premiere matrice-------------------------------------
printf("\n****** Matrice 1 ******\n");
printf("Nombre de colonne de la matrice 1 : ");
scanf("%f",&n);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf ("ligne %d, colonne %d : ",i+1,j+1);
scanf ("%d",&mat1[i][j]);
}
}
//Remplissage de la seconde matrice----------------------------------
printf("\n****** Matrice B ******\n");
printf("Nombre de ligne de la matrice 2: ");
scanf("%f",&p);
for(i=0;i<p;i++){
for(j=0;j<m;j++){
printf ("ligne %d, colonne %d : ",i+1,j+1);
scanf ("%d",&mat2[i][j]);
}
}
// Affectation du résultat de la multiplication à la 3eme matrice -----------------------
for (i=0; i<n; i++){
for (j=0; j<p; j++)
{
mat3[i][j]=0;
for (k=0; k<m; k++)
{mat3[i][j]= mat1[i][j]*mat2[k][j]+mat3[i][j];}
}
}
// Edition du résultat -----------------------------------------------
printf("Matrice résultat :\n");
for (i=0; i<n; i++)
{
for (j=0; j<p; j++)
{printf("%7d", mat3[i][j]);}
printf("\n");
}
printf("\n\n");
printf("\t\t\t\t\t\t\t\t ======= Fin =======")
}
//***********************Somme des matrices*******************************
int som( )
{
int i,j,n,m;
float mat1[n][m],mat2[n][m],mat3[50][50];
printf("-----Saisie des dimensions commune au deux matrices: -----");
printf("Nombre de lignes: ");
scanf("%d", &n );
printf("Nombre de colonnes: ");
scanf("%d", &m );
//Remplissage de la premiere matrice--------------------------------------------
printf("\n****** Matrice 1 ******\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf ("ligne %d, colonne %d : ",i+1,j+1);
scanf ("%d",&mat1[i][j]);
}
}
//Remplissage de la seconde matrice--------------------------------------------
printf("\n****** Matrice 2 ******\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf ("ligne %d, colonne %d : ",i+1,j+1);
scanf ("%d",&mat1[i][j]);
}
}
// Affichage des matrices---------------------------------------------------------------
printf("************Premiere matrice:************\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{printf("%7d", mat1[i][i]);}
printf("\n");
}
printf("************Seconde matrice************:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{printf("%7d", mat2[i][j]);}
printf("\n");
}
// Affectation du résultat de l'addition a la 3eme matrice ---------------------
for (i=0; i<n; i++){
for (j=0; j<m; j++)
{mat3[i][j] = mat1[i][j]+mat2[i][j];}
}
// Edition du résultat-----------------------------------------------------------
printf("Matrice 3: résultat :\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("%7d", mat3[i][j]);
printf("\n");
}
printf("\n\n");
printf("\t\t\t\t\t\t\t\t ======= Fin =======");
}
//*************************Fonction main****************************
int main()
{
int choix,controle;
char ligne[20];
printf("\t\t\t\t\t======== ");
printf("\t\t\t\t\t\t\t\t ======= Menu =======");
printf("\t\t\t\t\t\t\t\t\t========\n\n ");
while(choix<1 || choix>2){
printf("\t\tEntrez '1' pour determiner la Somme de deux matrices\n");
printf("\t\tEntrez '2' pour determiner le Produit de deux matrices\n\n");
printf("\t\t\t\t Votre choix ?: ");
gets (ligne);
controle=sscanf(ligne,"%d",&choix);
while(!controle){
do{printf("\t\t\t\tVous devez saisir '1' ou '2':\t");
gets (ligne);
controle=sscanf(ligne,"%d",&choix);
}
while(controle<1);
}
}
printf("\n\n");
switch (choix)
{
case 1:
som( );
break;
case 2:
prod( );
break;
}
printf("\n\n");
system("PAUSE");
return 0;
}
Merci d'avoir pris le temps de lire
A voir également:
- Programme c besoin d'aide
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
4 réponses
J'aime bien ton "Merci d'avoir pris le temps de lire"
Je n'ai lu que les 2 premières lignes et je suis sûr que ce n'est que ça :p
Tu initialises mat1, mat2 et mat3 avec des nombres (m n et p) qui ne sont même pas initialisés. Chacune de tes matrices est donc de taille complètement aléatoire, et après quand tu essayes d'écrire dedans ... avec un coup de pas de chance (ce qui arrive tout le temps lol) ... tu essayes d'écrire en dehors de celle-ci donc ça plante :)
Je n'ai lu que les 2 premières lignes et je suis sûr que ce n'est que ça :p
int i,j,k,m,n,p; float mat1[m][n],mat2[p][m],mat3[m][p];
Tu initialises mat1, mat2 et mat3 avec des nombres (m n et p) qui ne sont même pas initialisés. Chacune de tes matrices est donc de taille complètement aléatoire, et après quand tu essayes d'écrire dedans ... avec un coup de pas de chance (ce qui arrive tout le temps lol) ... tu essayes d'écrire en dehors de celle-ci donc ça plante :)
Merci bien sa devait sans doute etre sa jai initialisé les trois matrices à 50 et paf sa passe je vais serifié s'il y pas d'autre bug
Merci encore
Merci encore