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

Funciones con punteros

Estas en el tema de Funciones con punteros en el foro de C/C++ en Foros del Web. Hola compañeros, soy medio nuevo en esto de la programacion y tengo que hacer un proyecto de una base de datos para entrega final. Tengo ...
  #1 (permalink)  
Antiguo 20/12/2012, 11:25
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Funciones con punteros

Hola compañeros,
soy medio nuevo en esto de la programacion y tengo que hacer un proyecto de una base de datos para entrega final. Tengo varias dudas a ver si los sabios de la comunidad me la saben resolver. Tengo que realizar una base de datos con funciones, punteros y tal que tengo algo hecho.
Código:
#include "funciones.h"

struct caracteristicas {
    char nombre[15];
    int edad;
    int peso;
    int cantidad;
    char habitat [20];
    int identificacion;
    struct caracteristicas *siguiente;
};

// Insertar especie
void crear(struct caracteristicas **primera, struct caracteristicas **ultima, int *nCaracteristicas){

    struct caracteristicas *especie=NULL; //puntero que apuntara a la especie que estamos creando

// Asignamos el espacio de memoria necesario para la especie
    if ((especie=malloc(sizeof(struct caracteristicas)))==NULL){
        puts("Error al asignar la memoria");
    } else {
        // pedimos los datos de la especie
        puts("Dar de alta una especie:\n");
        puts("Dime el nombre de la especie: ");
        gets(especie->nombre);
        fflush(stdin);
        puts("Dime la edad: ");
        scanf("%d",&especie->edad);
        fflush(stdin);
         puts("Dime el peso: ");
        scanf("%d",&especie->peso);
        fflush(stdin);
         puts("Dime la cantidad: ");
        scanf("%d",&especie->cantidad);
        fflush(stdin);
         puts("Dime el habitat: ");
        gets(especie->habitat);
        fflush(stdin);
        puts("Dime el numero identificativo: ");
        scanf("%d",&especie->identificacion);
        printf("\n\n");
        especie->siguiente=NULL;
        
        // Ponemos siguiente a null ya que la especie actual sera la ultima
        if (*primera==NULL){
            // Si primera es null no tenemos especies y la primera y ultima seran la actual
            *ultima=especie;
            *primera=especie;
        } else {
            // Si ya tenemos especies el puntero siguiente de la ultima persona apuntara
            // a la actual y la ultima sera esta
            (**ultima).siguiente=especie;
            *ultima=especie;
        }
        (*nCaracteristicas)++;
        puts("Insercion correcta");
    }
}


// Mostrar las especies de la lista
void mostrar(struct caracteristicas *primera){

    if ((primera==NULL)){
        puts("No hay personas insertadas");
    } else {
        struct caracteristicas *carActual=primera;
        // Asignamos la primera especie al puntero y mostramos sus datos
        do {
            printf("Nombre: %s\nEdad: %d\nCantidad: %d\nNumero identificativo: %d\n",carActual->nombre, carActual->edad,carActual->cantidad, carActual->identificacion);
            printf("\n\n");
            // Buscamos la siguiente persona y apuntamos a ella
            carActual=carActual->siguiente;
        } while(carActual!=NULL);
        
    }
}
Ahora a partir de esto tengo que crear una funcion para borrar, modificar una especie ya introducida, aumentar y disminuir cantidad de animales...
Si alguien me pudiera ayudar se lo agradeceria. :)

Última edición por pique93; 20/12/2012 a las 11:51
  #2 (permalink)  
Antiguo 20/12/2012, 12:27
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Funciones con punteros

Has estudiado algo de listas enlazadas?
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 20/12/2012, 12:41
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Funciones con punteros

Muy poco, pero la practica no tiene limitaciones... si me lo explicas y lo entiendo te lo agradeceria.
  #4 (permalink)  
Antiguo 20/12/2012, 12:56
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Funciones con punteros

Pues básicamente has de buscar como insertar, buscar, borrar en la estructura de datos que estás usando para guardar la informacio y, en este caso, es una lista enlazada.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 20/12/2012, 12:58
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Funciones con punteros

Hola! creo que seria algo dificil y extenso explicar por este medio todo el manejo de listas(es un tema dificil si recien empezas); para eso existe google:

http://c.conclase.net/edd/index.php

sino tenes este libro(capitulo 9 sino me equivoco): "Programacion en C Metodologia, Algoritmos y Estructura de datos"


Saludos
  #6 (permalink)  
Antiguo 22/12/2012, 11:11
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Funciones con punteros

Gracias Cesar, me pondre con el libro y la info que me as mandado. Si no entiendo algo lo pregunto vale?. Muchas gracias de nuevo y un abrazo.
  #7 (permalink)  
Antiguo 22/12/2012, 16:16
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Funciones con punteros

Compañeros... esto de la listas me parece muy complicado y entiendo poco.. Se os ocurre alguna forma de hacer una base de datos para que haga lo mismo?

Gracias y un saludo.
  #8 (permalink)  
Antiguo 22/12/2012, 19:16
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Funciones con punteros

Lleva tiempo aprender listas... otra forma puede ser parecido al ejemplo del capitulo 11.10 del libro: "Como programar en C/C++"
Fijate que no maneja listas, sino que segun un "campo clave" accede a los registros de los clientes. La forma de acceder al archivo se conoce como: acceso aleatorio


Saludos
  #9 (permalink)  
Antiguo 25/12/2012, 12:02
 
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Funciones con punteros

Alfinal me he puesto enserio con las listas... ya voy medio entendiendo pero tengo una duda, para hacer la funcion borrar, primero quiero buscarlo y luego borrar ese dato, ¿se os ocurre de alguna forma?


Gracias, un saludo
  #10 (permalink)  
Antiguo 25/12/2012, 13:18
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Funciones con punteros

Cita:
Iniciado por pique93 Ver Mensaje
Alfinal me he puesto enserio con las listas... ya voy medio entendiendo pero tengo una duda, para hacer la funcion borrar, primero quiero buscarlo y luego borrar ese dato, ¿se os ocurre de alguna forma?


Gracias, un saludo
Pues para buscarlo tendrás que recorrer la lista hasta encontrarlo y para eliminarlo es simplemente jugar con los punteros.

Como entenderás, aquí estamos para guiarte no para hacerte los deberes de la escuela. Y ese ejemplo que pones es una ejercicio clarisimo para que trabajes con listas. Si no eres capaz de hacerlo vas a tener que repasar (o estudiar) tanto el tema de las listas como el trabajo con punteros.
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: funcion, funciones, int, programa, punteros
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 14:04.