João Luiz Mainardi Postado Novembro 6, 2018 Denunciar Share Postado Novembro 6, 2018 Boa noite,eu tenho um programa pronto,mas não consigo fazer ele ficar em arquivo,segue o codigo: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string> #include <time.h> using namespace std; typedef struct 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); } else { procurador = fopen("basedados.txt","a"); fclose(procurador); } 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) { case 1: cout << "Cadastrando aluno\n"; entrada = cadastrar(entrada); break; case 2: cout << "Total de elementos da estrutura: " << contarNos(entrada) << "\n"; exibir(entrada); cout << "\n\n"; break; case 3: 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; case 4: cout << "Localizando por nome\n"; break; case 5: 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; case 6: cout << "Obrigado por usar o sistema\n"; break; default: cout << "Opcao invalida\n"; break; } } while (opcao != 6); return 1; } 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 inicio if (i == e) { //apagar o primeiro e reapontar a estrutura e = e->prox; } else if (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 //retornar return 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) return 0; //não existe o arquivo else { fclose(procurador); return 1; //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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
João Luiz Mainardi
Boa noite,eu tenho um programa pronto,mas não consigo fazer ele ficar em arquivo,segue o codigo:
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.