Partage
  • Partager sur Facebook
  • Partager sur Twitter

Produit scalaire de deux vecteurs (tableau)

aidé moi

5 janvier 2014 à 19:03:19

salut tout le monde !! :)

Ecrire un programme qui calcule le produit scalaire de deux vecteurs d'entiers U et V (de même dimension).

Exemple:

 / \ / \ | 3 2 -4 | * | 2 -3 5 | = 3*2+2*(-3)+(-4)*5 = -20 \ / \ /
Ma solution:
#include<stdio.h>
#include<conio.h>
main ()
{
     int t[3],d[3],p;
     short i,j;
    //la saisie
     printf("le tableau 1:\n");
     for(i=0;i<=2;i++)
     {printf("t[%d]=",i);
     scanf("%d",&t[i]);}
     printf("le tableau 2:\n");
     for(j=0;j<=2;j++)
     {printf("t[%d]=",j);
     scanf("%d",&t[j]);}
    //le calcule
      for(i=0;i<=2;i++)
      for(j=0;j<=2;j++){
      p=0;
      p=p+(t[i]*t[j]);}
     //le resultat
      printf("le produit est: %d",p);
      getch ();
      return 0;
      }
Ma question:
la solution que j'ai donner ne calcule pas le vrai produit (il me donne un nombre quelconque ),est je comprends pas pourquoi!!!!
et Merci pour votre réponse :)
  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2014 à 19:39:46

Ton calcul n'a pas besoin de deux boucles for pour s'effectuer, et tu remets p à 0 à chaque itération dans ta boucle for ce qui fais que ton programme va t'afficher juste le produit des deux derniers termes des vecteurs.
  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2014 à 21:09:26

Darkyzz a écrit:

Ton calcul n'a pas besoin de deux boucles for pour s'effectuer, et tu remets p à 0 à chaque itération dans ta boucle for ce qui fais que ton programme va t'afficher juste le produit des deux derniers termes des vecteurs.

veux tu dire que je dois faire comme ca:
  for(p=0,i=0;i<=2;i++){
      p=p+(t[i]*t[j]);}


mais toujours j'obtiens pas de résultats :(
  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2014 à 21:21:46

Commence par ne pas utiliser de scanf et par faire marcher ton code avec des tableaux écrit directement dans le programme comme

int[] t = {1, 2, 3};
int[] d = {3, 2, 1};

Dans ta boucle, tu dois utiliser le même index pour t et d, pas un i et j différents :)

  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2014 à 23:05:36

Darkyzz a écrit:

Commence par ne pas utiliser de scanf et par faire marcher ton code avec des tableaux écrit directement dans le programme comme

int[] t = {1, 2, 3};
int[] d = {3, 2, 1};

Dans ta boucle, tu dois utiliser le même index pour t et d, pas un i et j différents :)

Merci pour votre réponse :) mais a propos du scanf que j'ai utilisé, il est nécessaire dans la saisie sinon il va pas faire la lecture de tableau

  • Partager sur Facebook
  • Partager sur Twitter
19 décembre 2023 à 8:47:29

Je pense dans ta première réponse tu as remplis le meme tableau deux fois , même tu as changé l'indice i par j mais ça sert à rien. Essayer  scanf("%d",&d[j]) dans le remplissage de tableau 2 

Et dans le calcule du produit scalaire tu n'a pas besoin de deux boucle juste changé le t par d

for(p=0,i=0;i<=2;i++){
p=p+(t[i]*d[i]);}
  • Partager sur Facebook
  • Partager sur Twitter
19 décembre 2023 à 11:37:51

Après 9 ans, j'ose espérer que la réponse a été trouvée :)

Même si c'est gentil de poster.

Je ferme ici pour déterrage.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)