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

    [C] Trasformare orario da formato 12 ore a formato 24 ore

    Ciao a tutti ho provato a fare questo esercizio:
    "Scrivi un programma di modo che l'utente inserisca un orario nel formato 12 ore e lo trasformi nel formato 24 ore. L'input deve avere la forma ore:minuti seguito da AM/PM"
    Io l'ho fatto in questo modo:
    codice:
    #include <stdio.h>
    int main(void)
    {
    int ore, minuti, ore2;
    char gg[1];
    
    printf("Inserisci un orario nel formato 12 ore: ");
    scanf("%d:%d %s", &ore, &minuti, gg);
    
    if (gg[0]=='A') {
        ore2 = ore;
        }
    else if (gg[0]=='P') {
       switch (ore) {
           case 1: ore2 = 13; break;
           case 2: ore2 = 14; break;
           case 3: ore2 = 15; break;
           case 4: ore2 = 16; break;
           case 5: ore2 = 17; break;
           case 6: ore2 = 18; break;
           case 7: ore2 = 19; break;
           case 8: ore2 = 20; break;
           case 9: ore2 = 21; break;
           case 10: ore2 = 22; break;
           case 11: ore2 = 23; break;
           case 12: ore2 = 00; break;
          }
        }
    printf("%d:%d %s", ore2, minuti, gg);
    return 0;
    }
    Il problema è che mi stampa dei numeri strani in "ore2"... Cosa ho sbagliato?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Nella prima lezione sulle stringhe del C viene detto che hanno un carattere terminatore. Quindi devi sempre prevedere un carattere in più.

    Inoltre, se il testo ti dice che devi scrivere AM o PM vuol dire che la stringa dovrà essere di 3 caratteri. Quindi

    char gg[3];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Nella prima lezione sulle stringhe del C viene detto che hanno un carattere terminatore. Quindi devi sempre prevedere un carattere in più.

    Inoltre, se il testo ti dice che devi scrivere AM o PM vuol dire che la stringa dovrà essere di 3 caratteri. Quindi

    char gg[3];
    Grazie mille, problema risolto, non ci avevo pensato!!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da khjaretta Visualizza il messaggio
    Grazie mille, problema risolto, non ci avevo pensato!!
    Questo era l'errore "grave" ... ma dovresti rivedere quel semplice esercizio

    1) evitando tutti quei case

    2) non visualizzando alla fine AM/PM dato che nel formato 24 ore quell'indicazione non ha senso
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Questo era l'errore "grave" ... ma dovresti rivedere quel semplice esercizio

    1) evitando tutti quei case

    2) non visualizzando alla fine AM/PM dato che nel formato 24 ore quell'indicazione non ha senso
    Hai perfettamente ragione ma, riguardo al punto 1), non avrei saputo farlo in altro modo... Per il punto 2)... Riconosco che AM/PM erano abbastanza inutili

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Basta rifletterci un po' ... nel caso 'P' ti basta

    ore2=ore+12;
    if(ore2==24) ore2=0;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.