Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Caster

#281
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
#282
Tu codigo no es que no funcione, sino que introduzco el numero de segundos que se da como ejemplo en el ejercicio y el resultado no coincide, acabo de probar con el numero de segundos que das tu yla salida del programa que hice yo es esta:

CitarPorfavor introduzca los segundos:
191115
N
N
N
2.000000 d, 5.000000 h, 5.000000 m, 15 s

Es corrrecta, no es un numero entero de minutos, ni de horas, ni de dias, asi que sale todo "N" y despues como bien dice el programa no es numero entero de nada, asi que sobran horas, minutos y segundos y por eso ninguno de ellos queda en 0.

Saludos

EDITO: He probado ha introducir 120 segundos y el programa me ha dado esto:

CitarPorfavor introduzca los segundos:
120
S
N
S
0.000000 d, 0.000000 h, 2.000000 m, 0 s

Esta todo bien excepto que dice que es un numero entero de dias, ya he visto el fallo, y cambie esta linea:

dias = (double) (segundos/3600)/24;

Por esta:

dias = (double) segundos / (3600*24);

Y ahora la salida es esta:

CitarPorfavor introduzca los segundos:
120
S
N
N
0.000000 d, 0.000000 h, 2.000000 m, 0 s

Saludos y muchas gracias.
#283
Menudo lio tengo, ya llevo varias horas rompiendome la cabeza y no llego a nada, al principio he intentado hacerlo yo solo y no se si me acerque si quiera, y como no conseguia nada probe la solucion de leosansan, la copie y compile, y no da el resultado esperado, asi que seguire intentandolo a ver sin consigo algo.

Saludos

Edito: Para conseguir los dias he escrito esto y funciona perfectamente:

dias = segundos / (3600*24);

EDITO 2: Pues parece que pensando al final llegue a la solucion, he programado esto:

dias = segundos / (3600*24);
horas = (segundos % (3600*24)) / 3600;
minutos = ((segundos % (3600*24)) % 3600) / 60;
segundos = ((segundos % (3600*24)) % 3600) % 60;


Y funciona perfectamente. Al final el codigo completo queda asi:

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



int main()
{
uint64_t segundos;
double minutos;
double horas;
double dias;


printf("Porfavor introduzca los segundos: \n");
scanf("%llu", &segundos);

while(getchar() != '\n')
;

minutos = (double) segundos/60;


if (((int) minutos) != minutos)
printf("N\n");
else if (((int) minutos) == minutos)
printf("S\n");

horas = (double) segundos/3600;

if (((int) horas) != horas)
printf("N\n");
else if (((int) horas) == horas)
printf("S\n");

dias = (double) (segundos/3600)/24;

if (((int) dias) != dias)
printf("N\n");
else if (((int) dias) == dias)
printf("S\n");

dias = segundos / (3600*24);
horas = (segundos % (3600*24)) / 3600;
minutos = ((segundos % (3600*24)) % 3600) / 60;
segundos = ((segundos % (3600*24)) % 3600) % 60;
   

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


getchar();
return 0;
}


Saludos y muchas gracias a todos por la ayuda. He editado las salidas por pantalla para que se adapte mejor a los resultados que pide el ejercicio.
#284
No se hacen tareas, dinos algo que tengas pensado o el codigo que lleves o algo, pero no se hacen tareas.

Saludos
#285
Era otra opcion que se me habia ocurrido, pero ahora ya lo hice con las librerias y asi me vale y me funciona perfectamente, muchas gracias.

Saludos
#286
Ya me habia dado cuenta, pero ahora mismo no me preocupa eso, lo que mas me interesa a mi es saber resolver el problema en si.

Saludos
#287
Programación C/C++ / Re: ejercicio en C
29 Octubre 2012, 21:38 PM
Ya se, tambien hay algunos fallos en los bucles para transformar la cadena, tu primero leete el post que te deje mas arriba, editalo con los consejos que se dan, y vuelve a postear el codigo y yo te ayudo. Para que se ejecute una funcion segun lo que elijas se neceita una estructura condicional, como puede ser un if - else, o un switch por ejemplo.

Saludos
#288
Programación C/C++ / Re: ejercicio en C
29 Octubre 2012, 20:35 PM
Buenas!

Bueno supongo que en el codigo que quieres compilar incluiras las librerias, aunque aqui no las muestras, sin ellas no pretendas que te compile el codigo:

#include <stdio.h>
#include <string.h>


Depues, en la funcion mayus(), utilizas la variable t, pero la tienes como un comentario, aasi que realmente no esta declarada:

//int t;

Y despues otros consejos:

-Evita el uso de gets()
-Evita el uso de fflush(stdin)

Mirate este post y lo veras con mas detalle:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Otro fallo, elijas la opcion que elijas siempre se ejecutara primero la funcion mayus() y despues minus() porque si que haces al ususario escoger la opcion, pero despues no esta programador para que se ejecute segun el susuario elija, no se si me explico bien.

Saludos

PD: Edita tu post y pon tu codigo entre etiquetas geshi, para que sea mas facil de leer
#289
Muchas gracias, pero es parte de un ejercicio que he puesto en otro hilo y lo que pide el ejercicio es unicamente detectar si es un numero entero o no, no pide el resto.

Saludos
#290
Programación C/C++ / Ayuda con ejercicio en C
28 Octubre 2012, 15:43 PM
Buenas!

Bueno pues de los ejercicios que me dejasteis en otro post eleji este para ir empezando:

CitarDado un numero entero positivo de segundos, se desea convertirlo a días.
En el archivo segundos.in se informa el número de segundos el cual
puede tener hasta 100 dígitos decimales, como una secuencia de dígitos.
La salida se grabará en el archivo segundos.out, cada respuesta en una
línea, y deberá contener:
1. Indicación de si el número de segundos dado equivale a un numero
entero de minutos o no (mediante una S para sí, y una N para no).
2. Indicación de si el número de segundos dado equivale a un numero
entero de horas, en el mismo formato que para la respuesta 1).
3. Indicación de si el número de segundos dado equivale a un numero
entero de días, en el mismo formato que para la respuesta 1).
4. Imprimir el numero de días, horas, minutos y segundos equivalente
al número de segundos dado.
Ejemplo:
Si segundos.in contiene:
5650560900
El archivo segundos.out debería contener:
S
N
S
65400 d, 0 h, 15 m, 0 s

Bueno yo cambie lo de archivos, porque aun no se manejarlos, y he llegado hasta los tres primeros puntos, pero el 4 no se como hacerlo, y queria que me dijerias a ver de que forma puedo hacerlo, no quiero codigo, solo como poder hacerlo, una idea para despues hacerlo yo, os dejo lo que llevo hecho:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>



int main()
{
uint64_t segundos;
double minutos;
double horas;
double dias;


printf("Porfavor introduzca los segundos: \n");
scanf("%llu", &segundos);

while(getchar() != '\n')
;

minutos = (double) segundos/60;


if (((int) minutos) != minutos)
printf("Numero entero de minutos: No\n");
else if (((int) minutos) == minutos)
printf("Numero entero de minutos: Si\n");

horas = (double) segundos/3600;

if (((int) horas) != horas)
printf("Numero entero de horas: No\n");
else if (((int) horas) == horas)
printf("Numero entero de horas: Si\n");

dias = (double) (segundos/3600)/24;

if (((int) dias) != dias)
printf("Numero entero de dias: No\n");
else if (((int) dias) == dias)
printf("Numero entero de dias: Si\n");


getchar();
return 0;
}


Saludos