Ayuda con ejercicio en C

Iniciado por Caster, 28 Octubre 2012, 15:43 PM

0 Miembros y 1 Visitante están viendo este tema.

BatchianoISpyxolo

Cita de: xiruko en 31 Octubre 2012, 12:24 PM
tambien te lo conteste al principio del hilo y no me hiciste mucho caso. pero bueno, te dejo aqui el codigo a falta de implementar lo del numero de 100 cifras.

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main() {

uint64_t segundos, minutos, horas, dias;

printf("Introduce los segundos: ");
scanf("%llu", &segundos);

minutos=segundos/60;
if (segundos%=60) puts("N"); else puts("S");

horas=minutos/60;
if (minutos%=60) puts("N"); else puts("S");

dias=horas/24;
if (horas%=24) puts("N"); else puts("S");

printf("%llu d, %llu h, %llu m, %llu s\n", dias, horas, minutos, segundos);

return 0;
}


salida:

xiruko:~$ gcc segundos.c -o segundos
xiruko:~$ ./segundos
Introduce los segundos: 5650560900
S
N
S
65400 d, 0 h, 15 m, 0 s
xiruko:~$


un saludo!

Y ya, si lo quieres hacer precioso, usas el operador ternario en vez de los ifs xD

Por ejemplo:

puts ( horas%=24 ? "N" : "S" );
Puede que desees aprender a programar desde 0: www.espascal.es

xiruko

CitarY ya, si lo quieres hacer precioso, usas el operador ternario en vez de los ifs xD

Por ejemplo:

puts ( horas%=24 ? "N" : "S" );

ya lo habia pensado aunque no sabia que se podia usar como parametro. lo habia pensado asi:
(horas%=24) ? puts("N") : puts("S");

pero realmente era lo mismo que ponerlo con if/else asi que me decidi por lo que esta por ser mas claro. aunque gracias por la aclaracion, la verdad es que si que queda mas bonito xD

Caster

xiruko si que me habia fijado en tu respuesta, de hecho para hacer el codigo que hice yo me base en lo que respondiste tu, conocia el operador ternario, y para que quede mas bonito esta bien usarlo, pero a mi personalmente me gusta mas usar un if - else. Lo unico que no entiendo es esto:

segundos%=60

Saludos

leosansan

Cita de: Caster en 31 Octubre 2012, 18:30 PM
Lo unico que no entiendo es esto:

segundos%=60

Citarsegundos=1900
           segundos/60=31==> esto serían minutos     resto=segundos%60=40
es decir, te da los segundos inferiores a 60, o sea lo que quedarían en 1900 después de "quitar" los segundos múltiplo de 60

xiruko

#14
CitarLo unico que no entiendo es esto:
segundos%=60

es el operador resto o mod (como dije en el primer comentario), y esta sentencia es equivalente a esta:

segundos=segundos%60;

exactamente igual que todas estas que quizas si que has visto:

a+=b; // a=a+b;
a*=b; // a=a*b;
//etc


Citarconocia el operador ternario, para que quede mas bonito esta bien usarlo, pero a mi personalmente me gusta mas usar un if - else.

de hecho, a parte de bonito o no (que eso va a gustos), es mas eficiente que un if/else. pero bueno en este programa tampoco viene de ahi asi que...

un saludo!

Caster

Vale, ahora lo entiendo todo perfectamente, me gusta mas el codigo de xiruko, es simple, no es largo y facil de entender, muchas gracias a todos por la ayuda.

Saludos