[C] Mini programme ( demande d'aide )

Mantar -  
 mp007 -
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.
Configuration: Windows XP
Internet Explorer 6.0

23 réponses

  • 1
  • 2
  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    quel est la partie qui te pose probleme ?
    0
  2. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  3. Mantar
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  6. Mantar
     
    Merci mype pour ton aide j'ai compris
    je vais essayer avec les autres partie
    0
  7. Jamal
     
    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
  8. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  9. Jamal
     
    cases si different = n1*n2
    sa veut dire quoi cette fonction ?
    0
  10. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  11. Jamal
     
    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
  12. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  13. Jamal
     
    Ca marche mais la multiplication de deux matrices
    n'es pas comme la multiplication direct
    voilà un exemple de calcul de deux matrice
    0
  14. Jamal
     
    http://www.infres.enst.fr/~kaced/ifitep/pages/cours-c/prg-c72.htm#Heading153
    0
  15. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  16. Jamal
     
    Ca marche
    jte remercie infiniment mype pour ton aide, j'ai apris d'autre chose en langage C grace a toi
    merci encore
    ;)
    0
  17. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    de rien ;)
    0
  18. mp007
     
    salut,
    qui peut terminer la derniere partie :- qui retourne le maximum de la matrice produit
    0
  • 1
  • 2