Created
July 7, 2022 00:07
-
-
Save Tsugami/7c047f53b1d27cedd89807897c926d60 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Atividade 1 do livro - Pg126 | |
// O problema consiste em elaborar um cadastro para 20 livros, contendo as seguintes informações: código, título, autor, área, ano e editora. Desenvolver um menu com as seguintes opções: | |
// 1. Cadastrar os livros. | |
// 2. Imprimir as informações dos livros. | |
// 3. Pesquisar livros por código. | |
// 4. Ordenar os livros por ano. | |
// 5. Sair do programa. | |
// No Quadro 11, temos o programa para o problema descrito. Na solução, empregamos o conceito de struct para criar a ficha do livro, vetor de struct para armazenar as informações dos 20 livros, | |
// o método de pesquisa sequencial para efetuar a busca de um livro por código e o método de ordenação da bolha para classificar os livros de acordo com o ano. | |
#include <stdio.h> | |
#include <stdlib.h> | |
struct Book | |
{ | |
int code, year; | |
char title[15]; | |
}; | |
int main() | |
{ | |
int running = 1, page = 0, next_inserted_book_index = 0; | |
struct Book books[6]; | |
do | |
{ | |
switch (page) | |
{ | |
case 0: // home page | |
printf("\n1. Cadastrar os livros\n2. Imprimir as informações dos livros\n3. Pesquisar livros por código.\n4. Ordenar os livros por ano.\n5. Sair do programa.\n-> "); | |
int input = 0; | |
scanf("%d", &input); | |
system("clear"); | |
if (input > 5 || input < 1) | |
{ | |
printf("opção invalida, tente normalmente...\n\n"); | |
} | |
else | |
{ | |
page = input; | |
} | |
break; | |
case 1: // register book | |
if (next_inserted_book_index == 19) | |
{ | |
system("clear"); | |
printf("Você não pode registar mais livros.\n\n"); | |
page = 0; | |
} | |
else | |
{ | |
printf("Cadastre um livro: \n\nTítulo: "); | |
scanf("%s", &books[next_inserted_book_index].title); | |
printf("\nAno: "); | |
scanf("%d", &books[next_inserted_book_index].year); | |
printf("\nCódigo: "); | |
scanf("%d", &books[next_inserted_book_index].code); | |
system("clear"); | |
printf("Livro %d registrado!", books[next_inserted_book_index].code); | |
next_inserted_book_index++; | |
page = 0; | |
} | |
break; | |
case 2: // list books | |
if (next_inserted_book_index == 0) | |
{ | |
printf("Nenhum livro foi registrado ainda.\n\n"); | |
page = 0; | |
} | |
else | |
{ | |
int i = 0; | |
for (i = 0; i < 20; i++) | |
{ | |
if (i == next_inserted_book_index) | |
{ | |
break; | |
} | |
printf("[%d] - %s, %d\n", books[i].code, books[i].title, books[i].year); | |
} | |
// alternativa temporaria do system('pause') | |
int input; | |
printf("\n\nDigite 0 para voltar.\n\n-> "); | |
scanf("%d", &input); | |
page = 0; | |
} | |
break; | |
case 3: // search by code | |
if (next_inserted_book_index == 0) | |
{ | |
printf("Nenhum livro foi registado ainda.\n\n"); | |
page = 0; | |
} | |
else | |
{ | |
int code_to_search; | |
printf("Digite o código do livro que deseja procurar: "); | |
scanf("%d", &code_to_search); | |
int i = 0; | |
for (i = 0; i < 20; i++) | |
{ | |
if (books[i].code == code_to_search) | |
{ | |
printf("\nLivro encontrado: %s, %d\n\n", books[i].title, books[i].year); | |
break; | |
} | |
else if (i == next_inserted_book_index) | |
{ | |
printf("\nLivro não encontrado.\n\n"); | |
break; | |
} | |
} | |
page = 0; | |
} | |
break; | |
case 4: | |
{ | |
int i = 0; | |
int cur = 0; | |
while (cur < next_inserted_book_index) | |
{ | |
if (cur == i) | |
{ | |
i++; | |
} | |
else if (books[cur].year > books[i].year) | |
{ | |
struct Book aux = books[cur]; | |
books[cur] = books[i]; | |
books[i] = aux; | |
} | |
else if ((i + 1) >= next_inserted_book_index) | |
{ | |
i = 0; | |
cur++; | |
} | |
else | |
{ | |
i++; | |
} | |
} | |
printf("\nLivros ordenados por ano! Use 3 para ver.\n\n"); | |
page = 0; | |
break; | |
} | |
default: | |
printf("página desconhecida, volte para o ínicio...\n\n"); | |
page = 0; | |
break; | |
} | |
} while (running != 0); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment