Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32

    prodotto scalare (vettore per vettore) c++

    Ragazzi chiedo il vostro aiuto! deo fare il prodotto scalare tra due vettori..il programma procede bene inizializza bene gli array ma mi sbaglia il rpodotto scalare non riesco a capire il motivo! vi posto sotto il codice! grazie in anticipo!
    codice:
    #include <iostream>
    #define LEN 20
    
    
    using namespace std;
    
    
    int main () {
    
    
    int	A[LEN], B[LEN];
    int i,n,sum;
    
    
    cout<<"inserisci il numero degli elementi dell'array A"<<endl;
    
    
    cin>>n;
    
    
    
    
    
    
    for ( i=0; i<n; i++){
    cout<<"inserisci il ["<<i+1<<"] valore dell'array"<<endl;	
    cin>>A[i];
    }
    for (i=0;i<n;i++){
    
    
    cout<<"l'array e'["<<A[i]<<"]"<<endl;
    }
    cout<<"inserisci il numero degli elementi dell'array B"<<endl;
    	
    cin>>n;
    
    
    for ( i=0; i<n; i++){
    	cout<<"inserisci il ["<<i+1<<"] valore dell'array"<<endl;
    	
    	cin>>B[i];
    }
    for (i=0;i<n;i++){
    
    
    cout<<"l'array e'["<<B[i]<<"]"<<endl;
    }
    for (int i=0; i<n; i++){
    	sum=0;
    	sum+=A[i]*B[i];
    	i=i+1;
    }
    
    
    
    
    cout<<"il prodotto scalare e'"<<sum<<""<<endl;
    
    
    system ("pause");
    return 0;
    
    
    }
    Ultima modifica di MItaly; 20-03-2015 a 14:38 Motivo: Tag CODE

  2. #2
    codice:
    for (int i=0; i<n; i++){
    	sum=0;
    	sum+=A[i]*B[i];
    	i=i+1;
    }
    Stai riazzerando sum prima di sommare ciascun elemento...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    codice:
    for (int i=0; i<n; i++){
        sum=0;
        sum+=A[i]*B[i];
        i=i+1;
    }
    Stai riazzerando sum prima di sommare ciascun elemento...
    giusto che stupido non ci avevo pensato! Grazie mille!

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    codice:
    for (int i=0; i<n; i++){
        sum=0;
        sum+=A[i]*B[i];
        i=i+1;
    }
    Stai riazzerando sum prima di sommare ciascun elemento...
    Inoltre incrementi 2 volte i.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Inoltre incrementi 2 volte i.
    ragazzi ok il programma funziona ora l'ho fatto con le funzioni ma il programma parte ma ad un certo punto s'interrompe ora vi posto il tutto con la funzione spero in un vostro aiuto!

    codice:
    #include <iostream>
    #define LEN 20
    using namespace std;
    int scalare(int A[LEN],int B[LEN],int sum);
    int main () {


    int A[LEN], B[LEN];
    int i,n,sum;


    cout<<"inserisci il numero degli elementi dell'array A"<<endl;
    cin>>n;


    for ( i=0; i<n; i++){
    cout<<"inserisci il ["<<i+1<<"] valore dell'array"<<endl;
    cin>>A[i];
    }


    cout<<"inserisci il numero degli elementi dell'array B"<<endl;
    cin>>n;


    for ( i=0; i<n; i++){
    cout<<"inserisci il ["<<i+1<<"] valore dell'array"<<endl;
    cin>>B[i];
    }


    scalare (A,B,sum);


    cout<<"il prodotto scalare e'"<<sum<<""<<endl;
    system ("pause");
    return 0;
    }


    int scalare (int A[LEN],int B[LEN],int sum){
    sum=0;
    int n;
    for (int i=0; i<n; i++){
    sum+=A[i]*B[i];
    i=i+1;
    }
    return sum;
    }

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Non hai chiaro il concetto di scope. Devi andartelo a studiare.
    Ci sono alcuni errori concettuali gravi: il valore di sum non cambierà nel main; nella funzione scalare dichiari n, questa non ha nessun rapporto con n nel main e assumerà un valore random.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Così è corretto, vedi se capisci perché è differente dal tuo. (Oltre al fatto che come avevo detto incrementavi 2 volte i)
    codice:
    #include <iostream>
    #define LEN 20
    
    
    using namespace std;
    
    
    int scalare(int A[LEN], int B[LEN], int len);
    
    
    int main () {
        int    A[LEN], B[LEN];
        int i,n,sum;
        cout<<"Inserisci il numero degli elementi dei vettori: ";
        cin>>n;
    
    
        for ( i=0; i<n; i++){
            cout<<"A["<<i+1<<"]: ";    
            cin>>A[i];
        }
    
    
        for ( i=0; i<n; i++){
            cout<<"B["<<i+1<<"]: ";
            cin>>B[i];
        }
    
        sum = scalare(A,B,n);
        cout<<"il prodotto scalare e'"<<sum<<endl;
        //Io ho tolto la chiamata a system
        //per utilizzarla comunque dovresti includere cstdlib
        return 0;
    }
    
    
    int scalare (int A[LEN], int B[LEN], int len){
        int sum = 0;
        for (int i=0; i<len; i++){
            sum+=A[i]*B[i];
        }
        return sum;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Così è corretto, vedi se capisci perché è differente dal tuo. (Oltre al fatto che come avevo detto incrementavi 2 volte i)
    codice:
    #include <iostream>
    #define LEN 20
    
    
    using namespace std;
    
    
    int scalare(int A[LEN], int B[LEN], int len);
    
    
    int main () {
        int    A[LEN], B[LEN];
        int i,n,sum;
        cout<<"Inserisci il numero degli elementi dei vettori: ";
        cin>>n;
    
    
        for ( i=0; i<n; i++){
            cout<<"A["<<i+1<<"]: ";    
            cin>>A[i];
        }
    
    
        for ( i=0; i<n; i++){
            cout<<"B["<<i+1<<"]: ";
            cin>>B[i];
        }
    
        sum = scalare(A,B,n);
        cout<<"il prodotto scalare e'"<<sum<<endl;
        //Io ho tolto la chiamata a system
        //per utilizzarla comunque dovresti includere cstdlib
        return 0;
    }
    
    
    int scalare (int A[LEN], int B[LEN], int len){
        int sum = 0;
        for (int i=0; i<len; i++){
            sum+=A[i]*B[i];
        }
        return sum;
    }

    capito! Grazie Mille dell'aiuto!!!

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da crasty7 Visualizza il messaggio
    capito! Grazie Mille dell'aiuto!!!
    Sicuro che hai capito?!
    Prego
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.