Función sin argumentos

De Ejercicios

Contenido

Enunciado

El siguiente programa calcula la diferencia en minutos entre dos horas distintas. La función minutos() acepta el tiempo que el usuario introduce en horas y minutos y lo convierte a minutos devolviendo este valor entero. La función presenta la particularidad de no tener argumentos. Guarda el programa como tiempo.c.

Otra novedad de este programa es la existencia del carácter dos puntos (:) entre los dos especificadores de formato, %d y %d, de la instrucción scanf(). Esto hace que el usuario deba introducir los dos puntos entre los números que conforman el formato del tiempo. Estos números son capturados por la función mediante los especificadores %d. Los dos puntos sustituyen a los caracteres de espaciado tradicionales (espacio, tabulador, nueva línea). Así el usuario puede introducir el tiempo en el formato estándar de horas:minutos, utilizando los dos puntos para separarlos.

Soluciones

Programa en C por Angel

Solución comentada al Ejercicio:

/* fichero tiempo.c */
/* calcula la diferencia entre dos horas distintas */
#include <stdio.h>
void main(void) {
  int minutos1, minutos2;
  int minutos(void);
  printf("Escribe la primera hora (formato 3:22): ");
  minutos1=minutos(); /* obtiene los minutos */
  printf("Escribe la segunda hora (posterior): ");
  minutos2=minutos(); /* obtiene los minutos*/
  printf("La diferencia es %d minutos.\n", minutos2-minutos1);
}
int minutos(void) {
  int horas, mins;
  scanf("%d:%d", &horas, &mins);
  return (horas*60+mins); 
}

Diseño en Pseudocódigo

 FUNCION Minutos():ENTERO
 ENTRADAS:
    (no tiene, las lee de teclado)
 SALIDAS:
    (no tiene, las muestra por pantalla)
 VARIABLES:
    horas: ENTERO
    mins:  ENTERO
 INICIO
    LEER horas
    LEER mins
    DEVOLVER (horas*60)+mins
 FIN
 (Programa Principal)
              
 ALGORITMO tiempo
 ENTRADAS:
     (Dos datos horarios dados con horas y minutos)
 SALIDAS:
     (Mensaje mostrando la diferencia entre las dos horas)
 VARIABLES:
     minutos1:ENTERO
     minutos2:ENTERO
 INICIO
     ESCRIBIR "Escribe la primera hora (formato 3:22): "
     minutos1<--Minutos()
     ESCRIBIR "Escribe la segunda hora (posterior): "
     minutos2<--Minutos()
     ESCRIBIR "La diferencia es", minutos2-minutos1
 FIN
Tipos de soluciones