Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    20

    [C++]Correzione programma somma elementi posto pari e prodotto elementi posto dispari

    Non mi stampa il valore corretto relativo al prodotto degli elmenti dispari del vettore...
    Sapreste dirmi l'(gli)errore(i)?
    Grazie anticipatamente...
    Speriamo che sia la volta buona per capire le funzioni!?!

    codice:
    /*Prova 2
    Prova 2*
    Sia assegnato in ingresso, da tastiera, un vettore di reali V.
    Si scriva un programma che calcoli la somma som degli elementi di posto pari ed il prodotto prod degli elementi 
    di posto dispari del vettore V. Si stampino quindi il vettore V ed i valori di som e prod.
    Il programma deve essere articolato in funzioni (ad es.: input, output, somprod).
    
    Esempio
    INPUT:	V =  2.1 4.2 1.3 3.2 7.1 6.3
    OUTPUT:	V =  2.1 4.2 1.3 3.2 7.1 6.3		som  = 10.5		prod = 84.7
    */
    
    #include<iostream>
    using namespace std;
    #include<stdlib.h>
    #include<iomanip>
    
    //Prototipi delle funzioni
    void input(int &n,float v[]);
    float somprod(float v[],int n,float som,float prod);
    void output(float v[],int n,float som,float prod);
    
    
    int main()
    {
        int n;
        float v[100];
        float som;
        float prod;
        
    //Chiamate della funzione
    
    input(n,v);
    som = somprod(v,n,som,prod);
    prod = somprod(v,n,som,prod);
    output(v,n,som,prod);
        
        cout<<"\n\n";
        
        system("PAUSE");
        return 0;
    }
    
    void input(int &n,float v[])
    {
        int i;
        
        cout<<"Assegna un valore intero ad n valori del vettore\n";
        cin>>n;
        
        cout<<"Assegna "<<n<<"valori reali al vettore\n";
        for(i=0;i<n;i++)
        {
            cin>>v[i];
        }
    }
    
    float somprod(float v[],int n,float som,float prod)
    {
        int i;
        som=0; 
        
        for(i=0;i<n;i=i+2)
          {
              som=som + v[i];
          }
          
        prod=1;
        
        for(i=1;i<n;i=i+2)
        {
            prod=prod *v[i];
        } 
    return som; 
    return prod;
    
    }
    
    void output(float v[],int n,float som,float prod)
    {
        int i;
        cout<<"I valori del vettore sono\n";
        for(i=0;i<n;i++)
        {
            cout<<v[i]<<"\n";
        }
        cout<<"La somma dei valori di posto pari del vettore e\' ";
        cout<<setprecision(3)<<som<<"\n";
        cout<<"Il prodotto dei valori di posto dispari del vettore e\' ";
        cout<<setprecision(3)<<prod<<"\n";
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    20
    Credo che forse il programma che ho postato prima fosse molto sbagliato...
    Che ne pensate di quest'altro?
    Per ora non funzionano entrambi!

    codice:
    /*Prova 2
    Prova 2*
    Sia assegnato in ingresso, da tastiera, un vettore di reali V.
    Si scriva un programma che calcoli la somma som degli elementi di posto pari ed il prodotto prod degli elementi 
    di posto dispari del vettore V. Si stampino quindi il vettore V ed i valori di som e prod.
    Il programma deve essere articolato in funzioni (ad es.: input, output, somprod).
    
    Esempio
    INPUT:	V =  2.1 4.2 1.3 3.2 7.1 6.3
    OUTPUT:	V =  2.1 4.2 1.3 3.2 7.1 6.3		som  = 10.5		prod = 84.7
    */
    
    #include<iostream>
    using namespace std;
    #include<stdlib.h>
    #include<iomanip>
    
    //Prototipi delle funzioni
    void input(int &n,float v[]);
    float somprod(float v[],int n);
    void output(float v[],int n,float som,float prod);
    
    
    int main()
    {
        int n;
        float v[100];
        float som;
        float prod;
        
    //Chiamate della funzione
    
    input(n,v);
    som = somprod(v,n);
    prod = somprod(v,n);
    output(v,n,som,prod);
        
        cout<<"\n\n";
        
        system("PAUSE");
        return 0;
    }
    
    void input(int &n,float v[])
    {
        int i;
        
        cout<<"Assegna un valore intero ad n valori del vettore\n";
        cin>>n;
        
        cout<<"Assegna "<<n<<"valori reali al vettore\n";
        for(i=0;i<n;i++)
        {
            cin>>v[i];
        }
    }
    
    float somprod(float v[],int n)
    {
        int i;
        float som;
        float prod;
        som=0; 
        
        for(i=0;i<n;i=i+2)
          {
              som=som + v[i];
          }
          
        prod=1;
        
        for(i=1;i<n;i=i+2)
        {
            prod=prod *v[i];
        } 
    return som; 
    return prod;
    
    }
    
    void output(float v[],int n,float som,float prod)
    {
        int i;
        cout<<"I valori del vettore sono\n";
        for(i=0;i<n;i++)
        {
            cout<<v[i]<<"\n";
        }
        cout<<"La somma dei valori di posto pari del vettore e\' ";
        cout<<setprecision(3)<<som<<"\n";
        cout<<"Il prodotto dei valori di posto dispari del vettore e\' ";
        cout<<setprecision(3)<<prod<<"\n";
    }

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Una questione fondamentale ... una funzione restituisce un solo valore ... non puoi scrivere

    return som;
    return prod;

    ... altrimenti, devi usare gli argomenti passati per puntatore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    O restituisci una struttura o passi i risultati per puntatore.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

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 © 2024 vBulletin Solutions, Inc. All rights reserved.