PDA

Visualizza la versione completa : [C++]Correzione programma somma elementi posto pari e prodotto elementi posto dispari


f4t4l1ty
23-01-2008, 14:11
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!?!



/*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";
}

f4t4l1ty
23-01-2008, 14:15
Credo che forse il programma che ho postato prima fosse molto sbagliato...
Che ne pensate di quest'altro?
Per ora non funzionano entrambi!



/*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";
}

oregon
23-01-2008, 15:01
Una questione fondamentale ... una funzione restituisce un solo valore ... non puoi scrivere

return som;
return prod;

... altrimenti, devi usare gli argomenti passati per puntatore ...

pallinopinco
23-01-2008, 15:10
O restituisci una struttura o passi i risultati per puntatore.

Loading