problemas con punteros y estructuras.
Hola, tengo que hacer una función que devuelve un real, a la que la paso dos parámetros, uno tipo struct y otro un campo del registro. La función se encarga de sumar los valores relativos al campo de dicho registro.
Por ejemplo, en un registro como este:
typedef struct persona {
char nombre;
int edad;
float altura;
struct persona *siguiente;
}persona;
por ejemplo la función sumaría todas las edades de todos los registros.
No tengo ni idea de como hacerlo, por no saber utilizar los punteros.
Espero que me podáis ayudar. Muchas gracias.
Por ejemplo, en un registro como este:
typedef struct persona {
char nombre;
int edad;
float altura;
struct persona *siguiente;
}persona;
por ejemplo la función sumaría todas las edades de todos los registros.
No tengo ni idea de como hacerlo, por no saber utilizar los punteros.
Espero que me podáis ayudar. Muchas gracias.
Bueno... esto es una lista enlazada... asi que upongo que tendras que recorrerla de alguna manera (quiero creer que ya tenes como insertar y eliminar elementos de la lista)
Como primera... los punteros no son mas que un dato que se interpreta como una pocicion de memoria. Todas las cosas se almacenan en memoria (arquitectura de computadores... para mas detalles)
Asi que un puntero indica donde existe "algo" en memoria... y cuiando digo algo ablo de TODO lo que la memoria puede contener (char, float, uniones, estructuras y todo eso...)
Como supongo que te habras aburrido de estas estupideses sobre la memoria paso al codigo.
Tenes que recorrer la lista (de estructuras) que, supongo, estara terminada en NULL y lo que le pasaras a la funcion es el puntero a la struct donde queres que empieze (es vastante ovio que deveria ser la primera... digo...)
Ahora... no me queda claro para que cuernos le pasas un campo del registro (¿que campo es?... para que lo vas a usar?... deveria venir en el enunciado... creo)
Bueno, sdi lo que queres es saver como se recorre una lista con nodos como los de arriva aca va:
...
persona tmp;
for (tmp=inicio; tmp; tmp=tmp->siguiente) {
...aca hago una simatoria, o me rasco si me da la gana... pero en cada iteracion tendremos el siguiente campo apuntado por la variable tmp...
}
...
Supongo que inicio es un puntero a una struct tipo persona y queres empezar desde ahi...
Si no te sirve te pido que mandes mas datos y "gentilmente" tratare de responderte...
Los punteros son lo mas poderoso que un programador puede tener entre las manos... no saver usarlos es condenarse a ser esclavos de tipos como Bill y sus colegas (puaj... que asco...)
Como primera... los punteros no son mas que un dato que se interpreta como una pocicion de memoria. Todas las cosas se almacenan en memoria (arquitectura de computadores... para mas detalles)
Asi que un puntero indica donde existe "algo" en memoria... y cuiando digo algo ablo de TODO lo que la memoria puede contener (char, float, uniones, estructuras y todo eso...)
Como supongo que te habras aburrido de estas estupideses sobre la memoria paso al codigo.
Tenes que recorrer la lista (de estructuras) que, supongo, estara terminada en NULL y lo que le pasaras a la funcion es el puntero a la struct donde queres que empieze (es vastante ovio que deveria ser la primera... digo...)
Ahora... no me queda claro para que cuernos le pasas un campo del registro (¿que campo es?... para que lo vas a usar?... deveria venir en el enunciado... creo)
Bueno, sdi lo que queres es saver como se recorre una lista con nodos como los de arriva aca va:
...
persona tmp;
for (tmp=inicio; tmp; tmp=tmp->siguiente) {
...aca hago una simatoria, o me rasco si me da la gana... pero en cada iteracion tendremos el siguiente campo apuntado por la variable tmp...
}
...
Supongo que inicio es un puntero a una struct tipo persona y queres empezar desde ahi...
Si no te sirve te pido que mandes mas datos y "gentilmente" tratare de responderte...
Los punteros son lo mas poderoso que un programador puede tener entre las manos... no saver usarlos es condenarse a ser esclavos de tipos como Bill y sus colegas (puaj... que asco...)
