Como les prometà en el post anterior, en este post vamos a hablar sobre un programa que usa los operadores compuestos de manera muy útil: convierte los segundos en horas minutos y segundos.
El programa es este:
#include <iostream> using namespace std; int main() { int sec, hr, min; cout << "Introduce los segundos: "; cin >> sec; cout << sec << " segundos son "; hr = sec / (60*60); sec %= 60*60; min = sec / 60; sec %= 60; cout << hr << " horas " << min << " minutos y " << sec << " segundos" << endl; }
Primero dividimos los segundos sec entre 60*60 (3600) para obtener los horas y lo guardamos en hr. Noten que la variable sec no cambia.
Luego obtenemos el residuo de dividir sec / 60*60 (es lo que el operador % hace) y lo guardamos en la misma variable. En este paso sà modificamos la variable sec, ahora contiene los segundos iniciales menos las horas que ya obtuvimos en el paso anterior.
Ahora dividimos nuevamente la variable sec / 60 para obtener los minutos y lo guardamos en hr. La variable sec no cambia.
Luego obtenemos el residuo de dividir sec / 60 (es lo que el operador % hace) y lo guardamos en la misma variable. En este paso sà modificamos la variable sec, ahora contiene los segundos iniciales menos las horas menos los minutos.
Ya sólo mostramos las tres variable y listo.
Ahora, si somos de los que nos preocupamos por el lenguaje, veremos que a veces hay errores de ortografÃa como “1 minutos”. Para solucionar eso sólo necesitamos unos cuantos ifs:
#include <iostream> using namespace std; int main() { int sec, hr, min; cout << "Introduce los segundos: "; cin >> sec; cout << sec << " segundos son "; hr = sec / (60*60); sec %= 60*60; min = sec / 60; sec %= 60; cout << hr << " hora"; if(hr != 1) cout << "s"; cout << " " << min << " minuto"; if(min != 1) cout << "s"; cout << " y " << sec << " segundo"; if(sec != 1) cout << "s"; }