segunda-feira, 8 de junho de 2015

Programa - Biblioteca

Programa para cadastro de livros, versão 1 - entrada por teclado.


#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