begin process at 2012 05 27 14:09:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCULER LE PRODUIT DE DEUX MATRICES DE TAILLE DIFFERENT

CALCULER LE PRODUIT DE DEUX MATRICES DE TAILLE DIFFERENT


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :matrice, produit matrice, math Niveau :Débutant Date de création :27/02/2010 Date de mise à jour :28/02/2010 11:51:15 Vu :5 516

Auteur : aymenet1

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Un programme qui fait le produit de deux matrices de taille matrice1: [n,p] et matrice2 [p,m] qui donnent une matrice de taille: [n,m]...    

Source

  • #include <stdio.h>
  • int valide(int x)
  • {
  • do
  • {
  • scanf("%i",&x);
  • if ((x<0)||(x>20))
  • printf("vous devez entrer une valeur entre 1 et 20 : ");
  • }while((x<=0)||(x>20));
  • return(x);
  • }
  • void main()
  • {
  • const n=20;
  • int i,j,k,l1,l2,c1,c2;
  • float mat1[n][n],mat2[n][n],matres[n][n];
  • do
  • {
  • printf("Donner le nombre de lignes de la matrice n° 1 \n");
  • l1=valide(l1);
  • printf("Donner le nombre de colonnes de la matrice n°1 \n");
  • c1=valide(c1);
  • printf("Donner le nombre de lignes de la matrice n° 2 \n");
  • l2=valide(l2);
  • printf("Donner le nombre de colonnes de la matrice n°2 \n");
  • c2=valide(c2);
  • if(c1!=l2)
  • printf("Les tailles des deux matrices sont incompatible \n Il faut que le nombre de colonnes de la premiere matrice egal au nombre de lignes de la deuxieme matrice . \n");
  • }while(c1!=l2);
  • printf("Tailles des matrices est bien choisis \n Votre nouvelle matrice aura cet taille %i lignes et %i colonnes ",l1,c2);
  • for(i=0;i<l1;i++)
  • {
  • for(j=0;j<c1;j++)
  • {
  • printf("Donner l'element d'emplacement [%i,%i] de la premiere matrice \n",i+1,j+1);
  • scanf("%f",&mat1[i][j]);
  • }
  • }
  • for(i=0;i<l2;i++)
  • {
  • for(j=0;j<c2;j++)
  • {
  • printf("Donner l'element d'emplacement [%i,%i] de la dexieme matrice \n",i+1,j+1);
  • scanf("%f",&mat2[i][j]);
  • }
  • }
  • for(i=0;i<l1;i++)
  • {
  • for(j=0;j<c2;j++)
  • {
  • matres[i][j]=0;
  • for(k=0;k<c1;k++)
  • {
  • matres[i][j]=matres[i][j]+mat1[i][k]*mat2[k][j];
  • }
  • }
  • }
  • printf("le produit de la première et la deuxième matrice donne :");
  • for(i=0;i<l1;i++)
  • {
  • printf("(");
  • for(j=0;j<c2;j++)
  • {
  • printf("%4.0f",matres[i][j]);
  • }
  • printf(")\n");
  • }
  • }
#include <stdio.h>
int valide(int x)
{
do
{
 scanf("%i",&x);
if ((x<0)||(x>20))
printf("vous devez entrer une valeur entre 1 et 20 : ");
   }while((x<=0)||(x>20));
   return(x);
   }
void main()
{
const n=20;
int i,j,k,l1,l2,c1,c2;
float mat1[n][n],mat2[n][n],matres[n][n];
do
{
printf("Donner le nombre de lignes de la matrice n° 1 \n");
l1=valide(l1);
printf("Donner le nombre de colonnes de la matrice n°1 \n");
c1=valide(c1);
printf("Donner le nombre de lignes de la matrice n° 2 \n");
l2=valide(l2);
printf("Donner le nombre de colonnes de la matrice n°2 \n");
c2=valide(c2);
if(c1!=l2)
printf("Les tailles des deux matrices sont incompatible \n Il faut que le nombre de colonnes de la premiere matrice egal au nombre de lignes de la deuxieme matrice . \n");
}while(c1!=l2);
printf("Tailles des matrices est bien choisis \n Votre nouvelle matrice aura cet taille %i lignes et %i colonnes ",l1,c2);

			for(i=0;i<l1;i++)
         {
         		for(j=0;j<c1;j++)
						{
						printf("Donner l'element d'emplacement [%i,%i] de la premiere matrice \n",i+1,j+1);
						scanf("%f",&mat1[i][j]);
						}
         }
				for(i=0;i<l2;i++)
				{
					for(j=0;j<c2;j++)
						{
						printf("Donner l'element d'emplacement [%i,%i] de la dexieme matrice \n",i+1,j+1);
						scanf("%f",&mat2[i][j]);
						}
            }
for(i=0;i<l1;i++)
{
for(j=0;j<c2;j++)
{
matres[i][j]=0;
for(k=0;k<c1;k++)
{
matres[i][j]=matres[i][j]+mat1[i][k]*mat2[k][j];
}
}
}
printf("le produit de la première et la deuxième matrice donne :");

for(i=0;i<l1;i++)
{
printf("(");
for(j=0;j<c2;j++)
{
printf("%4.0f",matres[i][j]);
}
printf(")\n");
}
}



 Historique

28 février 2010 11:51:15 :
corriger des fautes

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture CLASS MATRICE C++ par elkasimi2007
Source avec Zip Source avec une capture CALCULER LA DÉTERMINANTE D'UNE MATRICE ALÉATOIRE DE GRANDEUR... par dPompei2
MANIPULATION DE MATRICES par newvoho

Commentaires et avis

Commentaire de Minilogus le 27/02/2010 16:34:26

il y a quelque petite erreurs:

#include <stdio.h>
//conio.h n'est pas reconnu par tout les OS et est inutile ici.
int valide(int x)
{
    do
    {
        scanf("%i",&x);
        if ((x<0)||(x>20))
        printf("vous devez entrer une valeur entre 1 et 20 : ");
    }while((x<=0)||(x>20));
    return(x);
}

int main()//int au lieu de void car return 0 à la fin
{
    const int n=20;// ne pas oublier le type (int)
    int i,j,k,l1,l2,c1,c2;
    float mat1[n][n],mat2[n][n],matres[n][n];

    do
    {
        printf("Donner le nombre de lignes de la matrice n°1 \n");
        l1=valide(l1);
        printf("Donner le nombre de colonnes de la matrice n°1 \n");
        c1=valide(c1);
        printf("Donner le nombre de lignes de la matrice n°2 \n");// 2 et non 1;
        l2=valide(l2);
        printf("Donner le nombre de colonnes de la matrice n°2 \n");
        c2=valide(c2);
        if(c1!=l2)
        printf("Les tailles des deux matrices sont incompatible \n Il faut que le nombre de colonnes de la premiere matrice egal au nombre de lignes de la deuxieme matrice . \n");
    }while(c1!=l2);

    printf("Tailles des matrices est bien choisis \n Votre nouvelle matrice aura cet taille %i lignes et %i colonnes ",l1,c2);

    for(i=0;i<l1;i++)
    {
        for(j=0;j<c1;j++)
        {
            printf("Donner l'element d'emplacement [%i,%i] de la premiere matrice \n",i+1,j+1);
            scanf("%f",&mat1[i][j]);
        }
    }

    for(i=0;i<l2;i++)
    {
        for(j=0;j<c2;j++)
        {
            printf("Donner l'element d'emplacement [%i,%i] de la deuxieme matrice \n",i+1,j+1);// deuxieme (et non pas dexieme ^^).
            scanf("%f",&mat2[i][j]);
        }
    }
    for(i=0;i<l1;i++)
    {
        for(j=0;j<c2;j++)
        {
            matres[i][j]=0;
            for(k=0;k<c1;k++)
            {
                matres[i][j]=matres[i][j]+mat1[i][k]*mat2[k][j];
            }
        }
    }

    printf("le produit de la premiere et la deuxieme matrice donne : \n");// rajout d'un "\n" pour faire plus propre

    for(i=0;i<l1;i++)
    {
        printf("(");
        for(j=0;j<c2;j++)
        {
            printf("%4.0f",matres[i][j]);
        }
        printf(")\n");
    }
    return 0;// enlevement de getch et mise en place de return 0.
}

Commentaire de Minilogus le 27/02/2010 16:39:15

Il y a d'autres petites fautes mais rien qui empêche le programme de fonctionner.

Commentaire de Minilogus le 27/02/2010 16:42:11

A au fait, tu as mis le niveau de difficulté un peu haut, c'est du niveau débutant (pas initié ^^).

Commentaire de aymenet1 le 28/02/2010 11:53:51

merci Minilogus j'apprecis pour ton passage ^^

Commentaire de besilent le 01/03/2010 22:17:53

J'avais fais un code en C sur les calculs matricielles.
Voici ma fonction, elle ressemble évidemment beaucoup à la tienne.

void Multiplier_Matrice( int **Matrice, int **Matrice_A, int **Matrice_B, int Ligne_A, int Colonne_A, int Ligne_B, int Colonne_B )
{
     if ( Matrice != NULL && Matrice_A != NULL && Matrice_B != NULL && Sont_Multipliables( Colonne_A, Ligne_B ) == 1 )
        {
            int i,j;
            int Repeter=0;
            for ( i=0 ; i<Ligne_A ; i++ )
             {
                 for ( j=0 ; j<Colonne_B ; j++ )
                     {
                         while ( Repeter != Colonne_A )
                               {
                                         Matrice[i][j]=Matrice[i][j]+ Matrice_A[i][Repeter]*Matrice_B[Repeter][j];
                                         Repeter++;
                               }
                         Repeter=0;
                     }
             }
         }
        
     else perror("\n\n Multiplier_Matrice : ");
}

Commentaire de besilent le 01/03/2010 22:20:13

int Sont_Multipliables( int Colonne_A, int Ligne_B )
{
    if ( Colonne_A == Ligne_B )
       {
                   return 1;
       }
    
    else return 0;
}

C'est la fonction que je n'ai pas mise mais qui se trouve dans la structure de contrôle if afin de vérifier que les matrices sont bien multipliables.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème pour dériver une classe [ par arc59 ] J'ai créé une classe Matrice comportant des fonctions get_ele, set_ele (toutes les 2 sont "virtual") et la redéfinition de l'opérateur +.Dans ma class fichier.h [ par bidules ] Bonjour,j'aimerais savoir s'il est possible de mettre des structures dans un fichier d'entete.Car j'ai fais l'essai mais lors de la compilation pour c PB de matrice [ par limax84 ] J'ai un probleme d'allocation dynamique de memoire pour une matrice.pour un tableau, je procede comme ceci:int * t;t = new int [30];mais pour une matr matrice carréé [ par justeroland ] j'ai besoin de l'aide au sujet de l'exercice suivant: une matrice carré est dite balancée si les sommes des elements de ses quatre triangles sont égal les fonctions et le Math [ par djamine ] beh bonsoir les programmeurs j'ai une problemeje veux en utilisant la formuletan x=2t/1-(t au carré) avec t=tg x/2et le fait que si x est petit par ex Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA une matrice de taille quelconque [ par anaisa ] salut tt le monde saurez vous m'aidez à résoudre un petit probleme: je dois programmé la somme, produit de matrices de taille quelconque en langage C Coord 2D to 3D [ par bat67000 ] Comment optenir d'un point 2D sur l'app les coordonnees du point 3D associé avec la matrice de projection ?(je pige pas bien comment fonctionne la mat Matrice constante. [ par nsoualem ] j'ai crée une classe matrice avec un constructeurdu type:matrice(int nbligne,int nbcolonne)...elle marche a merveille!!!Lors de la création d'un code, inverse de matrice dynamique [ par anaisa ] Aidez nous please c pr programmer en langage Votre texte ICIC l inverse de la matrice dynamique merci bcp !!!!!!


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales