Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Massimo con sottoprogramma in C++
Forum - C/C++ - Massimo con sottoprogramma in C++

Avatar
cos.peluso (Normal User)
Newbie


Messaggi: 18
Iscritto: 03/01/2018

Segnala al moderatore
Postato alle 1:58
Mercoledì, 03/01/2018
Ciao raga, sono alle prime, se non primissime armi con C++ . Premetto che la mia conoscenza del programma non dovrà essere approfondita più di tanto, poichè è un programma che mi serve solo per un esame nel mio percorso di studio (ingegneria) , però la cosa mi interessa perchè mi ha sempre affascinato questo mondo della programmazione.
Ora veniamo al punto, vi posto la traccia dell'esercizio:
-Realizzare un programma che calcola il massimo tra due numeri interi inseriti da tastiera
 Mediante la realizzazione di un sottoprogramma
che calcoli il massimo

Io ho provato a scrivere questo codice in C++ , ma alla fine mi da come risultato sempre 0. Da quello che ho capito è perchè non faccio il giusto riferimento al sottoprogramma creato, quindi potrebbe essere che lui mi restituisce un valore default che è lo 0?
Altrimenti sono in alto mare perchè non ho idea di come procedere :(



Codice sorgente - presumibilmente C++

  1. //Massimo tra due numeri con sottoprogramma
  2. #include<iostream>
  3. using namespace std;
  4. void massimo(int a , int b){
  5.         int max;
  6.        
  7.         if (a>b)
  8.         max=a;
  9.         else
  10.         max=b;
  11. }
  12. int main(){
  13.         int a,b,max;
  14.         cout<<"Inserire 1 :" ;
  15.         cin>> a;
  16.         cout<<"Inserire 2 : ";
  17.         cin>> b;
  18.         massimo(a,b);
  19.         cout<< max<<endl;
  20. }


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:33
Mercoledì, 03/01/2018
Semplicemente la tua funzione deve restituire il valore con

return max;

e quindi non deve essere

void

ma

int

E nel main devi chiamare la funzione con

max=massimo(a,b);


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
cos.peluso (Normal User)
Newbie


Messaggi: 18
Iscritto: 03/01/2018

Segnala al moderatore
Postato alle 11:20
Mercoledì, 03/01/2018
Testo quotato

Postato originariamente da nessuno:

Semplicemente la tua funzione deve restituire il valore con

return max;

e quindi non deve essere

void

ma

int

E nel main devi chiamare la funzione con

max=massimo(a,b);



Ok, il codice scritto ora è questo e funziona, ti ringrazio :)

Codice sorgente - presumibilmente C++

  1. //Massimo tra due numeri con sottoprogramma
  2. #include<iostream>
  3. using namespace std;
  4. int massimo(int a , int b){
  5.         int max;
  6.        
  7.         if (a>b)
  8.         max=a;
  9.         else
  10.         max=b;
  11.         return max;
  12. }
  13. int main(){
  14.         int a,b,max;
  15.         cout<<"Inserire il primo valore : " ;
  16.         cin>> a;
  17.         cout<<"Inserire il secondo valore : ";
  18.         cin>> b;
  19.         max=massimo(a,b);
  20.         cout<<"Il massimo e' : " <<max<<endl;
  21.         system("PAUSE");
  22.         return 0;
  23. }



Quindi la differenza tra int e void qual'è precisamente ? Perchè non è spiegata in modo chiaro nel mio materiale :(
Da quello che ho capito se metto int la mia funzione restituisce il valore cambiato , ma se void non lo fa , la sua utilità qual'è?
Chiedo scusa se le domande possono sembrare banali ma sono abbastanza confuso

Ultima modifica effettuata da cos.peluso il 03/01/2018 alle 11:24
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 12:42
Mercoledì, 03/01/2018
Testo quotato

Postato originariamente da cos.peluso:
Quindi la differenza tra int e void qual'è precisamente ? Perchè non è spiegata in modo chiaro nel mio materiale :(
Da quello che ho capito se metto int la mia funzione restituisce il valore cambiato , ma se void non lo fa , la sua utilità qual'è?
Chiedo scusa se le domande possono sembrare banali ma sono abbastanza confuso



Allora, queste sono le basi di ogni linguaggio di programmazione, inutile tentare di fare programmi se non si sanno (non e' un rimprovero, ma un dato di fatto).

Comunque, detto brevemente:
int indica la variabile serve a contenere un VALORE NUMERICO INTERO
void indica una VARIABILE SENZA TIPO, ovvero nelle funzioni, prima del nome funzione indica che non verrà restiruito nessun tipo di dato, dentro le parentesi tonde (chiamate parametri) indica che alla funzione non veranno passate variabili di nessun genere.
L'utilità nel void sta nel fatto che spesso non hai bisogno di inviare parametri o di avere un valore di ritorno dalla tue funzioni. (Un utilità maggior poi lo vedrai con i puntatori a void (void*) ma per ora non pensarci).

Esistomo poi molti altri tipi di dato (char per contenere un VALORE PER RAPRESENTARE UN CARATTERE, double per RAPRESSENTARE UN NUMERO CON LA VIRGOLA ecc... )
Purtroppo il forum non è il luogo per spiegarti, anche se sommariamente, tutti i tipi di dato. Questo dovrebbe essere presentato se non la prima, al massimo nella seconda lezione di ogni linguaggio di programmazione perchè è la base senza di cui non si può sperare neppure di scrivere programmi di poche righe.

Ultima modifica effettuata da Mikelius il 03/01/2018 alle 12:44
PM Quote
Avatar
cos.peluso (Normal User)
Newbie


Messaggi: 18
Iscritto: 03/01/2018

Segnala al moderatore
Postato alle 14:16
Mercoledì, 03/01/2018
Testo quotato

Postato originariamente da Mikelius:

Testo quotato

Postato originariamente da cos.peluso:
Quindi la differenza tra int e void qual'è precisamente ? Perchè non è spiegata in modo chiaro nel mio materiale :(
Da quello che ho capito se metto int la mia funzione restituisce il valore cambiato , ma se void non lo fa , la sua utilità qual'è?
Chiedo scusa se le domande possono sembrare banali ma sono abbastanza confuso



Allora, queste sono le basi di ogni linguaggio di programmazione, inutile tentare di fare programmi se non si sanno (non e' un rimprovero, ma un dato di fatto).

Comunque, detto brevemente:
int indica la variabile serve a contenere un VALORE NUMERICO INTERO
void indica una VARIABILE SENZA TIPO, ovvero nelle funzioni, prima del nome funzione indica che non verrà restiruito nessun tipo di dato, dentro le parentesi tonde (chiamate parametri) indica che alla funzione non veranno passate variabili di nessun genere.
L'utilità nel void sta nel fatto che spesso non hai bisogno di inviare parametri o di avere un valore di ritorno dalla tue funzioni. (Un utilità maggior poi lo vedrai con i puntatori a void (void*) ma per ora non pensarci).

Esistomo poi molti altri tipi di dato (char per contenere un VALORE PER RAPRESENTARE UN CARATTERE, double per RAPRESSENTARE UN NUMERO CON LA VIRGOLA ecc... )
Purtroppo il forum non è il luogo per spiegarti, anche se sommariamente, tutti i tipi di dato. Questo dovrebbe essere presentato se non la prima, al massimo nella seconda lezione di ogni linguaggio di programmazione perchè è la base senza di cui non si può sperare neppure di scrivere programmi di poche righe.



Grazie mille per il chiarimento, ora la cosa è più chiara. Però forse mi sono spiegato male, io so cosa sono char, double, float ecc...
Il problema stava proprio nel fatto che non era spiegata in maniera chiara la differenza o comunque l'utilità del void rispetto a int o comunque quando usare uno o l'altro; per il resto sono abbastanza sicuro di conoscere almeno le basi per scrivere quelle poche righe che devo scrivere.
Ti ringrazio comunque per il chiarimento, gentilissimo :)

Testo quotato

Allora, queste sono le basi di ogni linguaggio di programmazione, inutile tentare di fare programmi se non si sanno (non e' un rimprovero, ma un dato di fatto).



Anche i rimproveri servono, li accetto volentieri se mi aiutano ahaha

Ultima modifica effettuata da cos.peluso il 03/01/2018 alle 14:18
PM Quote