ce l'ho fatta grazie lo stesso per i consigli
vi posto il codice nel caso qualcuno avesse lo stesso problema :
codice:
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define stringa 50
#define dim 500
typedef struct{
char cognome[stringa];
char nome[stringa];
char titolo[stringa];
char casa[stringa];
int anno;
int codice;
}Libro;
int ind=0;
Libro biblioteca[dim];
void inserisci(Libro);
void visualizza_libro(Libro);
void visualizza(void);
void cancella(int);
int ricerca(char[]);
int ricerca_int(int);
void shift(int);
int main(void)
{
int i;
int scl;
int qnt;
int x;
Libro l={"Manfredi","Massimo Valerio","Le idi di marzo","Arnoldo Mondadori",1234,1234567};
char cercato[stringa];
int trv;
int segn=-1;
int risp=-1;
int canc;
int men;
do{
printf("\n************************\n");
printf("1)Visualizza libri presenti\n");
printf("2)Inserisci nuovi libri\n");
printf("3)Ricerca un libro\n");
printf("4)Cancella un libro\n");
scanf("%d" ,&scl);
if(scl < 0 || scl > 4)
printf("hai inserito dei valori invalidi\n");
switch(scl)
{
case 1:
visualizza();
break;
case 2:
printf("\nCompila i seguenti campi:\n");
while(men != -1)
{
printf("Cognome:\n");
scanf("%s" ,&l.cognome);
printf("Nome:\n");
scanf("%s" ,&l.nome);
printf("Titolo:\n");
scanf("%s" ,&l.titolo);
printf("Casa editrice:\n");
scanf("%s" ,&l.casa);
printf("Anno:\n");
scanf("%d" ,&l.anno);
printf("Codice:\n");
scanf("%d" ,&l.codice);
printf("Inserire -1 per terminare, 0 per continuare\n");
scanf("%d" ,&men);
inserisci(l);
}
break;
case 3:
do{
printf("\n***********************\n");
printf("1)Ricerca per autore, titolo, casa editrice\n");
printf("2)Ricerca per anno, codice\n");
printf("0)torna al menu' precedente\n");
scanf("%d" ,&x);
switch(x)
{
case 1:
printf("Inserisci cosa vuoi ricercare:\n");
scanf("%s" ,&cercato);
risp=ricerca(cercato);
if(risp != -1)
printf("Hai cercato %s, che si trova alla posizione %d\n",cercato,risp);
else
printf("Non hai trovato nessun elemento corrispondente\n");
break;
case 2:
printf("inserisci l'elemento da cercare:\n");
scanf("%d" ,&trv);
segn=ricerca_int(trv);
if(segn != -1)
printf("L'elemento cercato:%d si trova nella posizione :%d" ,trv,segn);
else
printf("L'elemento %d non e' stato riscontrato" ,cercato);
break;
}
}while(x != 0);
case 4:
visualizza();
printf("Inserisci il codice\n");
scanf("%d" ,&canc);
cancella(canc);
break;
}
}while(scl != 0);
return 0;
}
void inserisci(Libro wbook)
{
biblioteca[ind]=wbook;
ind++;
}
void visualizza(void)
{
int i;
for(i=0; i<ind; i++)
{
printf("\nLibro numero: %d\n" ,i+1);
visualizza_libro(biblioteca[i]);
}
}
void visualizza_libro(Libro wbook)
{
printf("Cognome:%s\nNome:%s\nTitolo:%s\nCasa Editrice:%s\nAnno;%d\nCodice:%d\n" ,wbook.cognome, wbook.nome, wbook.titolo, wbook.casa, wbook.anno, wbook.codice);
}
int ricerca(char wcercato[])
{
int i=0;
int scl;
int trovato=0;
while(trovato == 0 && i<=ind)
{
if(strcmp(wcercato, biblioteca[i].cognome)==0)
trovato=1;
else if(strcmp(wcercato, biblioteca[i].nome)== 0)
trovato=1;
else if(strcmp(wcercato, biblioteca[i].titolo)== 0)
trovato=1;
else if(strcmp(wcercato, biblioteca[i].casa)== 0)
trovato=1;
i++;
}
if(trovato == 1)
return i;
else
return -1;
}
int ricerca_int(int wcercato)
{
int trovato=0;
int i=0;
while(trovato == 0 && i<ind)
{
if(biblioteca[i].anno == wcercato)
trovato=1;
else if(biblioteca[i].codice == wcercato)
trovato=1;
i++;
}
if(trovato == 1)
return i;
else
return -1;
}
void cancella(int wcancellato)
{
int i;
int pos_canc=-1;
pos_canc=ricerca_int(wcancellato);
if(pos_canc != -1)
{
shift(pos_canc);
ind--;
}
else
printf("Non hai trovato nessun elemento corrispondente\n");
}
void shift(int qcancellato)
{
int i;
for(i=qcancellato; i<ind; i++)
{
biblioteca[i]=biblioteca[i+1];
}
}