Funzione di tipo void - come si da in output?

di Anonimizzato31708 il
9 risposte
Buonasera, sto sviluppando un programma e ho scritto delle funzioni di tipo void dove vengono effettuati dei calcoli. Come faccio a darle in output? Mi ricordo che serviva la & ma non va lo stesso . Lascio il programma qui:

#include <iostream>
#include <stdlib.h>
using namespace std;

void caricamento(int V[], int dim){

int i=0;

for (i=0; i<dim; i++) {
    cin>>V[i];
}

}
/*
void stampa(int V[], int dim){

int i=0;

for (i=0, i<dim, i++) {
    cout<<V[i];
}

} */

void funzione_massimo(int V[], int dim) {

int massimo, i=0;
    massimo=V[0];

  for (i=0; i<dim; i++) {
        if (V[i]>massimo) {
           massimo=V[i];
        }
  }
}
void funzione_minimo(int V[], int dim){

int minimo, i=0;

 minimo=V[0];

  for (i=0; i<dim; i++) {
        if (V[i]<minimo) {
            minimo=V[i];
        }
  }
}
void massimo_minimo(int V[], int dim) {

int massimo, i=0, minimo;

 massimo=V[0];
 minimo=V[0];


  for (i=0; i<dim; i++) {
        if (V[i]>massimo) {
           massimo=V[i];
        }
        else {
            minimo=V[i];

        }
  }
}
int main () {
   int A[10], dimensione, scelta;

   cout<<"Inserisci quanti numeri vuoi mettere: "<<endl;
   cin>>dimensione;

   cout<<"Inserisci i numeri: "<<endl;
   caricamento(A, dimensione);

   	cout<<"---SCEGLI COSA VUOI TROVARE! :) ---"<<endl;
	cout<<"1) Massimo"<<endl;
	cout<<"2) Minimo"<<endl;
	cout<<"3) Massimo e minimo"<<endl;

	cin>>scelta;

	switch (scelta) {

		case 1: cout<<"Il massimo e': "<<funzione_massimo(A, dimensione)<<endl;
		break;
		case 2: cout<<"Il minimo e': "<<funzione_minimo(A, dimensione)<<endl;
		break;
		case 3: cout<<"Il massimo e il minimo sono"<<massimo_minimo(A, dimensione)endl;
		break;

}

    return 0;

}
Grazie

9 Risposte

  • PS: Massimo sarebbe il numero maggiore mentre Minimo quello minore.
  • 
    void funzione_massimo(int V[], int dim, int *max) {
    
    ...
    
        *max = massimo;
    }
    
    
        case 1:
            int max;
            funzione_massimo(A, dimensione, &max);
            cout << "Il massimo e': " << max << endl;
            break;
    
    OPPURE
    
    void funzione_massimo(int V[], int dim, int &max) {
    
    ...
    
        max = massimo;
    }
    
    
        case 1:
            int max;
            funzione_massimo(A, dimensione, max);
            cout << "Il massimo e': " << max << endl;
            break;
    

    Il resto lo fai tu ... ma non ti serve una funzione differente per il minimo e il massimo, ti bastano le prime due
  • Ma devo per forza mettere quel max? Posso farlo anche senza?
  • Il parametro è necessario. Studia le funzioni sul tuo libro
  • Ma facendo come hai fatto tu poi non devo togliere massimo=V[0]?
  • No, cosa c'entra? Mi sa che non hai capito
  • Cioè, devo scrivere max=massimo che è un aggiunta praticamente? Perchè io il massimo c'è l'ho già. Non capisco questa cpsa
  • La riga che ti ho indicato va scritta alla fine della funzione void in modo che il valore della variabile massimo (che è locale alla funzione) sia copiata nel parametro passato per puntatore e quindi reso visibile al main. Il main non vede la variabile massimo, ti è chiaro questo?
  • Chiaro, ho risolto grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte