Você está na página 1de 6

#include <stdio.

h>
#include <string.h>

struct livro
{
char titulo[60];
char autor[80];
char estilo[20];
int codigo, ano;
float preco;
};

void leitura(struct livro *b, int tam);


void impressao(struct livro *b, int tam);
void buscarAutor (struct livro *b, char autor, int tam);
void buscarTitulo (struct livro *b, char titulo, int tam);
void buscarEstilo (struct livro *b, char estilo, int tam);
void buscarCod (struct livro *b, int codigo, int tam);
float calculaMedia (struct livro *b, int tam);
void buscarAno (struct livro *b, int ano, int tam);

int main()
{
struct livro *b;
int op, tam, codigo, ano;
char estilo, titulo, autor;

printf("Informe o tamanho do vetor: ");


scanf("%d", &tam);

b = (struct livro*)malloc(tam*sizeof(struct livro));

if (b==NULL)
{ printf("\n\nIMPOSSÍVEL ALOCAR MEMÓRIA.\n\n");
return 1;
}

do
{
printf("1 - Inserir livro \n\n 2- Listar livros\n\n 3-
Buscar por autor \n\n 4- Buscar por titulo \n\n 5- Buscar por
estilo \n\n 6 - Buscar por código \n\n 7 - Calcular média dos
preços \n\n 8 - Buscar por ano da publicação \n\n 9 - Sair\n\n
Opção:");
scanf("%d", &op);

switch(op)
{
case 1:
leitura(b,tam);
break;

case 2:
impressao(b,tam);
break;

case 3:
buscarAutor(b,autor,tam);
break;

case 4:
buscarTitulo(b,titulo,tam);
break;
case 5:
buscarEstilo(b,estilo,tam);
break;
case 6:
buscarCod(b,codigo, tam);
break;
case 7:
calculaMedia(b,tam);
break;
case 8:
buscarAno(b,ano,tam);
break;
case 9:
printf("Finalizar. \n");
break;

default:
printf("Opção Inválida\n");
}
}
while (op!=9);

void leitura(struct livro *b, int tam)


{
int i;4

for(i=0;i<tam;i++)
{ fgetc(stdin);

printf("Titulo %d: ", i);


gets((b+i)->titulo);

printf("Autor %d: ", i);


gets((b+i)->autor);
printf("Estilo %d: ", i);
gets((b+i)->estilo);

printf("Código %d: ", i);


scanf("%d", &(b+i)->codigo);

printf("Ano %d: ", i);


scanf("%d", &(b+i)->ano);

printf("Preco %d: ", i);


scanf("%f", &(b+i)->preco);

printf("\n");

b++;
}
}

void impressao(struct livro *b, int tam)


{
int i;

for(i=0;i<tam;i++)
{
printf("%d\nTitulo: %s\n Autor: %s\n Estilo: %s\n Codigo:
%d\n Ano: %d\n Preco:%f\n\n", (b+i)->titulo, (b+i)->autor, (b+i)-
>estilo, (b+i)->codigo, (b+i)->ano, (b+i)->preco);
b++;
}
}

void buscarAutor (struct livro *b, char autor, int tam)


{ int i, k=0;
char a[80];

printf("\n\nInforme um autor: ");


gets(a);

for(i=0;i<tam;i++)
{ if (a == (b+i)->autor)
{ printf("\n\nTitulo: %s\n", (b+i)->titulo);
printf("\n\nCódigo: %d\n", (b+i)->codigo);
printf("\n\nEstilo: %s\n", (b+i)->estilo);
printf("\n\nAno de publicação: %d\n", (b+i)->ano);
printf("\n\nPreço: %f\n", (b+i)->preco);
}
else
k++;
if (k == tam)
printf("\n\nAUTOR NAO ENCONTRADO\n\n");
}
}

void buscarTitulo (struct livro *b, char titulo, int tam)


{ int i, k=0;
char t[60];

printf("\n\nInforme um titulo: ");


gets(t);
for(i=0;i<tam;i++)
{ if (t == (b+i)->titulo)
{
printf("\n\nAutor: %s\n", (b+i)->autor);
printf("\n\nEstilo: %s\n", (b+i)->estilo);
printf("\n\nCódigo: %d\n", (b+i)->codigo);
printf("\n\nAno de publicação: %d\n", (b+i)->ano);
printf("\n\nPreço: %f\n", (b+i)->preco);
}
else
k++;
if (k == tam)
printf("\n\nTITULO NAO ENCONTRADO\n\n");
}
}

void buscarEstilo (struct livro *b, char estilo, int tam)


{ int i, k=0;
char e[20];

printf("\n\nInforme um estilo: ");


gets(e);

for(i=0;i<tam;i++)
{ if (e == (b+i)->estilo)
{ printf("\n\nTitulo: %s\n", (b+i)->titulo);
printf("\n\nAutor: %s\n", (b+i)->autor);
printf("\n\nCódigo: %d\n", (b+i)->codigo);
printf("\n\nAno de publicação: %d\n", (b+i)->ano);
printf("\n\nPreço: %f\n", (b+i)->preco);
}
else
k++;
if (k == tam)
printf("\n\nESTILO NAO ENCONTRADO\n\n");
}
}

void buscarCod (struct livro *b, int codigo, int tam)


{ int i, k=0, c;
printf("\n\nInforme um código: ");
scanf("%d", &c);

for(i=0;i<tam;i++)
{ if (c == (b+i)->codigo)
{ printf("\n\nTitulo: %s\n", (b+i)->titulo);
printf("\n\nAutor: %s\n", (b+i)->autor);
printf("\n\nEstilo: %s\n", (b+i)->estilo);
printf("\n\nAno de publicação: %d\n", (b+i)->ano);
printf("\n\nPreço: %f\n", (b+i)->preco);
}
else
k++;
if (k == tam)
printf("\n\nCODIGO NAO ENCONTRADO\n\n");
}
}

float calculaMedia (struct livro *b, int tam)


{ int i;
float media, soma=0;

for(i=0;i<tam;i++)
soma = soma + (b+i)->preco;

media = soma/tam;
return (media);
}

void buscarAno (struct livro *b, int ano, int tam)


{ int i, k=0, an;

printf("\n\nInforme um ano: ");


scanf("%d", &an);

for(i=0;i<tam;i++)
{ if (an == (b+i)->ano)
{ printf("\n\nTitulo: %s\n", (b+i)->titulo);
printf("\n\nAutor: %s\n", (b+i)->autor);
printf("\n\nEstilo: %s\n", (b+i)->estilo);
printf("\n\nCódigo: %d\n", (b+i)->codigo);
printf("\n\nPreço: %f\n", (b+i)->preco);
}
else
k++;
if (k == tam)
printf("\n\nCODIGO NAO ENCONTRADO\n\n");
}
}

Você também pode gostar