Dev - C++ - programa que permita introducir dos horas

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

programa que permita introducir dos horas

Publicado por shubi (6 intervenciones) el 28/10/2019 23:27:20
ayuda ):
Construir un programa que permita introducir dos horas, cada una incluyendo horas, minutos y segundos, utilizando el formato hh:mm:ss y calcule la diferencia en horas, minutos y segundos.
Se requiere que las horas sean válidas, es decir:
 HH,MM,SS positivos; hh entre 00 y 23, MM entre 0 y 59 y SS entre 0 y 59. Si se lee con error, debe avisar y volver a pedir la hora.
 Debe controlar que la segunda hora sea posterior a la primera. Si la primera hora es mayor a la segunda, debe avisar y volver a pedir la segunda hora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h> int diferencia; main() {
int H, M;
long S1, S2;
printf("Escribe la primera hora (formato hh:mm:ss): "); S1=segs1();
do {
printf("Escribe la segunda hora (posterior): ");
segundos2=segs2(); } while (S2<=S1);
diferencia=S1-S2;
H=diferencia/360;
M=diferencia/60;
printf("%d:%d:%d\n", H, M, diferencia);
}
float segs1() {
int H, M, S, error = 0; long total;
do {
scanf("%d:%d:%d", H, M, S); if (++error) {
printf("Hora incorrecta!!!!\n");
printf("Escribe la hora correcta: "); }
} while(!error); total=H*360; total+=(M*60+S); return total;
}
float segs2() {
int H, M, S, error = 0; long total;
do {
scanf("%d:%d:%d", H, M, S); if (++error) {
printf("Hora incorrecta!!!!\n");
printf("Escribe la hora correcta: "); }
} while(!error); total=H*360; total+=(M*60+S); return total;
}

Hora 1 . Hora 2 Diferencia
12:23:45 10:56:01 La diferencia es 0 hora(s), 36 13:00:01 minuto(s), 16 segundo(s).
67:3:23
Hora incorrecta!!!!
Escribe la hora correcta: 23:59:10 . La diferencia es 0 hora(s), 49 minuto(s), 47 segundo(s).
23:09:23

05:12:30 45:12:34 La diferencia es 6 hora(s), 47 minuto(s), 30 segundo(s).
Hora incorrecta!!!!
Escribe la hora correcta:
12:00:00
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

programa que permita introducir dos horas

Publicado por Alfil (1444 intervenciones) el 29/10/2019 21:08:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
 
int leerhora( int &h, int &m, int &s );
 
int main()
{
    int hh1, mm1, ss1, totalh1;
    int hh2, mm2, ss2, totalh2;
    int hh3, mm3, ss3, totalh3;
 
    printf( "\nHora inicial:\n" );
    totalh1 = leerhora( hh1, mm1, ss1 );
 
    do{
        printf( "\nHora final:\n" );
        totalh2 = leerhora( hh2, mm2, ss2 );
        if( totalh1 < totalh2 )
            printf( "\n\nLA HORA FINAL NO PUEDE SER SUPERIOR A LA INICIAL\n\n" );
 
    }while( totalh1 < totalh2 );
 
    totalh3 = totalh1- totalh2;
    hh3 = totalh3 / 360;
    mm3 = ( totalh3 - hh3 * 360 ) / 60;
    ss3 = totalh3 - ( hh3 * 360 + mm3 * 60 );
 
    printf( "\n%s%d:%s%d:%s%d - %s%d:%s%d:%s%d = %s%d:%s%d:%s%d\n\n",
            ( hh1 < 10 ? "0" : "" ), hh1, ( mm1 < 10 ? "0" : "" ), mm1, ( ss1 < 10 ? "0" : "" ), ss1,
            ( hh2 < 10 ? "0" : "" ), hh2, ( mm2 < 10 ? "0" : "" ), mm2, ( ss2 < 10 ? "0" : "" ), ss2,
            ( hh3 < 10 ? "0" : "" ), hh3, ( mm3 < 10 ? "0" : "" ), mm3, ( ss3 < 10 ? "0" : "" ), ss3 );
 
    return 0;
}
 
int leerhora( int &h, int &m, int &s )
{
    bool valida = true;
    do{
        printf( "Horas: " ); scanf( "%d", &h );
        printf( "Minutos: " ); scanf( "%d", &m );
        printf( "Segundos: " ); scanf( "%d", &s );
 
        if( h < 0 || h > 23 ) valida = false;
        else if( m  < 0 || m > 59 ) valida = false;
        else if( s  < 0 || s > 59 ) valida = false;
        else valida = true;
 
        if( valida == false ) printf( "\nFECHA NO VALIDA\n\n" );
 
    }while( valida == false );
 
    return h * 360 + m * 60 + s;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

programa que permita introducir dos horas

Publicado por Daniel (1 intervención) el 14/03/2022 04:57:46
Me funcionó perfecto!
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar