Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3258 connectés 

 


Dernière réponse
Sujet : c[i][j] = somme_k( a[i][k] x b[k][j] ) ????? ça vous dit
BifaceMcLeOD Ben je programme depuis quelques années maintenant, alors... j'ai acquis un peu d'expérience...
 
Sinon, pour info, nos 2 codes sont radicalement différents. Je fais 3 boucles imbriquées, alors que tu n'en fais que 2...
 
En pratique, tu as calculé la somme de 2 matrices, alors que j'en ai fait le produit. Et puis les tableaux à 2 dimensions, ça existe... et c'est plus clair. J'ai réécrit ta fonction pour te montrer :
 
void somme(Matrice a, Matrice b, Matrice resultat, int nb_lig, int nb_col)
{
    int i, j;
 
    for (i = 0; i < nb_lig; i++) {
        for (j = 0; j < nb_col; j++) {
            resultat[ i][j] = a[ i][j] + b[ i][j];
        }
    }
}
 
N'est-ce point un tantinet plus clair ? :D
Et puis attention, tu as 2 bugs dans ta fonction. Les 2 tests de fin de boucle vont provoquer une erreur mémoire, car tu vas faire une itération de trop à chaque fois et déborder de ton tableau. Il faut remplacer tes '<=' par des '<'.
 
Voilà.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
BifaceMcLeOD Ben je programme depuis quelques années maintenant, alors... j'ai acquis un peu d'expérience...
 
Sinon, pour info, nos 2 codes sont radicalement différents. Je fais 3 boucles imbriquées, alors que tu n'en fais que 2...
 
En pratique, tu as calculé la somme de 2 matrices, alors que j'en ai fait le produit. Et puis les tableaux à 2 dimensions, ça existe... et c'est plus clair. J'ai réécrit ta fonction pour te montrer :
 
void somme(Matrice a, Matrice b, Matrice resultat, int nb_lig, int nb_col)
{
    int i, j;
 
    for (i = 0; i < nb_lig; i++) {
        for (j = 0; j < nb_col; j++) {
            resultat[ i][j] = a[ i][j] + b[ i][j];
        }
    }
}
 
N'est-ce point un tantinet plus clair ? :D
Et puis attention, tu as 2 bugs dans ta fonction. Les 2 tests de fin de boucle vont provoquer une erreur mémoire, car tu vas faire une itération de trop à chaque fois et déborder de ton tableau. Il faut remplacer tes '<=' par des '<'.
 
Voilà.
Pschitt T'en suis trés reconaissant BifaceMcLeOD même si j'en demandais pas autant ça fait toujours plaisir.
Dis moi le code ne ta pas l'air étranger ?
 
J'avais finalement prévu de le faire autrement :
 
som_vect(mat_a,mat_b,mat_c,nb_lig,nb_col)
 
 int * mat_a;  
 int * mat_b;
 int * mat_c;
 int nb_lig,nb_col;
 
{int i,j;
 
 for(i=0;i<=nb_lig;i++)
 
       for(j=0;j<=nb_col;j++)
 
               *(mat_c+i*nb_col+j)=*(mat_a+i*nb_col+j)+*(mat_b+i*nb_col+j);
}
 
Je pense que le résultat doit être identique
 
Encore Merci
BifaceMcLeOD typedef double[][] Matrice;
 
/* N est la taille des 3 matrices, supposées carrées. */
void produit(Matrice a, Matrice b, Matrice resultat, int N)
{
    int i, j, k;
 
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            double  somme = 0;
 
            for (k = 0; k < N; k++) {
                somme += a[ i][k] * b[k][j];
            }
 
            resultat[ i][j] = somme;
        }
    }
}
 
Pas sorcier, pourtant...

 

--Message édité par BifaceMcLeOD--

Pschitt Je me demande si le k ne veux pas dire, de façon détournée, un appel à la fonction ligne de matrice par ligne de matrice ??
 
Mais Somme_k je ne comprends pas (Attention Ici k est 1 indice de somme)
la viper non ca a l'air d'une matrice ... ik * kj = ij donc la multiplication est possible.
 
 
en C, il doit surement y avoir des librairies pour faire des calculs de matrices sinon avec la methode de base tu vas faire mouliner ton pc !!!.
Pschitt Vous croyer que c'est uniquement le produit de 2 mat. rangé dans une 3ème.
L'expression me paraît pluôt compliqué pour décrire cette "simple" opération.
 
Sinon c'est du C, tous en local pour compliquer l'exercice  
 
Merci de vos attentions
verdoux Ben c'est une multiplication de matrices.
Tu fais 2 boucles sur les i,j avec à l'intérieur une boucle sur l'indice k.
jupiler ca yen a etre le produit de matrice C=A*B
 
tu dois le faire dans quel language?
Pschitt Y a t_il une âme avertie et généreuse pour m'éclairer sur un sujet délicat.
 
Voila, on doit faire une fonction(sans déclarations globales) réalisant l'opération suivante :  
 
        c[i][j] = somme_k( a[i][k] x b[k][j] ) ?????
 
Le pb est que je ne comprends déja pas cete opération donc je suis loin d'en faire une fonction.
Je crois que notre prof est débile !!
 
Help !
 
Merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)