Boa noite pessoal,estou com o codigo pronto,mas nas linhas "celula *popular" e no começo do main quando abre o arquivo,eles não estao funcionando direito, era para abrir o cadastro,fazer tudo e salvar num arquivo .txt e sempre que abrir ele usar esse arquivo já mas não esta dando certo,se alguém puder ajudar.
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string>#include<time.h>#include<fstream>usingnamespace std;typedefstruct no {int matricula;
string nome;struct no *prox;//ponteiro para o proximo elemento}Celula;Celula*cadastrar(Celula*e);Celula*inserir(Celula umNo,Celula*e);void exibir(Celula*e);int contarNos(Celula*e);void localizar(int matricula,Celula*e);Celula*remover(int matricula,Celula*e);int existeArquivo(char nomeArquivo[]);Celula*popular(char nomeArquivo[],Celula*e);int main(){Celula*entrada = NULL;
srand(time(NULL));int opcao;int matricula;FILE*procurador;if(existeArquivo("basedados.txt")){
cout <<"Arquivo localizado e sera exibido...\n";
entrada = popular("basedados.txt", entrada);
exibir(entrada);}do{
cout <<"1 - Inserir\n";
cout <<"2 - Exibir\n";
cout <<"3 - Localizar por matricula\n";
cout <<"4 - Localizar por nome\n";
cout <<"5 - Remover por matricula\n";
cout <<"6 - Finalizar\n";
cout <<"Opcao: ";
cin >> opcao;switch(opcao){case1:
cout <<"Cadastrando aluno\n";
entrada = cadastrar(entrada);break;case2:
cout <<"Total de elementos da estrutura: "<< contarNos(entrada)<<"\n";
exibir(entrada);
cout <<"\n\n";break;case3:if(entrada != NULL){
cout <<"Localizando por matricula\n";
cout <<"Digite matricula a ser pesquisada: ";
cin >> matricula;
localizar(matricula, entrada);}else cout <<"Estrutura vazia\n\n";break;case4:
cout <<"Localizando por nome\n";break;case5:if(entrada != NULL){
cout <<"Removendo por matricula\n";
cout <<"Digite matricula a ser removida: ";
cin >> matricula;
entrada = remover(matricula, entrada);}else cout <<"Estrutura vazia\n\n";break;case6:
cout <<"Obrigado por usar o sistema\n";break;default:
cout <<"Opcao invalida\n";break;}}while(opcao !=6);return1;}Celula*remover(int matricula,Celula*e){Celula*i,*iR;if(e == NULL){
cout <<"Estrutura vazia. Matricula não encontrada\n\n";return e;}for(iR = NULL, i = e; i != NULL; iR = i, i = i->prox){if(matricula == i->matricula){
cout <<"Matricula localizada no sistema\n";//ta no inicioif(i == e){//apagar o primeiro e reapontar a estrutura
e = e->prox;}elseif(i->prox == NULL){//ta no fim//apagar o ultimo e reapontar a estrutura
iR->prox = NULL;}else{//ta no meio//apagar o do meio e reapontar a estrutura
iR->prox = i->prox;}
free(i);return e;}}
cout <<"Matricula não localizada\n\n";return e;}void localizar(int matricula,Celula*e){Celula*i;if(e == NULL) cout <<"Estrutura vazia. Matricula não encontrada\n\n";for(i = e; i != NULL; i = i->prox){if(matricula == i->matricula){
cout <<"Matricula localizada no sistema\n";
cout <<"Nome: "<< i->nome <<"\n\n";return;//acabou a pesquisa}}
cout <<"Matricula não localizada\n\n";}int contarNos(Celula*e){Celula*i;int contador =0;if(e == NULL)return contador;for(i = e; i != NULL; i = i->prox){
contador++;}return contador;}void exibir(Celula*e){Celula*i;if(e == NULL){return;//sai forcadamente}else{
cout <<"\nRelacao de alunos\nMatricula - Nome\n";for(i = e; i != NULL; i = i->prox){
cout << i->matricula <<" - "<< i->nome <<"\n";}}}Celula*inserir(Celula umNo,Celula*e){Celula*novo;//alocar
novo =(Celula*)malloc(sizeof(Celula));//depositar
novo->matricula = umNo.matricula;
novo->nome = umNo.nome;//engatar
novo->prox = e;//e contem o endereco do ultimo elemento//retornarreturn novo;}Celula*cadastrar(Celula*e){Celula umNo;
srand(time(NULL));
umNo.matricula =(rand()%1000)+100;
cout <<"Matricula: "<< umNo.matricula <<"\n";
cout <<"Nome: ";
cin >> umNo.nome;
e = inserir(umNo, e);
cout <<"\nCadastro realizado com sucesso\n\n";return e;}int existeArquivo(char nomeArquivo[]){FILE*procurador = fopen(nomeArquivo,"r");if(!procurador)return0;//não existe o arquivoelse{
fclose(procurador);return1;//existe o arquivo}}/*Celula *popular(char nomeArquivo[], Celula *e) {
FILE *procurador = fopen(nomeArquivo,"r");
char matricula[100];
char nome[100];
celula umNo;
do {
fscanf(procurador,"%s\t%s",matricula, nome);//
if (feof(procurador)) {
break;
}
e = inserir(unNo, e);
} while (1);
fclose(procurador);
return e;
}*/Celula*popular(char nomeArquivo[],Celula*e){
ofstream auxArquivo ("basedados.txt");if(auxArquivo.is_open()){
auxArquivo << cout <<"Matricula: "<< umNo.matricula << cout <<"Nome: ";<< umNo.matricula;
auxArquivo.close();}else{
cout <<"\nArquivo Inválido\n\n";}}
Pergunta
João Luiz Mainardi
Boa noite pessoal,estou com o codigo pronto,mas nas linhas "celula *popular" e no começo do main quando abre o arquivo,eles não estao funcionando direito, era para abrir o cadastro,fazer tudo e salvar num arquivo .txt e sempre que abrir ele usar esse arquivo já mas não esta dando certo,se alguém puder ajudar.
Link para o comentário
Compartilhar em outros sites
0 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.