Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++] Programma che chiede ore e minuti e le visualizza in formato ore:minuti

    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".

    codice:
    #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;
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,306
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    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);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Non ha proprio chiaro come funziona un programma...

  6. #6
    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

  7. #7
    Dopo le modifiche che mi avete consigliato, il codice si presenta così:

    codice:
    #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
    ma i consigli di oregon non hanno funzionato

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,306
    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.

    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Ti ringrazio, ora è tutto più chiaro
    A tutti una buona giornata

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.