[C] Mini programme ( demande d'aide )

Fermé
Mantar - 30 déc. 2007 à 20:08
 mp007 - 5 janv. 2008 à 14:36
Bonjour,
Svp aidé moi a créer un programme qui saisit deux matrices de reél
- qui vérifie s'elle sont différentes.
-qui calcul et affiche leur produit.
-qui retourne le maximum de la matrice produit.
A voir également:

23 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
30 déc. 2007 à 20:10
quel est la partie qui te pose probleme ?
0
La premiere et la 3 eme parti
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
30 déc. 2007 à 20:23
pour verifier qu'elles sont differentes tu parcours des deux matrices avec des boucle for et tu verifie que toutes leur cases ne sont pas identiques

pour la trouver le max de la matrice produit tu parcours ta matrice avec des boucle for et tu fais des comparaisons avec une variable max pour trouver le max de la matrice

voila essaye de faire un programme avec ces explications et post le resultat on corrigeras tes erreurs en t'expliquant...

bonne chance ;)
0
la premiere partie
il fonctionne pas :S
#include<stdio.h>
main()
{
int n1,n2,i,j;
float mat1[50][50],mat2[50][50];
printf("saisir le nombre de ligne matrice 1");
scanf("%d",&n1);
printf("saisir la nombre de colonne matrice 2");
scanf("%d",&n2);
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
printf("saisir mat1[%d][%d]",i,j);
scanf("%d %d",&mat1[i][j]);
}
printf("saisir mat2[%d][%d]",i,j);
scanf("%d %d";&mat2[i][j]);
}
if (mat1[i][j]!=mat2[i][j]))
printf("les deux matrices sont différents");
getchar();
getchar()
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
30 déc. 2007 à 21:13
la syntxe de ton scanf n'est pas correct il faut que tu revoies ça
ensuite il faudrait que tu rajoutes des boucle pour voir ce que donne tes matrices a m'affichage
puis il te manque une variable pour tester les differentes cases pour determiner si les matrices sont identique ou pas
essaye ça ( si tu n'as pas compris quelquechose n'hesites pas a demander)
#include<stdio.h>
int main()
{
  int n1,n2,i,j,different=0;
  float mat1[50][50],mat2[50][50];

    printf("saisir le nombre de ligne des matrices: ");
    scanf("%d",&n1);
    printf("saisir la nombre de colonne des matrices: ");
    scanf("%d",&n2);

    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("saisir mat1[%d][%d]: ",i,j);
            scanf("%f",&mat1[i][j]);
            printf("saisir mat2[%d][%d]: ",i,j);
            scanf("%f",&mat2[i][j]);
        }
    }

    printf("\n---matrice 1----\n");
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("%f ",mat1[i][j]);
        }
        printf("\n");
    }
    printf("----matrice 2----\n");
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("%f ",mat2[i][j]);
        }
        printf("\n");
    }

    for(i=0;i<n1;i++)
        for(j=0;j<n2;j++)
            if (mat1[i][j]==mat2[i][j])
                different+=1;
    if(different!=(n1*n2))
        printf("\nles deux matrices sont différents");
    else
        printf("\nles deux matrices sont identiques");
return 0;
}
0
Merci mype pour ton aide j'ai compris
je vais essayer avec les autres partie
0
Salut je peux savoir pk tu as utilisé
for(i=0;i<n1;i++)
for(j=0;j<n2;j++)
if (mat1[i][j]==mat2[i][j])
different+=1;
if(different!=(n1*n2))
printf("\nles deux matrices sont différents");
else
printf("\nles deux matrices sont identiques");
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
30 déc. 2007 à 22:11
pour dire que les deux matrice sont identique il faut que toutes leur case soit identique c'est a dire mat1[0][0] egale a mat2[0][0] etc..
donc on parcours chaque case des deux matrices et si leur case est identique on rajoute 1 a la variable different
donc lorsqu'on aura fini de parcourir toutes les cases si different = n1*n2 c'est a dire si toutes les case sont identiques alor les deux matrice sont identiques sinon elles sont differentes
voila j'espere que tu as compris mon exppliction ;)
0
cases si different = n1*n2
sa veut dire quoi cette fonction ?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
30 déc. 2007 à 22:36
c'est pas une fonction dans ta matrice il y a n1 * n2 case par ex si ta 3 ligne n1=3 et 3 colonne n2=3 tu a n1*n2 = 3 * 3 =9 t as donc 9 cases dans ta matrice la variable different verifie le nombre de case identique si different egal 9 alors toutes les cases sont identique donc les deux matrice sont identiques sinon elles sont differentes...
0
Merci J'ai bien compris ;)
0
voilà la suite ( le produit mais il ne fonctionne pas ) meme si j'ai rester trop de temps :S

#include<stdio.h>
int main()
{
  int n1,n2,n3,i,j,k,different=0;
  float mat1[50][50],mat2[50][50],mat3[50][50];

    printf("saisir le nombre de ligne des matrices: ");
    scanf("%d",&n1);
    printf("saisir la nombre de colonne des matrices: ");
    scanf("%d",&n2);

    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("saisir mat1[%d][%d]: ",i,j);
            scanf("%f",&mat1[i][j]);
            printf("saisir mat2[%d][%d]: ",i,j);
            scanf("%f",&mat2[i][j]);
        }
    }

    printf("\n---matrice 1----\n");
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("%f ",mat1[i][j]);
        }
        printf("\n");
    }
    printf("----matrice 2----\n");
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            printf("%f ",mat2[i][j]);
        }
        printf("\n");
    }

    for(i=0;i<n1;i++)
        for(j=0;j<n2;j++)
            if (mat1[i][j]==mat2[i][j])
                different++;
    if(different!=(n1*n2))
        printf("\nles deux matrices sont différents");
    else
        printf("\nles deux matrices sont identiques\n");
        
     printf("le produit des deux matrices\n");
     for (i=0;i<=n1;i++)
     {
         for (j=0;j<=n2;j++)
        {
             mat3[i][j]=0;
             for (k=0;k<n3;k++)
             {
                   mat3[i][j]=mat1[i][k]*mat2[k][j];     
             }
        }
    }printf("%f ",mat1[i][j]);
    
0
Personne peut Couriger ??
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
31 déc. 2007 à 00:10
il faut enlever ta variable k elle ne sert rien
quand ta boucle commence a 0 elle doit s'arreter a <n1 pas <=n1
essaye ça:
   for (i=0;i<n1;i++)
     {
         for (j=0;j<n2;j++)
         {
            mat3[i][j]=mat1[i][j]*mat2[i][j];
            printf("%f ",mat3[i][j]);
         }
         printf("\n");
     }
0
Ca marche mais la multiplication de deux matrices
n'es pas comme la multiplication direct
voilà un exemple de calcul de deux matrice
0
http://www.infres.enst.fr/~kaced/ifitep/pages/cours-c/prg-c72.htm#Heading153
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
31 déc. 2007 à 01:15
dans ce cas ce que tu as fait était presque bon tu avais juste mal placé ton printf de ta matrice 3 et tu as mis mat1 au lieu de mat3
essaye ça
printf("le produit des deux matrices\n");
     for (i=0;i<n1;i++)
     {
         for (j=0;j<n2;j++)
        {
             mat3[i][j]=0;
             for (k=0;k<n2;k++)
             {
                   mat3[i][j]+=mat1[i][k]*mat2[k][j];
             } 
             printf("%f ",mat3[i][j]);
        }
        printf("\n");
    }
0
Ca marche
jte remercie infiniment mype pour ton aide, j'ai apris d'autre chose en langage C grace a toi
merci encore
;)
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
31 déc. 2007 à 01:32
de rien ;)
0
salut,
qui peut terminer la derniere partie :- qui retourne le maximum de la matrice produit
0