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

    [C++] Orologio senza time.h

    Salve a tutti. Scusate la mia richiesta da newbie, ma mi sono appena registrato e studio da poco il C++ e spero che la vostra sapienza mi aiuti
    Il mio "amato" professore di informatica mi ha dato da fare un programma che simula un orologio all'infinito, ma senza time.h (non la sappiamo usare) .
    Se eseguo il programma, mi stampa all'infinito "L'ora e' 22936920..." e altri numeri. Che fare?

    Questo è quello che ho fatto:

    codice:
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    int main()
    {
        int ore=0,minuti=0,secondi=0;
        for ( ; ; )
        {
            if(secondi==60)
            {
                           minuti++;
                           secondi=secondi-60;
            }
            else
            secondi++;
            if(minuti==60)
            {
                          minuti=minuti-60;
                          ore++;
            }
            if(ore==24)
            ore=ore-24;
        printf("L'ora e' %d.%d.%d\n",&ore,&minuti,&secondi);
    }
    return 0;
    }
    Grazie a chi mi aiuterà!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    15
    nella riga

    printf("L'ora e' %d.%d.%d\n",&ore,&minuti,&secondi);

    non devi mettere l'& davanti alle variabili, perchè cosi ti restituisce l'indirizzo della variabile, non il valore...

    sostituisci quella riga con questa, in cui non ci sono gli &


    printf("L'ora e' %d.%d.%d\n",ore,minuti,secondi);

    Ho provato e funziona... ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    15
    Inoltre al posto del codice

    if(secondi==60)
    {
    minuti++;
    secondi=secondi-60;
    }
    else
    secondi++;


    metti questo:

    secondi++;

    if(secondi==60)
    {
    minuti++;
    secondi=secondi-60;
    }

    perchè altrimenti ti visualizza anche il secondo "60", che non esiste, e poi riparte da 0.

    Ciao

  4. #4
    Grazie mille!!!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    ho provato anch'io e mi da un ciclo infinito!! come mai?

  6. #6
    Originariamente inviato da mistergks
    ho provato anch'io e mi da un ciclo infinito!! come mai?
    E' giusto che sia così. E' dovuto al fatto che c'è un ciclo for vuoto:
    for ( ; ; )
    Fra il primo e il secondo punto e virgola (ovvero dove si scrive lo scopo da raggiungere) non c'è scritto niente, quindi il programma non sa quando fermarsi e gira all'infinito.
    O almeno credo che sia così... attendo la conferma da qualche grande saggio

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Lallost

    if(secondi==60)
    {
    minuti++;
    secondi=secondi-60;
    }
    Se secondi vale 60 gli togli 60.. Scrivere
    codice:
    if (secondi == 60) {
        minuti++;
        secondi = 0;
    }
    è brutto?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    No, anzi, secondo me è più leggibile e fa capire che devi ricominciare da 0 con i secondi.
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da MisterBean
    No, anzi, secondo me è più leggibile e fa capire che devi ricominciare da 0 con i secondi.
    Ero sarcastico, ovvio che scrivere secondi = secondi - 60; per azzerare la variabile è orribile
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    A parte che non capisco cosa tu intenda con "orribile", io non ho scritto "secondi = 0" perchè avevo paura che necessitasse di un'operazione matematica per azzerare i secondi. Ora so che non è così

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.