Bom, tenho que colocar um programa já pronto, mas sem arquivo, em um arquivo... a professora de algoritmos deu ele sem arquivos pra fazer, fiz... e agora o prof de programação quer ele com arquivos, mas ele mal explicou e já mandou fazer esse... nem treinamos, só aprendemos a abrir 'malemal'... e tals, tenho a mínima idéia de como colocaria dentro do arquivo, se é registro por registro, ou como que é...
O programa consiste em cadastro de livros, de usuarios, emprestimo de livro, devolução e exibição do extrato do usuário (codigos dos livros que ele tem emprestado);
Alguma dica?
Aqui está o código sem arquivos:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
LEMBRAR de inicializar todos campos do registro. todos livros.disponivel devem
ser = 1, pois estao disponiveis.
Todos livros do usuario, devem receber -1, pra dizer que estao vazios.
*/
typedef struct//usuarios
{
char nome[30]; //nome do usuario
int codigo; //codigo usuario
char endereco[40]; //endereço
char dataNasc; //data de nascimento
int telefone; //telefone
char categoria[10]; //categoria /aluno ou professor/
int livros[3]; //3 livros por usuario;
} usr;
typedef usr usuario;
usuario usuarios[30]; //cria um vetor de usuario
typedef struct //livros
{
int codigo; //codigo livros
char titulo[30];
char autor[30];
char assunto[30];
char editora[10];
int ano;
int edicao;
int disponivel;
}liv;
typedef liv livro;
livro livros[100]; //cria um vetor de livros...
void inicializa()
{
int i=0;
for(i=0;i<50;i++)
{
usuarios[i].livros[0]=-1;
usuarios[i].livros[1]=-1;
usuarios[i].livros[2]=-1;
}
for(i=0;i<100;i++)
{
livros[i].disponivel=1;//de começo todos livros estao disponiveis!
}
}
int buscaUsuario(usuario usuarios[],int numeroUsuarios,int codigoUsuario)
//passa como parametro o vetor dos usuarios, o numero de usuarios cadastrados
//e o codigo do usuario a ser procurado.
{
int i=0;
for(i=0;i<numeroUsuarios;i++)
{
if(usuarios[i].codigo==codigoUsuario)
return i;
}
return -1;
//busca o usuario, se achar retorna o indice dele no vetor;
//se não achar, retorna -1...
}
int cadastrarUsuarios(usuario usuarios[])
{
printf("\n\n*** CADASTRO DE USUARIOS ***\n\n");
int numeroUsuarios=0;
int i=0;
printf("\nInforme o numero de usuarios a serem cadastrados: ");
scanf("%d",&numeroUsuarios);
for(i=0;i<numeroUsuarios;i++)
{
printf("\nNome: ");
scanf("%s",&usuarios[i].nome);
fflush(stdin);
printf("\nCodigo: ");
scanf("%d",&usuarios[i].codigo);
fflush(stdin);
printf("\nEndereco: ");
scanf("%d",&usuarios[i].endereco);
fflush(stdin);
printf("\nData de Nascimento: ");
scanf("%d",&usuarios[i].dataNasc);
fflush(stdin);
printf("\nTelefone: ");
scanf("%d",&usuarios[i].telefone);
fflush(stdin);
printf("\nCategoria: ");
scanf("%d",&usuarios[i].categoria);
fflush(stdin);
}
}
int locaLivro(livro livros[], int nLivros,int codigoLivro)
{
int i=0;
for(i=0; i<nLivros;i++)
{
if(livros[i].codigo==codigoLivro )
{
if(livros[i].disponivel==1)//não tava verificando a disponibilidade do livro,
//sempre que alguém queria pegar, podia...
{ //se o livro existir, e se for disponivel retorna seu codigo....
livros[i].disponivel=0;
return (livros[i].codigo);
}
else
{
printf("\nO Livro não esta disponivel!");
return -1;//senao retorna -1!
}
}
}
return -1;
//Vai chamar pro usuario, ai atribui o resultado numa posicao do vetor do
//usuario.
}
int devolve(livro livros[],int nLivros,int codigo)
{
int i=0;
for(i=0;i<nLivros;i++)
{
if(livros[i].codigo==codigo)
{
livros[i].disponivel=1;
return -1;
}
}
return -1;
}
int cadastraLivro(livro livros[])
{
printf("\n\n*** CADASTRO DE LIVROS ***\n\n");
int i=0;
int numeroLivros;
printf("Quantidade de livros: ");
scanf("%d",&numeroLivros);
for(i=0;i<numeroLivros;i++)
{
printf("\nTitulo: ");
scanf("%s",&livros[i].titulo);
fflush(stdin);
printf("\nCodigo: ");
scanf("%d",&livros[i].codigo);
fflush(stdin);
printf("\nAutor: ");
scanf("%s",&livros[i].autor);
fflush(stdin);
printf("\nAssunto: ");
scanf("%s",&livros[i].assunto);
fflush(stdin);
printf("\nEditora: ");
scanf("%s",&livros[i].editora);
fflush(stdin);
printf("\nAno: ");
scanf("%s",&livros[i].ano);
fflush(stdin);
printf("\nEdicao: ");
scanf("%s",&livros[i].edicao);
fflush(stdin);
}
return numeroLivros;//vai retornar a quantidade de livros que tem,
//que ficara salva como variavel global para ser
//acessada por outras funções.
}
void ConsultaLivro(livro livros[])
{
int i=0;
char tOUa[15]; //titulo ou autor;
printf("\n\n*** CONSULTA DE LIVRO ***\n\n");
printf("\n\nInforme o titulo ou o autor do livro que deseja consultar: ");
scanf("%s", &tOUa);
fflush(stdin);
if ((strcmp(tOUa,livros[i].titulo)== 0 ) || (strcmp(tOUa,livros[i].autor)== 0))
{
printf("\nTitulo: %s", livros[i].titulo);
printf("\nCodigo: %d", livros[i].codigo);
printf("\nAssunto: %s", livros[i].assunto);
printf("\nAutor: %s", livros[i].autor);
printf("\nEditora: %s", livros[i].editora);
printf("\nAno %d", livros[i].ano);
printf("\nEdicao: %d", livros[i].edicao);
}
if (livros[i].disponivel == 1)
{
printf("\n\nEste livro esta disponivel\n\n");
}
else if (livros[i].disponivel == 0)
{
printf("\n\nEste livro não esta disponivel\n\n");
}
}
void Extrato (livro livros[], usuario usuarios[], int numeroUsuarios)
{
printf("\n\n*** EXTRATO DO USUARIO ***\n\n");
int i=0;
int codUsuario=0;
printf("Informe seu codigo de usuario: ");
scanf("%d", &codUsuario);
int pos = buscaUsuario(usuarios, numeroUsuarios, codUsuario);
if(usuarios[pos].livros[0]!=-1)
printf("Livro 1 : %d", livros[i].codigo);
if(usuarios[pos].livros[1]!=-1)
printf("Livro 2 : %d", livros[i].codigo);
if(usuarios[pos].livros[2]!=-1)
printf("Livro 3 : %d\n\n", livros[i].codigo);
if ((usuarios[pos].livros[0] == -1) && (usuarios[pos].livros[1] == -1) && (usuarios[pos].livros[2] == -1))
printf("Este usuario não tem livros em seu extrato/locados");
}
int main()
{
printf("*ATENCAO: AO INICIAR O PROGRAMA, CADASTRE LIVRO(S) E USUARIO(S) PRIMEIRAMENTE*\n\n");
int numeroLivros=0;
//inicializa com 0, senao na busca da pau!
int opcao=0;
int codigoUsuario=0;
int codigoLivro=0;
int numeroUsuarios=0;
inicializa(); //zera os livros dos usuarios;
do
{
printf("\n*** MENU ***\n\n");
printf("Opcoes:\n");
printf("\n1 - Cadastrar livros");
printf("\n2 - Cadastrar usuarios");
printf("\n3 - Consultar Livros");
printf("\n4 - Locar livro");
printf("\n5 - Devolver Livro");
printf("\n6 - Extrato Usuario");
printf("\n7 - Sair do programa\n\n");
printf("Informe a opcao: ");
scanf("%d",&opcao);
switch(opcao)
{
case 1:
{
numeroLivros=cadastraLivro(livros);
break;
}
case 2:
{
numeroUsuarios=cadastrarUsuarios(usuarios);
break;
}
case 3:
{
if(numeroLivros>0)
{
ConsultaLivro(livros);
}
else
printf("\nNenhum livro no acervo!\n");
break;
}
case 4:
{
printf("\n\n*** EMPRESTIMO DE LIVROS ***\n\n");
printf("\nCodigo do usuario: ");
scanf("%d",&codigoUsuario);//le o codigo do usuario que vai locar o livro...
printf("\nCodigo do livro: ");
scanf("%d",&codigoLivro);
//se o codigo do usuario existe, [pos] guardara sua posicao no vetor;
//procura a primeira posicao vazia!
//lembrar de verificar se tem usuarios cadastrados e tals...
int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario);
if(usuarios[pos].livros[0]==-1)
usuarios[pos].livros[0]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else if(usuarios[pos].livros[1]==-1)
usuarios[pos].livros[1]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else if(usuarios[pos].livros[2]==-1)
usuarios[pos].livros[2]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else
printf("\nNao foi possivel locar o livro\n");
break;
}
case 5:
{
printf("\n\n*** DEVOLUCAO DE LIVROS ***\n\n");
printf("\nCodigo do usuario: ");
scanf("%d",&codigoUsuario);
printf("\nCodigo do livro: ");
scanf("%d",&codigoLivro);
int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario);
if(usuarios[pos].livros[0]==codigoLivro)
usuarios[pos].livros[0]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else if(usuarios[pos].livros[1]==codigoLivro)
usuarios[pos].livros[1]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else if(usuarios[pos].livros[2]==codigoLivro)
usuarios[pos].livros[2]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else
printf("\nNao foi possivel entregar o livro");
break;
}
case 6:
{
Extrato(livros, usuarios, numeroUsuarios);
break;
}
case 7:
{
exit(0);//chama uma funcao da stdlib.h, que sai do programa, passando como
//parametro 0: uma antiga convenção para dizer que saiu por vontade da
//programadora, e não por um erro do sistema.
break;
}
default:
{
printf("\nEntre com uma opcao valida!\n");
break;
}
}
}while(1);//vai repitir até escolher a opcao 7.
}
Pergunta
AlineI
Bom, tenho que colocar um programa já pronto, mas sem arquivo, em um arquivo... a professora de algoritmos deu ele sem arquivos pra fazer, fiz... e agora o prof de programação quer ele com arquivos, mas ele mal explicou e já mandou fazer esse... nem treinamos, só aprendemos a abrir 'malemal'... e tals, tenho a mínima idéia de como colocaria dentro do arquivo, se é registro por registro, ou como que é...
O programa consiste em cadastro de livros, de usuarios, emprestimo de livro, devolução e exibição do extrato do usuário (codigos dos livros que ele tem emprestado);
Alguma dica?
Aqui está o código sem arquivos:
#include <stdio.h> #include <stdlib.h> #include <string.h> /* LEMBRAR de inicializar todos campos do registro. todos livros.disponivel devem ser = 1, pois estao disponiveis. Todos livros do usuario, devem receber -1, pra dizer que estao vazios. */ typedef struct//usuarios { char nome[30]; //nome do usuario int codigo; //codigo usuario char endereco[40]; //endereço char dataNasc; //data de nascimento int telefone; //telefone char categoria[10]; //categoria /aluno ou professor/ int livros[3]; //3 livros por usuario; } usr; typedef usr usuario; usuario usuarios[30]; //cria um vetor de usuario typedef struct //livros { int codigo; //codigo livros char titulo[30]; char autor[30]; char assunto[30]; char editora[10]; int ano; int edicao; int disponivel; }liv; typedef liv livro; livro livros[100]; //cria um vetor de livros... void inicializa() { int i=0; for(i=0;i<50;i++) { usuarios[i].livros[0]=-1; usuarios[i].livros[1]=-1; usuarios[i].livros[2]=-1; } for(i=0;i<100;i++) { livros[i].disponivel=1;//de começo todos livros estao disponiveis! } } int buscaUsuario(usuario usuarios[],int numeroUsuarios,int codigoUsuario) //passa como parametro o vetor dos usuarios, o numero de usuarios cadastrados //e o codigo do usuario a ser procurado. { int i=0; for(i=0;i<numeroUsuarios;i++) { if(usuarios[i].codigo==codigoUsuario) return i; } return -1; //busca o usuario, se achar retorna o indice dele no vetor; //se não achar, retorna -1... } int cadastrarUsuarios(usuario usuarios[]) { printf("\n\n*** CADASTRO DE USUARIOS ***\n\n"); int numeroUsuarios=0; int i=0; printf("\nInforme o numero de usuarios a serem cadastrados: "); scanf("%d",&numeroUsuarios); for(i=0;i<numeroUsuarios;i++) { printf("\nNome: "); scanf("%s",&usuarios[i].nome); fflush(stdin); printf("\nCodigo: "); scanf("%d",&usuarios[i].codigo); fflush(stdin); printf("\nEndereco: "); scanf("%d",&usuarios[i].endereco); fflush(stdin); printf("\nData de Nascimento: "); scanf("%d",&usuarios[i].dataNasc); fflush(stdin); printf("\nTelefone: "); scanf("%d",&usuarios[i].telefone); fflush(stdin); printf("\nCategoria: "); scanf("%d",&usuarios[i].categoria); fflush(stdin); } } int locaLivro(livro livros[], int nLivros,int codigoLivro) { int i=0; for(i=0; i<nLivros;i++) { if(livros[i].codigo==codigoLivro ) { if(livros[i].disponivel==1)//não tava verificando a disponibilidade do livro, //sempre que alguém queria pegar, podia... { //se o livro existir, e se for disponivel retorna seu codigo.... livros[i].disponivel=0; return (livros[i].codigo); } else { printf("\nO Livro não esta disponivel!"); return -1;//senao retorna -1! } } } return -1; //Vai chamar pro usuario, ai atribui o resultado numa posicao do vetor do //usuario. } int devolve(livro livros[],int nLivros,int codigo) { int i=0; for(i=0;i<nLivros;i++) { if(livros[i].codigo==codigo) { livros[i].disponivel=1; return -1; } } return -1; } int cadastraLivro(livro livros[]) { printf("\n\n*** CADASTRO DE LIVROS ***\n\n"); int i=0; int numeroLivros; printf("Quantidade de livros: "); scanf("%d",&numeroLivros); for(i=0;i<numeroLivros;i++) { printf("\nTitulo: "); scanf("%s",&livros[i].titulo); fflush(stdin); printf("\nCodigo: "); scanf("%d",&livros[i].codigo); fflush(stdin); printf("\nAutor: "); scanf("%s",&livros[i].autor); fflush(stdin); printf("\nAssunto: "); scanf("%s",&livros[i].assunto); fflush(stdin); printf("\nEditora: "); scanf("%s",&livros[i].editora); fflush(stdin); printf("\nAno: "); scanf("%s",&livros[i].ano); fflush(stdin); printf("\nEdicao: "); scanf("%s",&livros[i].edicao); fflush(stdin); } return numeroLivros;//vai retornar a quantidade de livros que tem, //que ficara salva como variavel global para ser //acessada por outras funções. } void ConsultaLivro(livro livros[]) { int i=0; char tOUa[15]; //titulo ou autor; printf("\n\n*** CONSULTA DE LIVRO ***\n\n"); printf("\n\nInforme o titulo ou o autor do livro que deseja consultar: "); scanf("%s", &tOUa); fflush(stdin); if ((strcmp(tOUa,livros[i].titulo)== 0 ) || (strcmp(tOUa,livros[i].autor)== 0)) { printf("\nTitulo: %s", livros[i].titulo); printf("\nCodigo: %d", livros[i].codigo); printf("\nAssunto: %s", livros[i].assunto); printf("\nAutor: %s", livros[i].autor); printf("\nEditora: %s", livros[i].editora); printf("\nAno %d", livros[i].ano); printf("\nEdicao: %d", livros[i].edicao); } if (livros[i].disponivel == 1) { printf("\n\nEste livro esta disponivel\n\n"); } else if (livros[i].disponivel == 0) { printf("\n\nEste livro não esta disponivel\n\n"); } } void Extrato (livro livros[], usuario usuarios[], int numeroUsuarios) { printf("\n\n*** EXTRATO DO USUARIO ***\n\n"); int i=0; int codUsuario=0; printf("Informe seu codigo de usuario: "); scanf("%d", &codUsuario); int pos = buscaUsuario(usuarios, numeroUsuarios, codUsuario); if(usuarios[pos].livros[0]!=-1) printf("Livro 1 : %d", livros[i].codigo); if(usuarios[pos].livros[1]!=-1) printf("Livro 2 : %d", livros[i].codigo); if(usuarios[pos].livros[2]!=-1) printf("Livro 3 : %d\n\n", livros[i].codigo); if ((usuarios[pos].livros[0] == -1) && (usuarios[pos].livros[1] == -1) && (usuarios[pos].livros[2] == -1)) printf("Este usuario não tem livros em seu extrato/locados"); } int main() { printf("*ATENCAO: AO INICIAR O PROGRAMA, CADASTRE LIVRO(S) E USUARIO(S) PRIMEIRAMENTE*\n\n"); int numeroLivros=0; //inicializa com 0, senao na busca da pau! int opcao=0; int codigoUsuario=0; int codigoLivro=0; int numeroUsuarios=0; inicializa(); //zera os livros dos usuarios; do { printf("\n*** MENU ***\n\n"); printf("Opcoes:\n"); printf("\n1 - Cadastrar livros"); printf("\n2 - Cadastrar usuarios"); printf("\n3 - Consultar Livros"); printf("\n4 - Locar livro"); printf("\n5 - Devolver Livro"); printf("\n6 - Extrato Usuario"); printf("\n7 - Sair do programa\n\n"); printf("Informe a opcao: "); scanf("%d",&opcao); switch(opcao) { case 1: { numeroLivros=cadastraLivro(livros); break; } case 2: { numeroUsuarios=cadastrarUsuarios(usuarios); break; } case 3: { if(numeroLivros>0) { ConsultaLivro(livros); } else printf("\nNenhum livro no acervo!\n"); break; } case 4: { printf("\n\n*** EMPRESTIMO DE LIVROS ***\n\n"); printf("\nCodigo do usuario: "); scanf("%d",&codigoUsuario);//le o codigo do usuario que vai locar o livro... printf("\nCodigo do livro: "); scanf("%d",&codigoLivro); //se o codigo do usuario existe, [pos] guardara sua posicao no vetor; //procura a primeira posicao vazia! //lembrar de verificar se tem usuarios cadastrados e tals... int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario); if(usuarios[pos].livros[0]==-1) usuarios[pos].livros[0]=locaLivro(livros,numeroLivros,codigoLivro); printf("\nO Livro foi emprestado!\n\n"); else if(usuarios[pos].livros[1]==-1) usuarios[pos].livros[1]=locaLivro(livros,numeroLivros,codigoLivro); printf("\nO Livro foi emprestado!\n\n"); else if(usuarios[pos].livros[2]==-1) usuarios[pos].livros[2]=locaLivro(livros,numeroLivros,codigoLivro); printf("\nO Livro foi emprestado!\n\n"); else printf("\nNao foi possivel locar o livro\n"); break; } case 5: { printf("\n\n*** DEVOLUCAO DE LIVROS ***\n\n"); printf("\nCodigo do usuario: "); scanf("%d",&codigoUsuario); printf("\nCodigo do livro: "); scanf("%d",&codigoLivro); int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario); if(usuarios[pos].livros[0]==codigoLivro) usuarios[pos].livros[0]=devolve(livros,numeroLivros,codigoLivro); printf("\nO Livro foi devolvido!\n\n"); else if(usuarios[pos].livros[1]==codigoLivro) usuarios[pos].livros[1]=devolve(livros,numeroLivros,codigoLivro); printf("\nO Livro foi devolvido!\n\n"); else if(usuarios[pos].livros[2]==codigoLivro) usuarios[pos].livros[2]=devolve(livros,numeroLivros,codigoLivro); printf("\nO Livro foi devolvido!\n\n"); else printf("\nNao foi possivel entregar o livro"); break; } case 6: { Extrato(livros, usuarios, numeroUsuarios); break; } case 7: { exit(0);//chama uma funcao da stdlib.h, que sai do programa, passando como //parametro 0: uma antiga convenção para dizer que saiu por vontade da //programadora, e não por um erro do sistema. break; } default: { printf("\nEntre com uma opcao valida!\n"); break; } } }while(1);//vai repitir até escolher a opcao 7. }Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.