Salve ragazzi.
Devo sviluppare una funzione che restituisca come parametri di uscita il prodotto degli elementi di indice dispari ed il prodotto degli elementi di indice pari e che restituisca come parametro di ritorno un valore booleano se il primo prodotto è maggiore del secondo.
I valori di cardinalità e dei singoli elementi vanno inseriti da tastiera.
Il programma che ho provato a sviluppare è il seguente:
#include <iostream>
using namespace std;
typedef int Vettore [100];
void Inserimento (Vettore& VET, int& N){
cout << "Inserire la cardinalita' del vettore:" << endl;
cin >> N;
cout << endl;
cout << "Inserire gli elementi del vettore.." << endl;
for (int i=0; i<N; i++){
cout << "Inserire l'elemento di posto V[" << i << "]: ";
cin >> VET[i];
}
}
bool Maggiore (const Vettore VET, const int N, int& ProdottoPari, int& ProdottoDispari, bool& maggiore){
maggiore = false;
ProdottoPari = 0;
ProdottoDispari = 0;
for (int i=0; i<N; i++){
if(i%2==0){
ProdottoPari *= VET[i];
}
else{
ProdottoDispari *= VET[i];
}
}
cout << "Il prodotto degli elementi di posto pari e':" << ProdottoPari << endl;
cout << "Il prodotto degli elementi di posto dispari e': " << ProdottoDispari << endl;
cout << endl;
if (ProdottoDispari > ProdottoPari){
maggiore = true;
cout << "Il prodotto dei posti dispari e' maggiori di quello dei pari.";
}
return maggiore;
}
int main (){
Vettore VET;
int N;
int ProdottoPari;
int ProdottoDispari;
int x;
bool maggiore;
Inserimento (VET, N);
Maggiore (VET, N, ProdottoPari, ProdottoDispari, maggiore)
system ("PAUSE");
return 0;
}
La funzione di inserimento di cardinalità ed elementi dei vettori va bene, ho dei problemi con la funzione booleana, cioè:
bool Maggiore (const Vettore VET, const int N, int& ProdottoPari, int& ProdottoDispari, bool& maggiore){
maggiore = false;
ProdottoPari = 0;
ProdottoDispari = 0;
for (int i=0; i<N; i++){
if(i%2==0){
ProdottoPari *= VET[i];
}
else{
ProdottoDispari *= VET[i];
}
}
cout << "Il prodotto degli elementi di posto pari e':" << ProdottoPari << endl;
cout << "Il prodotto degli elementi di posto dispari e': " << ProdottoDispari << endl;
cout << endl;
if (ProdottoDispari > ProdottoPari){
maggiore = true;
cout << "Il prodotto dei posti dispari e' maggiori di quello dei pari.";
}
return maggiore;
}
Partendo dal presupposto che ho sicuramente sbagliato la gestione della variabile booleana (soprattutto a fronte di ciò che devo ottenere), ho sbagliato anche l'algoritmo di calcolo del prodotto dei posti pari e dispari. Infatti ho un attimo estrapolato l'algoritmo che ho sviluppato con un ciclo if else, l'ho eseguito a parte e mi da solo il valore degli elementi di posto dispari, mentre il valore del prodotto degli elementi di posto pari mi da sempre 0.
Volevo chiedervi cosa ho sbagliato.
Grazie mille.