PDA

Visualizza la versione completa : [C++] Richiesta ore e minuti e visualizzazione in formato "ore:minuti"


Mr Sasquatch
18-07-2011, 11:52
Gentilmente, cosa c'è che non va nel mio codice?
Il programma dovrebbe chiedere le ore e i minuti e poi stamparle con i due punti in mezzo, per esempio se quando chiede le ore scrivo 13 e quando chiede i minuti scrivo 54, l'output finale dovrebbe essere "13:54".



#include <iostream>
using namespace std;
void watch(int, int)
int main()
{
int hours;
int min;
cout << "Enter the number of hours ";
cin >> hours;
cout << "Enter the number of minutes ";
cin >> min;
return 0;
}

void watch(int hours, int min)
{
cout << hours<<":"<<min;
}

LeleFT
18-07-2011, 11:59
Nel main non richiami da nessuna parte (andrebbe fatto alla fine), la procedura "watch()" che hai costruito per visualizzare l'ora...

PS: per il futuro, sei tu che devi dire cosa c'è che non va... nel senso di specificare qual è il comportamento anomalo del programma. In questo caso avresti dovuto dire che il programma non ti stampa l'ora come te la aspetti, o, meglio, che non stampa nulla dopo aver chiesto i dati.


Ciao. :ciauz:

Mr Sasquatch
18-07-2011, 12:50
Ma quindi quando eseguo il programma non viene eseguito watch? Credevo che finito il main, che raccoglie i dati, partisse watch che stampa l'ora...
Comunque l'IDE che uso, Codeblocks, mi dà un errore alla 5° riga se eseguo il programma che ho scritto sopra:
error: expected initializer before 'int'
Dunque, scusatemi, ma come faccio a richiamare watch nel main?

oregon
18-07-2011, 12:54
Originariamente inviato da Mr Sasquatch
Ma quindi quando eseguo il programma non viene eseguito watch? Credevo che finito il main, che raccoglie i dati, partisse watch che stampa l'ora...

Non hai ben chiaro come funziona il C/C++ ...

All'avvio, viene eseguita *solo* la funzione main.

Tutto quello che viene richiamato dal suo interno, viene a sua volta eseguito.

Quindi, se non chiami la watch all'interno del main con

watch();

questa non sarà mai eseguita.


Comunque l'IDE che uso, Codeblocks, mi dà un errore alla 5° riga se eseguo il programma che ho scritto sopra:
error: expected initializer before 'int'

Nella riga

void watch(int, int)

manca il ; finale (dato che è solo il prototipo della funzione). Quindi sarà

void watch(int, int);

Dark867
18-07-2011, 13:51
Non ha proprio chiaro come funziona un programma...

Mr Sasquatch
18-07-2011, 14:56
Originariamente inviato da Dark867
Non ha proprio chiaro come funziona un programma...
Ho iniziato 2 lunedì fa da solo, non penso che ci sia da suicidarsi :fagiano:

Mr Sasquatch
18-07-2011, 15:08
Dopo le modifiche che mi avete consigliato, il codice si presenta così:



#include <iostream>
using namespace std;
void watch(int, int);
int main()
{
int hours;
int min;
cout << "Enter the number of hours ";
cin >> hours;
cout << "Enter the numbers of minutes ";
cin >> min;
watch();
return 0;
}

void watch(int hours, int min)
{
cout << hours<<":"<<min;
}



E gli errori sono:

In funcion 'int main()':
4 error: too few arguments to funcion 'void watch(int, int)'
13 error: at this point in file

(ho provato con 2 IDE)

Ora, se pensate che debba ripassarmi gli ultimi capitoli che ho letto, ditemelo pure :D
ma i consigli di oregon non hanno funzionato

LeleFT
18-07-2011, 15:14
Eh... non devi prendere alla lettera i suggerimenti che ti vengono dati... sono suggerimenti: servono solo a farti capire cosa devi fare.

La tua procedura "watch()" prende due parametri... quindi, quando la richiami, devi passarglieli.



watch(hours, min);


Del resto te lo dice anche il compilatore (i messaggi vanno letti e, soprattutto, capiti):



too few arguments to funcion 'void watch(int, int)'


Che tradotto significa: "troppo pochi argomenti alla funzione 'void watch(int, int)'". Perchè, in effetti, la funzione se ne aspetta due di argomenti e tu non ne passi nemmeno uno.


Ciao. :ciauz:

Mr Sasquatch
18-07-2011, 15:23
Ti ringrazio, :D :D ora è tutto più chiaro
A tutti una buona giornata :ciauz:

Loading