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

Guardar variables en una tabla dinámica

Estas en el tema de Guardar variables en una tabla dinámica en el foro de C/C++ en Foros del Web. Saludos a todos!! Bueno mi problema es que tengo "paquetes" de tres variables, que tengo que guardar en un struct, la cosa es que es ...
  #1 (permalink)  
Antiguo 19/01/2008, 12:46
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 4 meses
Puntos: 0
Guardar variables en una tabla dinámica

Saludos a todos!!

Bueno mi problema es que tengo "paquetes" de tres variables, que tengo que guardar en un struct, la cosa es que es con memoria dinámica, sino sería muy fácil xD


typedef struct Player
{
char nombre[MAX_LINIA],fecha[10];
int puntos;
struct Player *siguiente;
}TJugador;

TJugador *primero;



TJugador *Anadirprimero (TJugador *primero, char *nombre, char *fecha, int *puntos)
{
TJugador *NuevoElemento;
NuevoElemento = (TJugador *) malloc (sizeof (TJugador));

strcpy(NuevoElemento->nombre, nombre);
strcpy(NuevoElemento->data, fecha);
NuevoElemento->puntos=puntos;
NuevoElemento->siguiente = primero;
primero = NuevoElemento;

return primero;
}


void main()
{
Anadirprimero(...................); //Se llama N veces
}

He hecho esto, pero algo me falla y no sé bien que es, además tampoco me aclaro mucho sobre que enviar como parametros...

Gracias por vuestra ayuda!!
  #2 (permalink)  
Antiguo 25/01/2008, 19:56
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Guardar variables en una tabla dinámica

hola, fallaban muchas cosas, esta es una de la posibilidades correctas, por lo menos compila y ejecuta


Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINIA 256


typedef struct Player *TJugador;

struct Player
{
char nombre[MAX_LINIA],fecha[10];
int puntos;
TJugador siguiente;
};





void Anadirprimero (TJugador *primero, char nombre[], char fecha[], int puntos);


//pon void que es lo que se pone cuando no devulves nada
void Anadirprimero (TJugador *primero, char nombre[], char fecha[], int puntos)
{
	TJugador NuevoElemento;
	NuevoElemento = (TJugador ) malloc (sizeof (struct Player));


	strcpy(NuevoElemento->nombre, nombre);
	strcpy(NuevoElemento->fecha, fecha);
	NuevoElemento->puntos=puntos;
	NuevoElemento->siguiente = *primero;
	*primero = NuevoElemento;

//no necesitas poner return porque ya lo modificas dentro
}


void main()
{
	TJugador primero;
	char nombre[MAX_LINIA],fecha[10];
	int puntos;
		 
	primero = NULL;
     
    //solo pasas primero por referencia porque es el unico que se va a modificar
	Anadirprimero(&primero,nombre, fecha, puntos); //Se llama N veces
}

Si necesitas algo más postea
  #3 (permalink)  
Antiguo 27/01/2008, 18:29
Avatar de define  
Fecha de Ingreso: enero-2008
Mensajes: 100
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Guardar variables en una tabla dinámica

para poder rellenar una estructura anidada, necesitas una estructura sin anidadar sobre la cual pondras los datos, y un vez sta contenga los datos, la volcaras sobre la tabla anidada, espero haberme explicado.. sino dimelo y te pondre un ejemplo :).
  #4 (permalink)  
Antiguo 30/01/2008, 15:52
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Guardar variables en una tabla dinámica

Siento la tardanza, es genial! Lástima que ya entregué el proyecto, hizo un pequeña chapucilla xD Lo hacía bien pero no era óptimo...

en serio muchas gracias!! Para el examen me vendrá genial!

Saludos
  #5 (permalink)  
Antiguo 31/01/2008, 07:45
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Guardar variables en una tabla dinámica

@neikoniscool ¿Es necesario el puntero doble?

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #6 (permalink)  
Antiguo 31/01/2008, 10:42
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Guardar variables en una tabla dinámica

Hola lucifer, si, el primero (el que declaras en el typedef) es para indicar que se no se va a acceder a un valor concreto si no que va a apuntar a un elemento que podrá cambiar (porque es una lista y suele tener más de un elemento).

El segundo es para indicar que lo pasas por referencia(que se puede modificar dentro del procedimiento) si no lo hicieras todo lo que modificaras volvería a tener el valor inicial al terminar el procedimiento

,un saludo
  #7 (permalink)  
Antiguo 31/01/2008, 14:56
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Guardar variables en una tabla dinámica

La pregunta era para que te dieras cuenta de que no es necesario, estás pasando un puntero...¿para qué pasar un puntero por dirección?

Prueba quitándole el '*' y haciendo las correcciones necesarias para que veas que funciona bienn.

TJugador es un puntero del tipo "struct Player".

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
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




La zona horaria es GMT -6. Ahora son las 20:49.