#include <stdio.h>
#include <stdlib.h>
struct livro{
char nome[20];
int ano;
int pag;
float preco;
};
void ordena_ano(struct livro*,int);
void ordena_pag(struct livro*,int);
void ordena_preco(struct livro*,int);
void paginas_acervo(struct livro*,int);
int menu(void);
int main()
{
int item,i=0,k;
struct livro biblioteca[10];
while(1)
{
item = menu();
switch(item)
{
case 1:
printf("Entre com o nome do livro e de <enter>\n");
printf("Entre com o ano da edicao, num. de paginas e valor e de <enter>\n");
printf("separados por espaco\n");
gets(biblioteca[i].nome);
scanf("%d %d %f",&biblioteca[i].ano,&biblioteca[i].pag,&biblioteca[i].preco);
i++;
break;
case 2:
printf("Nome Ano Paginas Preco\n");
for(k=0;k<i;k++)
{
printf("%-20s %4d %7d %7.2f\n",biblioteca[k].nome,biblioteca[k].ano,biblioteca[k].pag,biblioteca[k].preco);
}
break;
case 3:
ordena_ano(biblioteca,i);
break;
case 4:
ordena_pag(biblioteca,i);
break;
case 5:
ordena_preco(biblioteca,i);
break;
case 6:
paginas_acervo(biblioteca,i);
break;
case 7:
return 0;
default:
printf("Opcao inexistente\n");
break;
}
}
return 0;
}
int menu()
{
int retorno;
printf("<1> Cadastra novo livro\n");
printf("<2> Mostre o acervo\n");
printf("<3> Ordena por ano de edicao\n");
printf("<4> Ordena por num. de paginas\n");
printf("<5> Ordena por preco (crescente)\n");
printf("<6> Numero de paginas do acervo\n");
printf("<7> sair\n");
scanf("%d",&retorno);
fflush(stdin);
return retorno;
}
void ordena_ano(struct livro* biblio ,int i)
{
int j,k;
struct livro temp;
for(j=0;j<i;j++)
for(k=1;k<i;k++)
if((biblio+k-1)->ano < (biblio+k)->ano)
{
temp =*(biblio+k-1);
*(biblio+k-1) = *(biblio+k);
*(biblio+k) = temp;
}
printf("Nome Ano Paginas Preco\n");
for(k=0;k<i;k++)
{
printf("%-20s %4d %7d %7.2f\n",(biblio+k)->nome,
(biblio+k)->ano,(biblio+k)->pag,(biblio+k)->preco);
}
}
void ordena_pag(struct livro* biblio ,int i)
{
int j,k;
struct livro temp;
for(j=0;j<i;j++)
for(k=1;k<i;k++)
if((biblio+k-1)->pag < (biblio+k)->pag)
{
temp =*(biblio+k-1);
*(biblio+k-1) = *(biblio+k);
*(biblio+k) = temp;
}
printf("Nome Ano Paginas Preco\n");
for(k=0;k<i;k++)
{
printf("%-20s %4d %7d %7.2f\n",(biblio+k)->nome,
(biblio+k)->ano,(biblio+k)->pag,(biblio+k)->preco);
}
}
void ordena_preco(struct livro* biblio ,int i)
{
int j,k;
struct livro temp;
for(j=0;j<i;j++)
for(k=1;k<i;k++)
if((biblio+k-1)->preco > (biblio+k)->preco)
{
temp =*(biblio+k-1);
*(biblio+k-1) = *(biblio+k);
*(biblio+k) = temp;
}
printf("Nome Ano Paginas Preco\n");
for(k=0;k<i;k++)
{
printf("%-20s %4d %7d %7.2f\n",(biblio+k)->nome,
(biblio+k)->ano,(biblio+k)->pag,(biblio+k)->preco);
}
}
void paginas_acervo(struct livro* biblio ,int i)
{
int k,soma=0;
for(k=0;k<i;k++)
soma = soma + (biblio+k)->pag;
printf("O numero de paginas do acervo eh %d\n",soma);
}
Nenhum comentário:
Postar um comentário