Biblioteca: creación y búsqueda de información

Pilar Masoli

/* Este programa permite crear una biblioteca y buscar libros insertados a partir del autor.
No tiene memoria, por lo tanto cuando se cierra la ejecución se pierden los datos insertados. */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM 100

struct libro
{
       char autor[15];
       char titulo[40];
       int anio;
       int prestamo;
};

typedef struct libro Libro;

struct biblioteca
{
       Libro biblio[NUM];
       int num_lib;
};

typedef struct biblioteca Biblioteca;

void leer_libro (Biblioteca *);
int buscar_libro (Biblioteca *, char *, int *);

int main()
{
    Biblioteca mi_biblioteca;
    int n,i;
    char cad[40];
   
    mi_biblioteca.num_lib=0;
    printf("n Cuantos libros vas a introducir: ");
    scanf("%d", &n);      
    for (i=0; i<n; i++)
    {
        printf("n Introduce datos del libro: %d n",i+1);
        leer_libro(&mi_biblioteca);
        system("cls");
    }
    fflush(stdin);
    printf("n Dame autor del libro que quieres buscar: n");
    gets(cad);
    n=buscar_libro(&mi_biblioteca, cad, &i);
    if (n==1)
    {
             printf("n He encontrado ese libro. n");
             printf("nSu titulo es: ");
             puts(mi_biblioteca.biblio[i].titulo);
             printf(" nSu anio de edicion es: %dn",mi_biblioteca.biblio[i].anio);
             printf("nEsta prestado: %d nn", mi_biblioteca.biblio[i].prestamo);
    }
    else
        printf("n Ese autor no esta en la bibliotecann");
system ("PAUSE");
return 0;
}

void leer_libro (Biblioteca *p)
{
     char cad[40];
     int n=p->num_lib;

     fflush (stdin);    
     printf("n Dame el titulo del libro: n");
     gets(cad); // gets es como scanf
     strcpy(p->biblio[n].titulo, cad); // strcpy sirve para copiar; el punto nos indica donde y el cad que vamos a copiar
     fflush (stdin);
     printf("n Dame el autor: n");
     gets(cad);
     strcpy(p->biblio[n].autor,cad);
     fflush (stdin);
     printf("n Dame el anio de publicacion: n");
     scanf("%d", &(p->biblio[n].anio)); // leo y paso
     p->biblio[n].prestamo=0;
     p->num_lib++;
}

int buscar_libro (Biblioteca *p, char *cad, int *i)
{
    int j;
   
    for (j=0; j<p->num_lib; j++)
    {
        if (strcmp (p->biblio[j].autor, cad)==0)
        /* strcmp() es un string de comparacion.
           Compara dos cadenas de caracteres por orden léxicografico (hola < hopa).
           Asigna -1 si cad1<cad2, 0 si cad1=cad2, 1 si cad1>cad2 */
        {
                   *i=j;
                   return 1;
        }
    }
    *i=-1;
    return 0;
}

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Una respuesta a Biblioteca: creación y búsqueda de información

  1. Ricardo dijo:

    ok, ric.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s