Produit matriciel en c renvoit des valeurs complètement fausses

cs_bilel59 Messages postés 14 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 avril 2009 - 13 mars 2009 à 23:38
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 14 mars 2009 à 05:21
Bonjout à tous, je sollicite votre aide pour la raison indiquée dans le titre, en effet le produif matriciel que j'effectue renvoit des valeurs vraiment fausses et je ne trouve pas la cause de cette erreur. Merci davance pour votre aide
Ci-après le code source en question :

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{   int n,i,j,k=0;
    /*Entrée de la taille de la matrice carrée*/
    printf("Entrer la taille de la matrice carree.\n");
    scanf("%d",&n);
    /*Déclaration de la matrice*/
    int S[n][n];
    /*Remplissage de la matrice s[i][j] désigne le terme de la i ème ligne et j ème colonne*/
    printf("Remplissez la matrice (on remplira ligne par ligne)\n");
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {scanf("%d",&S[i][j]);}
     }
   /*fin du remplissage de la matrice*/
 
  
  
/*Calcul de T la transposée de la matrice S*/
int T[n][n];
for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {T[j][i]=S[i][j];}
     }
/*fin du calcul de la transposée*/

/*calcul du produit S*transposee(S) */
int E[n][n];
for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {for(k=0;k<n;k++){
                    E[i][j]=E[i][j]+(S[i][k]*T[k][j]);}}
     }
/*fin de S*trensposee(S)*/
printf("Test de certaines valeurs\n");
printf("%d\n",E[0][0]);
printf("%d\n",E[1][0]);
printf("%d\n",E[2][0]);
    system("pause");
    return 0;}

4 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
14 mars 2009 à 00:09
tu as oublié l'initialisation à 0 des éléments de matrice :

for(i=0;i<n;i++)
{
   for(j=0;j<n;j++)
   {
      E[i][j]=0;
      for(k=0;k<n;k++) E[i][j]=E[i][j]+(S[i][k]*T[k][j]);
   }
}

et au fait, je ne sais pas ce que tu utilises comme compilateur pour qu'il accepte ça mais tu ne peux pas déclarer de tableaux de taille variable.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mars 2009 à 00:14
int S[n][n];
C'est du C99 ou autre hérésie du meme genre, truc à bannir absolument.

ciao...
BruNews, MVP VC++
0
cs_bilel59 Messages postés 14 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 avril 2009
14 mars 2009 à 00:14
Merci beaucoup juju12, ta solution fonctionne parfaitement. (j'utilise devcpp)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2009 à 05:21
son code entier est du C99, rien qu'a voir ou il declare ses variables.
0
Rejoignez-nous