Funzione bool - Prodotti tra elementi del vettore

di il
6 risposte

Funzione bool - Prodotti tra elementi del vettore

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.

6 Risposte

  • Re: Funzione bool - Prodotti tra elementi del vettore

    Non capisco perché dichiari le variabili nelle parentesi delle funzioni, sarà che ho iniziato pure io da poco. Comunque se cerchi di moltiplicare 0 per un elemento del vettore, non vorrei rovinarti la sorpresa, ma rimane 0. ProdottpPari=1; ProdottoDispari=1 dovrebbe andare. E poi non serve che usi una variabile bool, basta che fai return(ProdottoDispari>ProdottoPari)?true:false; ma alla fine è uguale
  • Re: Funzione bool - Prodotti tra elementi del vettore

    ANDPRI ha scritto:


    Non capisco perché dichiari le variabili nelle parentesi delle funzioni, sarà che ho iniziato pure io da poco. Comunque se cerchi di moltiplicare 0 per un elemento del vettore, non vorrei rovinarti la sorpresa, ma rimane 0. ProdottpPari=1; ProdottoDispari=1 dovrebbe andare. E poi non serve che usi una variabile bool, basta che fai return(ProdottoDispari>ProdottoPari)?true:false; ma alla fine è uguale
    La dichiarazione nelle parentesi delle funzioni l'ho sempre utilizzata e mi trovo bene, poi non so se c'è altro modo.
    Giusto sul discorso dello 0, ho sbagliato ad inizializzare la variabile, che scemo che sono!

    La variabile booleana la devo usare perché è richiesto nel testo dell'esercizio.

    Inizializzando le variabili correttamente, il programma va bene. Che errore stupido..
  • Re: Funzione bool - Prodotti tra elementi del vettore

    Ok come vuoi. Io le inizializzo subito dopo, all'inizio della funzione, come delle variabili qualsiasi, come nel main
  • Re: Funzione bool - Prodotti tra elementi del vettore

    Ma che vuol dire

    "perché dichiari le variabili nelle parentesi delle funzioni"

    Cosa intendete??
  • Re: Funzione bool - Prodotti tra elementi del vettore

    Nelle parentesi di bool maggiore ha scritto int& ProdottoDispari, int& ProdottoPari, bool& maggiore e io non so a cosa serva perché io le dichiaro all'interno delle funzioni
  • Re: Funzione bool - Prodotti tra elementi del vettore

    Sono dei parametri della funzione che non servono. Effettivamente devono essere delle variabili locali.
Devi accedere o registrarti per scrivere nel forum
6 risposte