Prodotto scalare tra vettori

di il
7 risposte

Prodotto scalare tra vettori

Salve, sto provando a strutturare un programma per la stampa di vettori e per l'individuazione del relativo prodotto scalare. Ho improntato il programma e la prima parte è corretta, ho un problema per quanto riguarda l'operazione di prodotto scalare, infatti il risultato che viene stampato è errato. Qualcuno saprebbe dirmi il perchè? Grazie mille
#include<iostream>
using namespace std;
#define LEN 10

int main (){
int b , a , A[LEN] , B[LEN] , i , n ,p_sca, sum;

cout<<"Inserisci il numero di elementi che i vettori A e B devono contenere : "<<endl;
cin >> n ;
for (i=0 ; i<n ; i++){
cout<< "Inserisci il "<< i+1 << "° elemento del vettore A"<<endl;
cin>> A ;
cout<< "Inserisci il "<< i+1 << "° elemento del vettore B"<<endl;
cin>> B ;
}
cout<<"Ecco gli elementi del vettore A:"<<endl;
for (i=0 ; i<n ; i++){
cout<< A ;
cout<<" ";
}
cout<<endl;
cout<<"Ecco gli elementi del vettore B:"<<endl;
for (i=0 ; i<n ; i++){
cout<< B ;
cout<<" ";
}
cout<<endl;
cout<<"Procediamo ora con il calcolo del loro prodotto scalare:"<<endl;
for(i=0 ; i<n ; i++){
p_sca=A*B ;
sum=p_sca+p_sca[i++];
}
cout<<sum<<endl;

7 Risposte

  • Re: Prodotto scalare tra vettori

    Posta il codice tra gli appositi tag, altrimenti non si capisce niente!
  • Re: Prodotto scalare tra vettori

    #include <iostream>
    using namespace std;
    
    int main(void){
    	int i, n;
    	long prodotto_scalare = 0;
    	
    	cout<<"Inserisci il numero di elementi che i vettori A e B devono contenere : "<<endl;
    	cin >> n;
    	int * A = new int(n);
    	int * B = new int(n);
    	for (i=0 ; i<n ; i++){
    		cout<< "Inserisci il "<< i+1 << "° elemento del vettore A"<<endl;
    		cin>> A[i] ;
    		cout<< "Inserisci il "<< i+1 << "° elemento del vettore B"<<endl;
    		cin>> B[i] ;
    	}
    	cout<<"Ecco gli elementi del vettore A:"<<endl;
    	for (i=0 ; i<n ; i++)
    		cout<< A[i] << " ";
    	cout<<endl;
    	cout<<"Ecco gli elementi del vettore B:"<<endl;
    	for (i=0 ; i<n ; i++){
    		cout<< B[i] ;
    		cout<<" ";
    	}
    	cout<<endl;
    	cout<<"Procediamo ora con il calcolo del loro prodotto scalare:"<<endl;
    	for(i=0 ; i<n ; i++)
    		prodotto_scalare += A[i]* B[i];
    	cout<<prodotto_scalare<<endl;
    
    	return 0;
    }
  • Re: Prodotto scalare tra vettori

    SBAGLIATO: il prodotto scalare di due vettori NON LO CALCOLI in quel modo!

    E il codice nemmeno compila!
  • Re: Prodotto scalare tra vettori

    migliorabile ha scritto:


    SBAGLIATO: il prodotto scalare di due vettori NON LO CALCOLI in quel modo!
    Perché no? Sebbene lo spazio vettoriale di Oportet_99 sia definito in Z piuttosto che in R, la procedura non mi pare scorretta.

    Il prodotto scalare di due vettori in R3 vale: xa·xb + ya·yb + za·zb

    Dunque, se:
    float a[3];
    float b[3];
    si può scrivere:
    float prodotto_scalare = a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
    o anche:
    float prodotto_scalare = 0.0f;
    for ( int i = 0 ; i < 3 ; i++ ) prodotto_scalare += a[i]*b[i];
    No?
  • Re: Prodotto scalare tra vettori

    ADDESSO hai scritto un pezzetto di codice che HA senso!

    Nel tuo primo post avevi scritto:
    
    int b, a, A[LEN], B[LEN], i, n, p_sca, sum;
    ...
    for(i=0 ; i<n ; i++){
       p_sca=A*B	;
       sum=p_sca+p_sca[i++];
    }
    
    e QUESTO codice NON HA senso!

    Furbacchione, poi lo avevi corretto
  • Re: Prodotto scalare tra vettori

    La fiera del misunderstanding!
  • Re: Prodotto scalare tra vettori

    Nippolo ha scritto:


    La fiera del misunderstanding!
    Gia!

    migliorabile ha scritto:


    Furbacchione, poi lo avevi corretto
    Se dici a me, ho solo aggiunto i code tags
    ma il fatto è che io pensavo ti riferissi al codice di Weierstrass

    A proposito, già che ci siamo, ecco perché ho dovuto aggiungere i tags:

    for ( int i = 0 ; i < 3 ; i++ ) prodotto_scalare += a*b;
    for ( int i = 0 ; i < 3 ; i++ ) prodotto_scalare += a[i]*b[i];
    Il codice che ho scritto in entrambe le linee è esattamente identico ma senza i tags non vengono rappresentati i campi degli indici.
    Provare per credere. Basta visualizzare l'anteprima senza dover pubblicare un post.
    Quindi, inutile leggere un codice che è stato inserito senza i code tags.
Devi accedere o registrarti per scrivere nel forum
7 risposte