skrime
Messages postés4Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention12 janvier 2005
-
30 oct. 2004 à 18:26
Babilys
Messages postés1Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention16 juin 2005
-
16 juin 2005 à 13:45
Bonjour, j'ai un exercice à faire qui consiste à multiplier une matrice par un scalaire en C (la prof ne veut pas qu'on se serve des boucles FOR), je viens d'écrire ce programme qui m'a l'air bon, mais qui bug une fois que j'ai saisi la matrice et le scalaire !
Merci d'avance pour votre aide !
Voici le programme
// EXERCICE 2 : MULTIPLICATION D'UNE MATRICE PAR UN SCALAIRE //
#include <stdio.h>
#define nb_ligne 4
#define nb_colonne 4
typedef int TAB_BASE[nb_ligne][nb_colonne];
typedef int TAB_MULTI[nb_ligne][nb_colonne];
//Sous-programme de saisie de la matrice///////////////////////////////////
void saisie_matrice(TAB_BASE t)
{
int i = 0;
printf("Saisissez la matrice que vous souhaitez multplier par un scalaire\n");
while(i<nb_ligne)
{
int j = 0;
while(j<nb_colonne)
{
printf("Saisissez le champ [%d][%d] : ",i,j);
scanf("%d",&t[i][j]);
j = j+1;
}
i=i+1;
}
return;
}
/////////////////////////////////////////////////////////////////////////
//Sous-programme de saisie du scalaire///////////////////////////////////
int saisie_scalaire(int scalaire)
{
printf("Saisissez le scalaire que vous souhaitez multiplier par la matrice : ");
scanf("%d",scalaire);
return scalaire;
}
////////////////////////////////////////////////////////////////////////
//Sous-programme de multiplication de la matrice de base par le scalaire////
void multiplication(TAB_BASE t,int scalaire,TAB_MULTI m)
{
int i = 0;
while(i<nb_ligne)
{
int j = 0;
while(j<nb_colonne)
{
m[i][j]=t[i][j]*scalaire;
}
i=i+1;
}
return;
}
/////////////////////////////////////////////////////////////////////////
int main(void)
{
TAB_BASE t;
TAB_MULTI m;
int i,j,scalaire;
saisie_matrice(t);
saisie_scalaire(scalaire);
multiplication(t,scalaire,m);
//Affichage du produit scalaire//
printf("Le produit scalaire choisi est : %d",scalaire);
/////////////////////////////////
// Affichage de la matrice de base//
printf("La matrice de base est : \n");
i = 0;
while(i<nb_ligne)
{
j = 0;
while(j<nb_colonne)
{
printf("%d ",t[i][j]);
}
printf("\n");
i=i+1;
}
////////////////////////////////////
//Affichage de la matrice obtenue//
printf("La matrice obtenue est : \n");
i = 0;
while(i<nb_ligne)
{
j = 0;
while(j<nb_colonne)
{
printf("%d ",m[i][j]);
}
printf("\n");
i=i+1;
}
////////////////////////////////////
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 30 oct. 2004 à 22:51
Regarde, tu as un problème de portée de variable. Tu fais ceci:
multiplication(t,scalaire,m);
Ta variable m n'est pas modifié lors de la fonction multiplication.
Il faut déclarer ta fonction multiplication de la facon suivante. Tu as juste a changer:
void multiplication(TAB_BASE t,int scalaire,TAB_MULTI m)
{
int i = 0;
...
en
void multiplication(TAB_BASE t,int scalaire)
{
int i = 0;
...
Je pense que la, ca devrait marcher.
Personnellement, je trouve l'exercice d'une débilité :)
Puisqu'une boucle for, on peut très bien la faire avec un while.