Foros del Web » Programación para mayores de 30 ;) » C/C++ »

pasage de arreglos de estructuras a funcion

Estas en el tema de pasage de arreglos de estructuras a funcion en el foro de C/C++ en Foros del Web. hola a todos, soy nuevo por este foro , quisiera que me ayudaran con un pequeño problema que tengo al pasar un vector de estructura ...
  #1 (permalink)  
Antiguo 31/08/2011, 23:41
Avatar de eric_brandan  
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 2
pasage de arreglos de estructuras a funcion

hola a todos, soy nuevo por este foro , quisiera que me ayudaran con un pequeño problema que tengo al pasar un vector de estructura a una funcion , lo que tengo es lo siguiente:


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

void lineas (FILE*, struct jugadores* );

struct jugadores{

char nombre[200];
int fichas;
char posicion[1];
char estado[20];
char m;
char accion [20];
int apuesta;
int cantapuesta;
int cantsube;
int cantigualada;
int manosganadas;
int Cchica;
int Cgrande;
char cartasmias[10];

};

main ()

{

struct jugadores asiento;

FILE* archivo;
int a;
int b;
int c;

archivo = fopen("C:\\archivo1.txt","r");

lineas(archivo,&asiento);

}

void lineas (FILE* a,struct jugadores* asiento)

{

char n;

for (n=0;n<10;n++)

{

char b[200];
char* AUX;

fgets(b,200,a);

strcpy(asiento->nombre,b);
printf("%s\n",asiento->nombre);

}

}

este codigo en si anda genial , pero mi idea es que la variable "asiento" sea un vector de tipo estructura del tipo asiento[10]...es decir struct jugadores asiento[10]..mi problema es que no se como pasarlo en el armado de la funcion ...

nose si es asi: void lineas (FILE* a,struct jugadores* asiento[10])
o asi:void lineas (FILE* a,struct jugadores* asiento[])

tampoco se como acceder a los diferentes elementos del vector a traves de mi funcion...ya que he intentado , pero siempre me tira errores....si alguien sabe como hacerlo y me lo explica, estaria agradecido...

PD : el pasaje que intento hacer es por referencia.
  #2 (permalink)  
Antiguo 01/09/2011, 10:00
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: pasage de arreglos de estructuras a funcion

Algo asi te quedaria..,Te olvidaste de poner los indices a asiento.
Código C++:
Ver original
  1. void lineas (FILE* a,struct jugadores* asiento)
  2. {
  3.     char n;
  4.     char b[200];
  5.     char* AUX;
  6.     for (n=0;n<10;n++)
  7.     {
  8.             fgets(b,200,a);
  9.             strcpy(asiento[n].nombre,b);
  10.             printf("%s\n",asiento[n].nombre);
  11.     }
  12. }
  #3 (permalink)  
Antiguo 01/09/2011, 12:06
Avatar de eric_brandan  
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: pasage de arreglos de estructuras a funcion

hola, gracias por tu respuesta, ya habia probado ese metodo antes...pero estoi pasando los valores por referencia...de modo que al acceder de la siguiente forma

asiento.nombre, me da un error que no me da si lo uso asi: asiento->nombre.
ademas por una extraña razon que no comprendo , si utilizo lo siguiente:

asiento[n].nombre, al compilar , se cierra el programa y tengo que volver a iniciarlo..
voy a seguir probando ....
  #4 (permalink)  
Antiguo 01/09/2011, 12:24
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: pasage de arreglos de estructuras a funcion

El problema esta que tu le estas pasando un solo jugador..entonces el for de uno a n esta mal.

Código C++:
Ver original
  1. void lineas (FILE* a,struct jugadores* asiento)
  2. {
  3.     char n;
  4.     char b[200];
  5.     char* AUX;
  6.             fgets(b,200,a);
  7.             strcpy(asiento->nombre,b);
  8.             printf("%s\n",asiento->nombre);
  9. }

Ahora si quieres 10 nombres deberas tener 10 jugadores:

struct jugadores asiento[10];
despues
lineas(asiento);

Y ahi si va como te dije antes la funcion lineas.

Saludos, son dos interpretaciones distintas.
  #5 (permalink)  
Antiguo 01/09/2011, 19:09
Avatar de eric_brandan  
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: pasage de arreglos de estructuras a funcion

gracias por tu respuesta , me sirvio mucho........
  #6 (permalink)  
Antiguo 04/09/2011, 06:10
 
Fecha de Ingreso: septiembre-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: pasage de arreglos de estructuras a funcion

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. struct jugadores
  5. {
  6.     char nombre[200];
  7.     int fichas;
  8.     char posicion[1];
  9.     char estado[20];
  10.     char m;
  11.     char accion [20];
  12.     int apuesta;
  13.     int cantapuesta;
  14.     int cantsube;
  15.     int cantigualada;
  16.     int manosganadas;
  17.     int Cchica;
  18.     int Cgrande;
  19.     char cartasmias[10];
  20. };
  21.  
  22. void lineas (FILE *a, struct jugadores asiento[10]);
  23.  
  24. int main(void)
  25. {
  26.  
  27.     struct jugadores asiento[10];
  28.  
  29.     FILE *archivo;
  30.     int a;
  31.     int b;
  32.     int c;
  33.  
  34.     archivo = fopen("C:\\archivo1.txt", "r");
  35.  
  36.     lineas(archivo, asiento);
  37.    
  38.     return 0;
  39.  
  40. }
  41.  
  42. void lineas (FILE *a, struct jugadores asiento[10])
  43. {
  44.     char n;
  45.     char b[200];
  46.  
  47.     for (n=0;n<10;n++)
  48.     {  
  49.         fgets(b,200,a);
  50.  
  51.         strcpy(asiento[n].nombre, b);
  52.         printf("%s\n", asiento[n].nombre);
  53.     }
  54.  
  55. }

El código un poco arreglado quedaría así. Ten en cuenta lo que te dijo el compañero en el mensaje anterior y es que no habías declarado un vector de estructuras de 10 elementos, luego el for que utilizabas en la función "lineas" no servía para nada.

Otro punto a destacar es que si declaras una variable como global, como es en este caso la estructura jugadores, declarala antes de cualquier encabezado de una función. Al compilar me daba error por eso mismo...
  #7 (permalink)  
Antiguo 05/09/2011, 07:20
Avatar de eric_brandan  
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: pasage de arreglos de estructuras a funcion

hola ivanfr90, agradesco tu contribucion, te comento que el codigo al final pude hacerlo satisfatoriamente, en el caso del for que no tiene utilidad , ya lo he solucionado declarando 10 elementos de tipo estructura, en cuanto a las variables globales, supongo que puede ser un error dependiendo del IDE que estes usando , en mi caso Turbo C++, no me da ese error que señalas tu....muchas gracias por tu ayuda..

Etiquetas: arreglos, estructuras, funcion, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:57.