Hmm, di nuovo ciao!
Dopo essermi studiato l'intero capitolo delle funzioni relative al c++ non mi è ancora chiaro l'uso del tiporestituito..
Che tipo è una funzione che non restituisce alcun valore?...e che si intende?
Ad esempio questo programma che vi posto in seguito non dovrebbe restituire due tipi "float" ovvero som e prod?
Allora perchè è consentito l'uso della procedura void...che non dovrebbe restituire alcun valore?
Poi non mi è chiara un'altra cosa...
Anche se non inserisco le istruzioni "return" nel secondo programma...questo continua a funzionare.. il che significa che il programma in sostanza non necessita di alcun ritorno e che "logicamente" sarebbe coretto l'uso del tipo void...
Il problema è che non ne capisco il motivo...
Grazie a tutti!
codice:
/*
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[]);
void 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);
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];
}
}
void somprod(float v[],int n,float &som,float &prod)
{
int i;
som=0; prod=1;
for(i=0;i<n;i=i+2)
{
som=som + v[i];
}
for(i=1;i<n;i=i+2)
{
prod=prod *v[i];
}
}
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";
}
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);
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; prod=1;
for(i=0;i<n;i=i+2)
{
som=som + v[i];
}
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";
}