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 - J.cE

#1
mil gracias amigo por tu ayuda
de verdad era eso
pero ahora tengo una duda
porque tiene que ser en lugar de 2 - 3 si las repeticiones para el i son <3
y en lugar de 4 - 5 si las repeticiones para el k son <5 ?
#2
como estan amigos
estoy aprendiendo c y
quisera pedirles ayuda con este codigo por favor
se ve largo pero esta facil
lee un fichero llamado "destinos.dat"
y muestra en pantalla lo que esta en ese fichero
el problema es que no lo esta leyendo correctamente
y al final pide que ingreses un numero entre 1 y 5
cuando lo ingresas se genera una violacion de segmento
espero me puedan ayudar con eso, ya le estuve dando vueltas todo el dia al problema


#include <stdio.h>
/*ESTRUCTURAS-------------------------------------------------------------------*/
typedef struct
{
int cantidad_dias;
int divisas;
}n_dias;

typedef struct
{
int codigo;
n_dias dia[2];
int tamano;
}destinos;
/*PROTOTIPO DE FUNCION----------------------------------------------------------*/
int codigo_destino(destinos r_des[]);
/*ALGORITMO PRINCIPAL-----------------------------------------------------------*/
int main()
{
destinos destino[4];
int seleccion;
seleccion = codigo_destino(destino);
printf("%d seleccion",seleccion);
return 0;
}
/*FUNCION CODIGO_DESTINO--------------------------------------------------------*/
int codigo_destino(destinos r_des[])
{
FILE *destinos;
int i, k, c;
char paises[300];

destinos = fopen("destinos.dat","r");
if(destinos == NULL)
puts("ERROR al abrir el archivo destinos.dat");
else
{
puts("\nseleccione un codigo de destino de la lista");
puts("---------------------------------------------");
k=0;
while(!feof(destinos) && k<5)
{
fscanf(destinos,"%d\n", &r_des[k].codigo);
printf("\nCodigo %d \n", r_des[k].codigo);
puts("-------------------------------------------------");
fscanf(destinos,"%[a-zA-Z, ]\n", paises);
puts(paises);
for(i=0; i<3; i++)
{
fscanf(destinos,"%d %d\n", &r_des[k].dia[i].cantidad_dias, &r_des[k].dia[i].divisas);
r_des[k].tamano = i+1;
printf("Dias del viaje: %d\tcantidad de divisas: %d\n", r_des[k].dia[i].cantidad_dias, r_des[k].dia[i].divisas);
}
puts("-------------------------------------------------");
k++;
}
fclose(destinos);
do
{
puts("\n* ingrese codigo de destino");
scanf("%d",&c);
if(c < 1 || c > 5)
puts("\tel codigo de destino tiene que estar en el rango 1-5");
}
while(c < 1 || c > 5);
}
return(c);
}


esto es lo que contiene el fichero original

Citar
1
Europa, Africa, Oceania
3   2000
7   2000
8   3000
2
Mexico, Estados Unidos, Canada, Belice, Costa Rica, El Salvador, Guatemala, Argentina, Brasil, Chile, Paraguay, Peru, Uruguay, Guyana, Suriname, Antigua, Barbuda, Bolivia, Cuba, Ecuador, Honduras, San Vicente y las Granadinas, Nicaragua
3   1000
7   2000
8   2500
3
Panama
3   500
7   700
8   1000
4
Colombia
3   300
7   500
8   700
5
Otras islas del caribe
3   500
7   700
8   1000

y esto es lo que muestra el programa

Citar

seleccione un codigo de destino de la lista
---------------------------------------------

Codigo 1
-------------------------------------------------
Europa, Africa, Oceania
Dias del viaje: 3       cantidad de divisas: 2000
Dias del viaje: 7       cantidad de divisas: 2000
Dias del viaje: 8       cantidad de divisas: 3000
-------------------------------------------------

Codigo 2
-------------------------------------------------
Mexico, Estados Unidos, Canada, Belice, Costa Rica, El Salvador, Guatemala, Arge
ntina, Brasil, Chile, Paraguay, Peru, Uruguay, Guyana, Suriname, Antigua, Barbud
a, Bolivia, Cuba, Ecuador, Honduras, San Vicente y las Granadinas, Nicaragua
Dias del viaje: 3       cantidad de divisas: 1000
Dias del viaje: 7       cantidad de divisas: 2000
Dias del viaje: 3       cantidad de divisas: 2500
-------------------------------------------------

Codigo 3
-------------------------------------------------
Panama
Dias del viaje: 3       cantidad de divisas: 500
Dias del viaje: 7       cantidad de divisas: 700
Dias del viaje: 3       cantidad de divisas: 1000
-------------------------------------------------

Codigo 4
-------------------------------------------------
Colombia
Dias del viaje: 3       cantidad de divisas: 300
Dias del viaje: 7       cantidad de divisas: 500
Dias del viaje: 3       cantidad de divisas: 700
-------------------------------------------------

Codigo 5
-------------------------------------------------
Otras islas del caribe
Dias del viaje: 3       cantidad de divisas: 500
Dias del viaje: 7       cantidad de divisas: 700
Dias del viaje: 3       cantidad de divisas: 1000
-------------------------------------------------

* ingrese codigo de destino
1
1 seleccion
(aqui el programa deja de responder)
Process exited with return value 3221225477
Press any key to continue . . .
#3
Programación C/C++ / Re: ayuda en C
24 Marzo 2014, 14:44 PM
muchas gracias amigos por la ayuda...
#4
Programación C/C++ / Re: ayuda en C
24 Marzo 2014, 05:32 AM
Cita de: nolasco281 en 24 Marzo 2014, 05:29 AM
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
#5
Programación C/C++ / Re: ayuda en C
24 Marzo 2014, 05:26 AM
Cita de: nolasco281 en 24 Marzo 2014, 05:23 AM
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?
#6
Programación C/C++ / Re: ayuda en C
24 Marzo 2014, 05:05 AM
que raro, ami si me funciona, no se como subir una captura de pantalla para mostrartela....
#7
Programación C/C++ / ayuda en C
24 Marzo 2014, 03:38 AM
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?
#8
Programación C/C++ / [C] pase de parametros
25 Febrero 2014, 19:47 PM
como estan amigo, mi pregunta es como se hace el pase de parametros a un procedimento dentro de otro procedimento, ejm:

#include<stdio.h>
typedef struct
{
  int n;
}numero;
void uno(numero *n);
void dos(numero *n);

main()
{
  numero n;
  uno(&n);
}

void uno(numero *n)
{
   dos(&n);//aqui es la duda no se si eso sea correcto
#9
Programación C/C++ / Re: ayuda C
21 Febrero 2014, 20:04 PM
hajajaja, bueno, mas o menos entendi, no he usado mucho la libreria time.h pero tengo esto:

typedef struct
{
    int tm_sec;   
    int tm_min;     
    int tm_hour;     
    int tm_mday;   
    int tm_mon;     
    int tm_year;     
    int tm_wday;     
    int tm_yday;     
    int tm_isdst;   
}tm;


luego se supene que ingrese los datos manualemnte algo asi?

int main()
{
    tm *fecha;
   
    printf("ingrese dia\n");
    scanf("%d",&fecha->tm_mday);
    printf("ingrese mes");
    scanf("%d",&fecha->tm_mon);
    printf("ingrese año");
    scanf("%d",&fecha->tm_year);
}

y luego que?
no se, estoy perdido XD
#10
Programación C/C++ / ayuda C
21 Febrero 2014, 17:44 PM
tengo una duda, hay alguna funcion que me convierta una fecha ingresada del tipo 12/12/2012 en  dias transcurridos desde enero ejm: 365 ?