IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Produit de matrices


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 23
    Par défaut Produit de matrices
    Bonjour dans le code suivant j'essaye de calculer un produit de atrice tout vas bien pour l'encoder mais on dirait que la fonction produit matriciel ne fonctionne pas et je comprends pas pk?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Je viens de le refaire et tout se passe bien jusqu'a l'affichage de ma matrice donc le probléme est dans la fonction multiplication matrice mais je le vois pas 
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    void encode(float tableau[100][100],int *l, int *c);
     
    void multiplication(float t1[100][100],float t2[100][100],float t3[100][100],int *l1,int *c1, int *l2,int *c2,int *l3, int *c3);
     
    int main()
    {
     
        int lignes1  = 0;
        int colones1 = 0;
        int lignes2  = 0;
        int colones2 = 0;
        int lignes3  = 0;
        int colones3 = 0;
     
     
     
     
        float tableau1[100][100];
        float tableau2[100][100];
        float tableau3[100][100];
     
        printf("Encodage de la premiere matrice\n");
     
        encode(tableau1,&lignes1,&colones1);
     
        printf("Encodage de la deuxieme matrice\n");
     
        encode(tableau2,&lignes2,&colones2);
     
        printf("Voici le produit matriciel");
     
        multiplication(tableau1,tableau2,tableau3,&lignes1,&colones1,&lignes2,&colones2,&lignes3,&colones3);
     
     
     
     
     
     
        return 0;
    }
     
    void encode(float tableau[100][100],int *l, int *c)
    {
        int i =0;
        int j =0;
     
        //Quelle est le nombre de lignes
        printf("Veuillez rentrer le nombre de lignes\n");
        scanf("%d",l);
     
        //Quelle est le nombre de colonnes
        printf("Veuillez rentrer le nombre de colonnes\n");
        scanf("%d",c);
     
        //Quelles sont les differentes valeurs pour matrice A et B
     
        for(i=0;i<*l;i++)
        {
            for(j=0;j<*c;j++)
            {
                printf("Entrez l'element %d %d :",i,j);
     
                scanf("%f",&tableau[i][j]);
     
            }
        }
     
     
    }
     
    void multiplication(float t1[100][100],float t2[100][100],float t3[100][100],int *l1,int *c1, int *l2,int *c2,int *l3, int *c3)
    {
        int i =0,j=0,k=0;
     
     //Nombre de colonnes de la 1ere matrice = nbre de ligne de la deuxiéme matrice
     
     if(*c1!=*l2)
     {
         printf("Votre calcul n'est pas bon,veuilles vous assure que le nbr de colonne 1ere matrice = nbre de ligne deuxieme\n");
     }
     else
     {
         printf("Votre calcul est bon \n");
     
         for(i=0;i<*l1;i++)
         {
             for(j=0;j<*c2;j++)
             {
                 for(k=0;k<*c1;k++)
                 {
                     t3[i][j] += t1[i][k]*t2[k][j];
                 }
             }
         }
     }
    Merci bien

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 489
    Par défaut
    Bonjour et bienvenue,

    C'est assez encourageant pour un premier programme (ou pour quelqu'un qui débute) mais à terme, essaie de ne pas déclarer d'emblée de grands tableaux arbitraires comme tu le fais, surtout s'ils ont plusieurs dimensions (explosion exponentielle). Ici, chacun de tes tableaux fait près de 40 kilo-octets, même si en soi, cela reste raisonnable sur des machines modernes.

    Ton problème semble venir du fait que tu n'initialises pas la matrice de sortie et que tu ne peux donc pas garantir que t3[i][j] sera forcément nul en début de traitement. Il faut que tu ajoutes :


    …entre les lignes 94 et 95, juste avant de démarrer la boucle k.

    Bon courage.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 23
    Par défaut
    Oui merci l'erreur venait de là

    Bonne soirée

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 489
    Par défaut
    À ton service, mais n'oublie pas le bouton en bas de page.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Produit de matrices
    Par lasert dans le forum Débuter
    Réponses: 4
    Dernier message: 28/07/2011, 16h08
  2. Produit de matrices
    Par soulisameh dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/12/2009, 14h24
  3. produit de matrices : ordre ?
    Par Ange_blond dans le forum Mathématiques
    Réponses: 4
    Dernier message: 22/07/2009, 12h44
  4. Produit de matrices avec les map
    Par Butterfly83 dans le forum SL & STL
    Réponses: 7
    Dernier message: 30/11/2007, 15h22
  5. Produit de matrices en vba
    Par gcadieux dans le forum Général VBA
    Réponses: 4
    Dernier message: 26/09/2006, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo