Autor
|
Tema: ayuda en C (Leído 3,462 veces)
|
J.cE
Desconectado
Mensajes: 13
|
tengo un problema, quisiera por favor si me pueden ayudar, me he quedado atascado el codigo es el siguiente: #include <time.h> #include <stdio.h> /*-------------prototipo de funcion--------------*/ void fecha(int *d, int *m, int *a); /*-------------algoritmo principal----------------*/ int main() { int dia, mes, anho;
fecha(&dia, &mes, &anho); printf("%d-%d-%d\n", dia, mes, anho); } /*-------------procedimento fecha---------------*/ void fecha(int *d, int *m, int *a) { time_t ahora; struct tm *fecha; time(&ahora); fecha = localtime(&ahora); d = fecha->tm_mday; m = fecha->tm_mon+1; a = fecha->tm_year+1900; printf("%d-%d-%d\n", d, m, a); } porque en un printf me escribe una cosa diferente del otro printf?
|
|
|
En línea
|
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
Queria ver si te podia ayudar y ver la diferencia de la que hablas de salida pero no me corrio. claro ya ves porque. vere si lo hago correr si no me equivoco el error que me salta es por que estoy declarando un puntero de tipo entero como argumento de una funccion. no?
|
|
« Última modificación: 24 Marzo 2014, 05:05 am por nolasco281 »
|
En línea
|
Lo que se puede imaginar... se puede programar.
|
|
|
J.cE
Desconectado
Mensajes: 13
|
que raro, ami si me funciona, no se como subir una captura de pantalla para mostrartela....
|
|
|
En línea
|
|
|
|
engel lex
|
nolasco281 no te corre porque es un programa de C y tu lo estás compilando como C++
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
Ya si es este las impresiones que te hace la segunda es la direccion en memoria de la funcion fecha en este caso esto apuntado ahi por eso salen eso numero. es la direccion en memoria si no me equivoco. gracias englex tienes razon cree un proyecto para C++ ahora lo hago en C gracias. tienes razon lo corri asi #include <cstdlib> #include <iostream> using namespace std; #include <time.h> #include <stdio.h> /*-------------prototipo de funcion--------------*/ void fecha(int d, int m, int a); /*-------------algoritmo principal----------------*/ int main() { int dia, mes, anho; fecha(dia, mes, anho); printf("%d-%d-%d\n", dia, mes, anho); system("PAUSE"); return EXIT_SUCCESS; } void fecha(int d, int m, int a) { time_t ahora; struct tm *fecha; time(&ahora); fecha = localtime(&ahora); d = fecha->tm_mday; m = fecha->tm_mon+1; a = fecha->tm_year+1900; printf("%d-%d-%d\n", d, m, a); }
|
|
« Última modificación: 24 Marzo 2014, 05:26 am por nolasco281 »
|
En línea
|
Lo que se puede imaginar... se puede programar.
|
|
|
J.cE
Desconectado
Mensajes: 13
|
Ya si es este las impresiones que te hace la segunda es la direccion en memoria de la funcion fecha en este caso esto apuntado ahi por eso salen eso numero. es la direccion en memoria si no me equivoco. gracias englex pero yo quiero que me imprima las fechas y no la direccion de la memoria, alguna idea?
|
|
|
En línea
|
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
Hola amigo primero que nada tu pregunta fue
porque en un printf me escribe una cosa diferente del otro printf?
no aclaraste lo que deseabas. Saludos.
|
|
|
En línea
|
Lo que se puede imaginar... se puede programar.
|
|
|
J.cE
Desconectado
Mensajes: 13
|
Hola amigo primero que nada tu pregunta fue
porque en un printf me escribe una cosa diferente del otro printf?
no aclaraste lo que deseabas. Saludos.
te agradezco nolasco281 por la ayuda, pero tambien me surge esa pregunta de como hacer para que no pase la direccion de memoria
|
|
|
En línea
|
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
Hola amigo segun yo y mis pocos conocimientos Cuando llega a esta instruccion; printf("%d-%d-%d\n", dia, mes, anho); lo que le estas pidiendo que haga es eso que imprim a la direccion en memoria y soy un aprendiz igual que tu dejame aver si te puedo ayudarte ya que pratico C++ y no se casi nada de C. PD:Re cuerda que la programacion es una serie de instrucciones que se ejecutan secuencial mente no lo olvides cuando tengas o te aparezca un error solo fijate en que parte lo esta haciendo y listo. dejame sequir viendo Saludos.
Hola amigo despues de estar viendo y tratando cosas me di cuenta de algo. 1. Texplico cuando el programa se ejecuta lo primero que hace es empezar por las variables no ok. 2. lo siquiente que hace es llamar a la funcion fecha que tienes tres argunmentos o parametros como quieras llamerles y tu le pasas dia mes y a~no ok. 3 Despues esos argumetos se evaluan en la funcion y te devuelven la fecha como lo podes notar en la primera imprecion. 4 luego llega al printf es es donde tu te preguntas por que te imprime la direccion no? es por que es el ultimo valor que tomaron las variables, no me entiendes ok si tu vienes y modificas el codigo. en esta linea y pones int dia=2, mes=9, anho=8;
veras una salida como esta es porque en la direccion que se almacen no hay nada pero si inicializas las variables veras los valores con que la inicializaste ya no entra a la direccion de memoria sino al valor de la variable. Y tambien ese es el objetivo de usar funciones para evitar redundancia de codigo. tu puedes llamar esa funcion donde la nesecites. Claro dentro del ambito de donde se declare. espero haber ayudado saludos y cuidate. tambien aprendi saludos. PD: Recuerda. un entero tiene (int). 4 Bytes = 4x8 = 32 bits Con 32 bits se pueden representar 232=4294967296 valores.
|
|
« Última modificación: 24 Marzo 2014, 13:46 pm por Eternal Idol »
|
En línea
|
Lo que se puede imaginar... se puede programar.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
tengo un problema, quisiera por favor si me pueden ayudar, me he quedado atascado ............................................. porque en un printf me escribe una cosa diferente del otro printf?
Porque los valores se los has pasado a la función por valor por lo que su valor al volver a main no varían respecto a los que ya tenían en dicha función main y como no los habías inicializados contienen basura o valores indeterminados.
Para actualizar los valores en main con los obtenidos en la función tendrás que pasarlos por referencia mediante el uso de punteros ... y de esta forma no es necesario inicializar las variables, aunque siempre es aconsejable hacerlo: EN LA FUNCION FECHA:24-3-2014 EN MAIN: 24-3-2014 Presione una tecla para continuar . . .
Process returned 0 (0x0) execution time : 0.435 s Press any key to continue.
Por cierto, te falta la librería stdlib para el uso de system y de EXIT_SUCCESS:#include <time.h> #include <stdio.h> #include <stdlib.h> /*-------------prototipo de funcion--------------*/ void fecha(int *d, int *m, int *a); /*-------------algoritmo principal----------------*/ int main() { int dia, mes, anho; fecha(&dia, &mes, &anho); printf("EN MAIN: %d-%d-%d\n", dia, mes, anho); system("PAUSE"); return EXIT_SUCCESS; } void fecha(int *d, int *m, int *a) { time_t ahora; struct tm *fecha; time(&ahora); fecha = localtime(&ahora); *d = fecha->tm_mday; *m = fecha->tm_mon+1; *a = fecha->tm_year+1900; printf("EN LA FUNCION FECHA:%d-%d-%d\n", *d, *m, *a); }
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 24 Marzo 2014, 07:47 am por leosansan »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Amigos necesito ayuda con un background para un logo de una web ayuda.
Diseño Gráfico
|
™Carlos.®
|
2
|
3,449
|
14 Agosto 2004, 00:23 am
por ™Carlos.®
|
|
|
[Ayuda] Necesito ayuda para crear un buen video uso AF y Flash.
Diseño Gráfico
|
XXXXXX
|
1
|
5,528
|
11 Noviembre 2009, 00:17 am
por Sub_Cero
|
|
|
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
|
XxRekcahlExX
|
6
|
10,614
|
24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
|
|
|
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
|
Draklit
|
6
|
8,788
|
15 Octubre 2010, 03:14 am
por Draklit
|
|
|
sist lince indumentaria ayuda ayuda!!!!!!!!!! problemon que hice en le trabajo
Software
|
paola03
|
1
|
4,967
|
11 Marzo 2011, 01:09 am
por charola42
|
|