Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    20

    [C++]Funzioni.Scelta del tipo restituito..Tipo void, tipo float?

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

  2. #2
    Che tipo è una funzione che non restituisce alcun valore?
    void

    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?
    Perché i valori li restituisci mediante i parametri passati per indirizzo, per intenderci puoi scrivere la funzione somma in diversi modi:

    float somma(float a, float b)

    void somma(float a, float b, float &risultato)

    Ovviamente vanno richiamati in modo diverso:

    risultato = somma(10.4, 11.0);

    e

    somma(10.4, 11.0, risultato);
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.