Logo Hardware.com.br
fiiiaraujo
fiiiaraujo Zerinho Registrado
2 Mensagens 0 Curtidas

Exercicio em Linguagem C

#1 Por fiiiaraujo 13/07/2020 - 19:24
Boa noite galera, alguém consegue me ajudar nesse exercício?

Atividade Prática

José, professor universitário de Arquitetura e Urbanismo, possui em seu escritório caixas e mais caixas de livros e revistas, que aos poucos estão sendo catalogados por sua secretária Vanessa.
Vanessa está catalogando em uma planilha eletrônica os principais dados de Livros e Revistas, tais como (título da obra, edição, nome do autor, editora, isbn, quantidade de exemplares, caixa onde a obra está armazenada e ano).

A proposta da atividade mapa, é o desenvolvimento de um sistema de pequeno porte para o controlar onde estão armazenadas as obras do arquiteto. Para a construção deste sistema, você deverá utilizar a linguagem C, armazenando os dados em arquivo texto.

O sistema a ser construído necessitará atender aos requisitos funcionais abaixo:

1 - Possuir a sua identificação (RA-Nome-Curso)
2 - Possuir um menu de opção.
2.1 - Incluir o registro das obras.
2.2 - Listar todos os livros.
2.3 - Listar todas as revistas.
2.4- Listar as obras por caixa.

O sistema deverá ser entregue da seguinte forma:
Sistema_.c
arquivo.txt

O arquivo com os dados das obras, já devem vir previamente cadastradas com no mínimo: 5 livros e 5 revistas, ambas espalhadas em 3 caixas.
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
13/07/2020 - 19:42
Tópico desmembrado de: https://www.hardware.com.br/comunidade/exercicios/323545
- Favor não levantar tópicos antigos e nem atravessar tópicos de terceiros; Isto atrapalha a organização do fórum.

@fiiiaraujo, seja bem-vindo à Comunidade GdH.
Para ajudarmos a você é necessário que dê início ao programa e relate onde encontrou dificuldades.

Nosso papel é sanear as dúvidas pontuais para que você alcance a solução do problema, wink.png mas não fazemos o trabalho no seu lugar, ok?
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
fiiiaraujo
fiiiaraujo Zerinho Registrado
2 Mensagens 0 Curtidas
#3 Por fiiiaraujo
14/07/2020 - 19:57
Isso foi o que consegui. Se alguém puder corrigir ou me dar umas dicas por favor



#include <stdio.h>
#include <stdlib.h>

void menu(){

printf ("\n\n1 - Cadastrar\n&quot;
printf ("2 - Listar todos os livros.\n&quot;
printf ("3 - Listar todas as revistas.\n&quot;
printf ("4 - Listar as obras por caixa.\n&quot;
printf ("0 - Sair\n\n&quot;
}

FILE* AbreArquivo(char modo, char caminho[100]){

FILE *arquivo;
switch(modo){

case 'g':
arquivo = fopen(caminho,"wt&quot;
break;
case 'l':
arquivo = fopen(caminho,"rt&quot;
break;
case 'a':
arquivo = fopen(caminho,"a&quot;
break;
}

if(arquivo==NULL){

printf("Nao foi possivel abrir o arquivo&quot;
exit(0);

}

return arquivo;
}

void FecharArquivo(FILE *arquivo){

fclose(arquivo);

}

void Cadastra(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){

FILE *arquivo;
arquivo = AbreArquivo('a', "mapa.txt&quot;
fprintf(arquivo, "%[^\n]s %[^\n]s %[^\n]s %d %d %d\n", titulo, autor, editora, caixa, ano, ISBN);

FecharArquivo(arquivo);
}

void CadastraRevista(char titulo[70],char editora[70], char autor[70], int caixa, int ano, int ISBN){

FILE *arquivo;
arquivo = AbreArquivo('a', "mapa.txt&quot;
fprintf(arquivo, "%[^\n]s %[^\n]s %[^\n]s %d %d %d\n", titulo, autor, editora, caixa, ano, ISBN);
FecharArquivo(arquivo);
}

void Listar(){

FILE *arquivo;
char titulo[70];
char autor[70];
char editora[70];
int caixa;
int ano;
int ISBN;

arquivo = AbreArquivo('l',"mapa.txt&quot;

while(!feof(arquivo)){

fscanf(arquivo,"%s %s %s %d %d %d ", &titulo, &autor, &editora, &caixa, &ano, &ISBN);
setbuf(stdin,NULL);
for(int i=0; i<70; i++)printf ("*&quot;
printf("\nTitulo: %s - Autor: %s - Editora: %s - Caixa: %d - Ano: %d - ISBN: %d\n\n", titulo,editora ,autor , caixa, ano, ISBN);

}
FecharArquivo(arquivo);
}

int main(){

char titulo[70];
char autor[70];
char editora[70];
int caixa;
int ano;
int ISBN;
int opcao;



menu();
do{

printf("\nDigite uma opcao: &quot;
scanf("%d", &opcao);
system("cls&quot;

switch(opcao){
case 1:

printf("\nDigite o titulo: &quot;
setbuf(stdin,NULL);
fgets(titulo, 70, stdin);

printf("\nDigite o autor: &quot;
setbuf(stdin,NULL);
fgets(autor,70, stdin);

printf("\nDigite o editora: &quot;
setbuf(stdin,NULL);
fgets(editora, 70,stdin );

printf("\nDigite a caixa: &quot;
scanf("%d", &caixa);

printf("\nDigite o ano: &quot;
scanf("%d", &ano);

printf("\nDigite o ISBN: &quot;
scanf("%d", &ISBN);
Cadastra(titulo, autor, editora, caixa, ano, ISBN);
system("pause&quot;
break;

case 2:
Listar();
system("pause&quot;
break;

case 3:
printf("\n\nFinalizando...\n\n&quot;
system("pause&quot;
exit(0);
break;

default:
printf("\n\nOpcao invalida! Tente Novamente!\n\n&quot;
system("pause&quot;

}
}while(opcao!=3);

return 0;
}
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#4 Por esquiloesper...
15/07/2020 - 01:14
Parabéns, o seu exercício está praticamente completo!

Crie um novo atributo "tipo" para diferenciar os livros das revistas, porque até agora não há como diferenciá-los.
E com base nesta diferenciação poderá "listar" tanto um quanto o outro, conforme os requisitos (2.2) e (2.3)
Por fim, precisa 'listar' filtrando por caixa (o conteúdo todo) e com isso fecha o requisito (2.4)

OBS: Para "filtrar" estes dois últimos passos eu sugiro que crie uma função separada que faça isto segundo cada requisito (que não a Listar.)

Ah... E não esquece de batizar este programa usando o seu RA. (requisito 1)
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal