Ir para conteúdo
Fórum Script Brasil
  • 0

Código para efetuar o cadastro de livros de uma biblioteca


MarcelPR

Pergunta

Olá gente.

preciso de uma ajuda neste exercicio:

não estou conseguindo fazer a parte do ISSN

Nem a lógica correta para o "ano de publicacao" e "nome da editora"!

Se alguém puder rodar pra dar uma olhada nos errinhos!

pra ajudar!

Obrigado

ai vai o exercicio e o código!

2)Faça um programa em Linguagem C para efetuar o

cadastro de livros de em uma Biblioteca. Assuma que há cinco livros

para cadastrar. Crie um vetor de estrututas com cinco elementos.

Cada elemento do vetor deve ser uma estrutura com os seguintes

campos

• autor: nome do autor. String com 40 caracteres válidos;

• titulo: título do livro. String com 80 caracteres válidos;

• paginas: número de páginas. Variável do tipo int;

• editora: nome da editora. String com 30 caracteres válidos;

• ano: ano da publicação. Variável do tipo int;

• ISSN: International Standard Book Number. String com 17 caracteres

válidos, na forma xxx-x-xx-xxxxxx-x;

O usuário deve entrar com cada um dos campos listados acima

para cada um dos cinco livros. Após o preenchimento, os dados devem

ser armazenados em um arquivo texto denominado livros.txt,

com a seguinte formatação:

----- Livro 1 -----

Autor: Fulano de Tal

Titulo: Segredos de Sicrano

Paginas: 100

Editora: Editoral Abcde

Ano: 2010

ISSN: 000-0-00-000000-0

----- Livro 2 -----

...

#include<stdio.h>
#include<conio.h>
#define N 3
void main()
{
struct book
{
char titulo[81];
char autor[41];
char editora[31];
int pg; /* numerodepaginas */
int ano;
};
struct book livro[N];
int i;
char temp[5];
for(i=0;i<N;i++)
{
printf("Livro%d\n",i+1);
printf("Digite o titulo do livro:");
gets(livro[i].titulo);
printf("Digite o nome do autor:");
gets(livro[i].autor);
printf("Digite o numero de paginas:");
gets(temp);
livro[i].pg=atoi(temp);
printf("Ano da publicacao:");
gets(livro[i].ano);
printf("Nome da editora:");
gets(temp);
printf("\n");
}
/* impressão */
for(i=0;i<N;i++)
{
fprintf("-----Livro%d-----\n",i+1);
fprintf("Titulo:\t%s\n",livro[i].titulo);
fprintf("Autor:\t\t%s\n",livro[i].autor);
fprintf("Paginas:\t%d\n",livro[i].pg);
fprintf("Editora:\t%d\n",temp);
fprintf("Ano:\t%d\n",livro[i].ano);
fprintf("\n");
}
system("pause");
}

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Bom dia,

testei seu código aqui e vi que tinha alguns erros

Primeiramente você declarou a estrutura dentro do main.

Coloque a estrutura FORA do main.

struct book {
    //todos atributos
}

main() {
    struct book livro[N];
    .
    .
    .
}
Agora um detalhe é quando você lê os dados. Quando os dados são do tipo string você está lendo com gets (correto) mas se for do tipo int utilize o scanf Tente assim
printf("Digite o numero de paginas:");
scanf("%d", &livro[i].pg);
//gets(temp);
//livro[i].pg=atoi(temp);
printf("Ano da publicacao:");
scanf("%d", &livro[i].ano);
printf("Nome da editora:");
fflush(stdin);
gets(temp);

O gets é para ler dados do tipo string. Portanto utilize o scanf

A instrução fflush serve para que o gets não leia o buffer do teclado, por isso rodará normalmente.

Troque por esse código e tente compilar.

Mais um detalhe: tire o fprintf e coloque só printf para imprimir na tela.

O fprintf é para escrever em um arquivo, mas primeiro você precisa abrir o arquivo e mandar imprimir dentro dele.

Sugiro que para faze-lo procure mais sobre manipulação de arquivos.

Procure na net que será fácil encontrar e para imprimir no arquivo é só seguir os tutoriais ok?

Mas para rodar esse daí siga os procedimentos acima.

Att

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela ajuda

mais está dando alguns erros ainda,

em "struct book livro[N]"

e no for também

o que pode ser?

#include<stdio.h>
#include<conio.h>
#define N 3

struct book;
char titulo[81];
char autor[41];
char editora[31];
int pg; /* numerodepaginas */
int ano;
void main()
{
struct book livro[N];
int i;
char temp[5];
}
for(i=0;i<N;i++)
{
printf("Livro%d\n",i+1);
printf("Digite o titulo do livro:");
gets(livro[i].titulo);
printf("Digite o nome do autor:");
gets(livro[i].autor);
printf("Digite o numero de paginas:");
scanf("%d", &livro[i].pg);
//gets(temp);
//livro[i].pg=atoi(temp);
printf("Ano da publicacao:");
scanf("%d", &livro[i].ano);
printf("Nome da editora:");
fflush(stdin);
gets(temp)
printf("\n");
}
/* impressão */
for(i=0;i<N;i++)
{
printf("-----Livro%d-----\n",i+1);
printf("Titulo:\t%s\n",livro[i].titulo);
printf("Autor:\t\t%s\n",livro[i].autor);
printf("Paginas:\t%d\n",livro[i].pg);
printf("Editora:\t%d\n",temp);
printf("Ano:\t%d\n",&livro[i].ano);
printf("\n");
}
system("pause");
}

Editado por MarcelPR
Link para o comentário
Compartilhar em outros sites

  • 0

Está dando erro no for

não estou conseguindo achar o motivo, é o unico erro!

O que seria?

#include<stdio.h>
#include<conio.h>
#define N 3

struct book;

char titulo[81];
char autor[41];
char editora[31];
int pg; /* numerodepaginas */
int ano;

int main()

struct book livro[N];
int i;
char temp[5];

for(i=0;i<N;i++)
{
printf("Livro%d\n",i+1);
printf("Digite o titulo do livro:");
gets(livro[i].titulo);
printf("Digite o nome do autor:");
gets(livro[i].autor);
printf("Digite o numero de paginas:");
scanf("%d", &livro[i].pg);
//gets(temp);
//livro[i].pg=atoi(temp);
printf("Ano da publicacao:");
scanf("%d", &livro[i].ano);
printf("Nome da editora:");
fflush(stdin);
gets(temp)
printf("\n");
}
/* impressão */
for(i=0;i<N;i++)
{
printf("-----Livro%d-----\n",i+1);
printf("Titulo:\t%s\n",livro[i].titulo);
printf("Autor:\t\t%s\n",livro[i].autor);
printf("Paginas:\t%d\n",livro[i].pg);
printf("Editora:\t%d\n",temp);
printf("Ano:\t%d\n",&livro[i].ano);
printf("\n");
}
system("pause");
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...