DUE ORARI DEV C.

di il
9 risposte

DUE ORARI DEV C.

Salve ho un leggero problema per questo programma:

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

main()

{
int o,m,o1,m1,o2,m2,ore,min;
printf("\n INSERISCI DUE ORARI\n");
do{
printf("\nChe ore sono?(ore e minuti)\n");
scanf("%d%d",&o,&m);
printf("\nChe ore sono?(ore e minuti)\n");
scanf("%d%d",&o1,&m1);
if(o&&o1<0||o&&o1>24||m&&m1<0||m&&m1>60);
printf("\nERRORE\n");
}while(o&&o1<0||o&&o1>24||m&&m1<0||m&&m1>60);
if(o&&m<o1&&m1)
{
printf("\nIl primo orario viene prima\n");
o2=o-o1;
m2=m-m1;
if(o2<0)
ore=o2*(-1);
else
ore=o2;
if(m2<0)
min=m2*(-1);
else
min=m2;
printf("\nIl numero di ore e minuti che intercorrono tra di essi sono %d ore e %d minuti",ore,min);
}
else
printf("\nIl secondo orario viene prima\n");
o2=o-o1;
m2=m-m1;
if(o2<0)
ore=o2*(-1);
else
ore=o2;
if(m2<0)
min=m2*(-1);
else
min=m2;
printf("\nIl numero di ore e minuti che intercorrono tra di essi sono %d ore e %d minuti",ore,min);
}

La traccia è questa: Scrivere un programma che chiede all'utente di inserire due orari con il dettaglio di ore e minuti, e dice quali dei due viene prima dell'altro e il numero di ore e minuti che intercorrono tra di essi.

l'unico problema è quando devo inserire l'orario , che va all'incirca bene ma se inserisco due orari buoni mi esce il messaggio ERRORE ma comunque mi dice qual è che viene prima e ore e minuti che intercorrono tra di essi. Magari se qualcuno potrebbe consigliarmi qualche upgrade, migliorarlo in qualche modo.

PS: non bastonatemi troppo , sono nuovo e devo fare la 4 di informatica, grazie

9 Risposte

  • Re: DUE ORARI DEV C.

    La if che controlla l'errore è sbagliata. Non puoi scrivere in quel modo in C ... studia bene la if ...
  • Re: DUE ORARI DEV C.

    oregon ha scritto:


    La if che controlla l'errore è sbagliata. Non puoi scrivere in quel modo in C ... studia bene la if ...
    grazie per l'aiuto
  • Re: DUE ORARI DEV C.

    Io ci vedo anche altre cose "fuori posto". Ad esempio, sempre nello stesso "if" che controlla la segnalazione d'errore, c'è un punto e virgola di troppo...

    A parte questo, direi che la strada scelta nel tentare di svolgere l'esercizio non è delle più dirette.
  • Re: DUE ORARI DEV C.

    AldoBaldo ha scritto:


    Io ci vedo anche altre cose "fuori posto". Ad esempio, sempre nello stesso "if" che controlla la segnalazione d'errore, c'è un punto e virgola di troppo...

    A parte questo, direi che la strada scelta nel tentare di svolgere l'esercizio non è delle più dirette.
    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>

    main()

    {
    int o,m,o1,m1,o2,m2,ore,min;
    printf("\n INSERISCI DUE ORARI\n");
    do{
    printf("\n1)Inserisci l'ora: ");
    scanf("%d",&o);
    if(o<0||o>24)
    printf("\nERRORE\n");
    }while(o<0||o>24);
    do{
    printf("\n1)Inserisci i minuti: ");
    scanf("%d",&m);
    if(m<0||m>60)
    printf("\nERRORE\n");
    }while(m<0||m>60);
    do{
    printf("\n2)Inserisci l'ora: ");
    scanf("%d",&o1);
    if(o1<0||o1>24)
    printf("\nERRORE\n");
    }while(o1<0||o1>24);
    do{
    printf("\n2)Inserisci i minuti: ");
    scanf("%d",&m);
    if(m<0||m>60)
    printf("\nERRORE\n");
    }while(m<0||m>60);
    if(o<o1)
    {
    printf("\nIl primo orario viene prima\n");
    o2=o1-o;
    m2=m1-m;

    if(o2<0)
    ore=o2*(-1);
    else
    ore=o2;

    if(m2<0)
    min=m2*(-1);
    else
    min=m2;

    printf("\nIl numero di ore e minuti che intercorrono tra di essi sono %d ore e %d minuti",ore,min);
    }
    else
    printf("\nIl secondo orario viene prima\n");
    o2=o-o1;
    m2=m-m1;

    if(o2<0)
    ore=o2*(-1);
    else
    ore=o2;

    if(m2<0)
    min=m2*(-1);
    else
    min=m2;

    printf("\nIl numero di ore e minuti che intercorrono tra di essi sono %d ore e %d minuti",ore,min);
    if(o&&m==o1&&m1)
    printf("\nIl numero di ore e minuti che intercorrono tra di esse e' zero\n");

    }


    Ho deciso di modificarlo , ma mi dai dei problemini nel calcolo delle ore, nel senso che mi dice l'orario che viene prima , e mi calcola bene le ore che intercorrono , ma i minuti no, perchè?
  • Re: DUE ORARI DEV C.

    Una cosa facile che puoi fare per semplificarti un po' la vita è trasformare SUBITO il dato in ore e minuti in un unico dato in minuti e basta. Ad esempio, dopo avere ottenuto ore e minuti, fai minuti = 60*ore + minuti. Da quel momento non usare più la variabile riferita alle ore, perché l'hai "inglobata" in quella riferita ai minuti. In altre parole, 1 ora e 15 minuti puoi esprimerla (nel corso dei tuoi calcoli) come 75 minuti. E' più "maneggevole" e diretto.
  • Re: DUE ORARI DEV C.

    Scusa ma hai fatto con carta e penna quello che vorresti fare con il tuo programma? Secondo te il calcolo è corretto? Se tu hai 10:15 e 7:45 come trovi la differenza senza computer?

    Poi non sai cge le ore arrivano a 23 e i minuti a 59? Perché accetti ancge 24 e 60?

    Per programmare bisogna prima avere una soluzione corretta del problema.
  • Re: DUE ORARI DEV C.

    oregon ha scritto:


    Scusa ma hai fatto con carta e penna quello che vorresti fare con il tuo programma? Secondo te il calcolo è corretto? Se tu hai 10:15 e 7:45 come trovi la differenza senza computer?

    Poi non sai cge le ore arrivano a 23 e i minuti a 59? Perché accetti ancge 24 e 60?

    Per programmare bisogna prima avere una soluzione corretta del problema.
    Scusa se non sono bravissimo a programmare e sono alle prime armi, ho fatto qualche sbaglio, e potevi dirmelo molto tranquillamente, detto questo grazie per l'aiuto. Ciao.
  • Re: DUE ORARI DEV C.

    Non hai capito. Ti ho detto che non sei bravo a programmare? Non cominciamo con le offese inutili.

    Ti ho detto di risolvere il problema PRIMA con carta e penna, POI programmi. Se non vuoi accettare il consiglio, il problema è tuo.
  • Re: DUE ORARI DEV C.

    oregon ha scritto:


    Non hai capito. Ti ho detto che non sei bravo a programmare? Non cominciamo con le offese inutili.

    Ti ho detto di risolvere il problema PRIMA con carta e penna, POI programmi. Se non vuoi accettare il consiglio, il problema è tuo.
    Infatti ho colto il tuo consiglio e ne sto facendo oro, sto riuscendo a capire meglio ora, ti ringrazio.
Devi accedere o registrarti per scrivere nel forum
9 risposte