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, somme matricielle (pointeur)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut Produit, somme matricielle (pointeur)
    comme sont nom l'indique je souhaite effectuer le produit et la somme de trois matrice R = A*B+C

    le code est

    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
    //Ajout des biblio
    #include "stdafx.h"
    #include<malloc.h>
    #include<conio.h>
     
    // prototype des fonction
    void lec(int*,int);
    void aff(int*,int);
    void pro(int*,int);
    void som(int*,int);
     
    //partie declaration global
    int i,j,N,*R,*M,k;
     
    //programme principale
    void main()
    {
    	printf("Donner la taille de votre matrice carrer svp : ");
    	scanf("%d",&N);
    	R=(int*)malloc(N*N*sizeof(int));
    	printf("Entrer les element de la matrice A\n");
    	lec(R,N);
    	printf("Entrer les element de la matrice B\n");
    	M=(int*)malloc(N*N*sizeof(int));
    	lec(M,N);
    	pro(M,N);
    	printf("Entrer les element de la matrice C\n");
    	lec(M,N);
    	som(M,N);
    	aff(R,N);
    	free(M);
    	free(R);
    	getch();
    }
     
    //fonction Lecture
    void lec(int*L,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    				printf("Donner l'element %d.%d : ",i+1,j+1);
    				scanf("%d",&L[i*N+j]);
    		}
    }
    //Fonction produit
    void pro(int*P,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    			R[i*N+j]=0; //erreur corrigé !!! donc je lé supprimer
    			for(k=0;k<N;k++)
    				R[i*N+j]=R[i*N+j]+R[i*N+k]*P[k*N+j];
    		}
    }
    //Fonction somme
    void som(int*S,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    			R[i*N+j]=R[i*N+j]+S[i*N+j];
    }
     
    //Fonction affichage
    void aff(int*A,int)
    {
    	for (i=0;i<N;i++)
    	{
    		for (j=0;j<N;j++)
    			printf("%3d",A[i*N+j]);
    		printf("\n");
    	}
    }
    le problème est que l'affichage n'est pas correcte ou du moins y a une erreur dans le programme que je n'ai pas remarquer. Il m'affiche toujours la matrice C or il doit afficher le résultat final.

    Bon quand j'analyse mon programme je trouve que le problème est au niveau des indice de la fonction Produit, j'arrive pas a les géré.

  2. #2
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    une petite maj de la fonction concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void pro(int*P,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    			S=0;
    			for(k=0;k<N;k++)
    				S=S+R[i*N+k]*P[k*N+j];
    			R[i*N+j]=S;
    		}
    }
    le premier produit est réaliser cad le produit de la premier ligne avec la première colonne mais la suite

  3. #3
    Membre éclairé Avatar de Hamza
    Homme Profil pro
    Data Analyst
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Par défaut
    Bon ok, y a rien de plus dure quand il y a une erreur logique je voulais optimiser mon programme et voila que je me rend conte que je modifier les valeur de la matrice avec qui je voulais multiplier donc le new code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void pro(int*P,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    			R[i*N+j]=0;
    			for(k=0;k<N;k++)
    				R[i*N+j]=R[i*N+j]+U[i*N+k]*P[k*N+j];
    		}
    }
    avec la suppression de la variable S et ajout du pointeur U

    et le code final est

    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
    //Ajout des biblio
    #include "stdafx.h"
    #include<malloc.h>
    #include<conio.h>
     
    // prototype des fonction
    void lec(int*,int);
    void aff(int*,int);
    void pro(int*,int);
    void som(int*,int);
     
    //partie declaration global
    int i,j,N,*R,*M,k,*U;
     
    //programme principale
    void main()
    {
    	printf("Donner la taille de votre matrice carrer svp : ");
    	scanf("%d",&N);
    	U=(int*)malloc(N*N*sizeof(int));
    	printf("Entrer les element de la matrice A\n");
    	lec(U,N);
    	printf("Entrer les element de la matrice B\n");
    	M=(int*)malloc(N*N*sizeof(int));
    	lec(M,N);
    	R=(int*)malloc(N*N*sizeof(int));
    	pro(M,N);
    	printf("Entrer les element de la matrice C\n");
    	lec(M,N);
    	som(M,N);
    	aff(R,N);
    	free(M);
    	free(U);
    	free(R);
    	getch();
    }
     
    //fonction Lecture
    void lec(int*L,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    				printf("Donner l'element %d.%d : ",i+1,j+1);
    				scanf("%d",&L[i*N+j]);
    		}
    }
    //Fonction produit
    void pro(int*P,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    		{
    			R[i*N+j]=0;
    			for(k=0;k<N;k++)
    				R[i*N+j]=R[i*N+j]+U[i*N+k]*P[k*N+j];
    		}
    }
    //Fonction somme
    void som(int*S,int)
    {
    	for (i=0;i<N;i++)
    		for (j=0;j<N;j++)
    			R[i*N+j]=R[i*N+j]+S[i*N+j];
    }
     
    //Fonction affichage
    void aff(int*A,int)
    {
    	for (i=0;i<N;i++)
    	{
    		for (j=0;j<N;j++)
    			printf("%3d",A[i*N+j]);
    		printf("\n");
    	}
    }
    voila finalement j'ai résolue le problème a moi seul

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

Discussions similaires

  1. [XL-2013] insérer une recherche dans une somme matricielle
    Par Emman dans le forum Excel
    Réponses: 13
    Dernier message: 02/06/2014, 13h31
  2. produit scalaire matriciel
    Par readme dans le forum MATLAB
    Réponses: 3
    Dernier message: 25/04/2012, 16h57
  3. somme de produit matriciel
    Par dptmt dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2011, 16h05
  4. Réponses: 10
    Dernier message: 28/01/2010, 11h26
  5. Problème: produit matriciel
    Par v4np13 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 17/05/2005, 17h23

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