JulioKOG 0 Denunciar post Postado Março 19, 2016 Olá, Estou com dificuldades em um trabalho de algoritmo que tenho que fazer e gostaria de saber se podem me ajudar. O problema é que quando é digitado a opção 4 ou a opção 5 o programa para de responder antes de mostrar os dados. A função de cada opção: 1- Cadastrar paciente a partir de dados como: nome, codigo, telefone e convenio. Criando um arquivo paciente.txt. 2- Agendamento de data, hora, e tipo de consulta a partir do codigo do paciente. Criando um arquivo agenda.txt. 3- Alterar telefone de paciente a partir do codigo do paciente em "paciente.txt". 4- Mostrar paciente.txt e agenda.txt no programa 5- Criar arquivo auxiliar para mostrar somente nome, data, hora separando por " - ". Segue meu codigo: #include <iostream> #include <stdio.h> #include <string.h> #include <ctype.h> using namespace std; int main() { FILE *registro, *registro2, *aux; int cod, codB, tel, telB, repetiu=0, op, data, dataB, hora, horaB; char nome[30], conv[30], nomeB[30], convB[30], tipo[30], tipoB[30]; int c, posicao=0; registro = fopen("Paciente.txt", "a+"); registro2 =fopen("Agenda.txt","a+"); if (registro==NULL) { printf("\n Erro na criacao dos arquivos\n"); } else{ printf("\n 1- Cadastrar paciente"); printf("\n 2- Agendar"); printf("\n 3- Alterar tel."); printf("\n 4- Mostrar"); printf("\n 5- Arq. auxiliar"); printf("\n 6- Sair\n"); printf(" Digite opcao: "); cin>>op; if(op==1){ printf("\n Digite o codigo do paciente: "); scanf("%d%*c", &cod); rewind(registro); fseek(registro, posicao, SEEK_SET); printf("Digite nome do paciente: "); scanf("%s%*c", &nome); printf("Digite telefone do paciente: "); scanf("%d%*c", &tel); printf("Digite convenio do paciente: "); scanf("%s%*c", &conv); fprintf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); printf("\nCadastro realizado com sucesso !\n\n"); fclose(registro); } if(op==2){ rewind (registro2); fseek(registro2, posicao, SEEK_SET); printf(" Digite data da consulta: "); scanf("%d%*c", &data); printf(" Digite hora da consulta: "); scanf("%d%*c", &hora); printf(" Digite codigo do paciente: "); scanf("%d%*c", &cod); printf(" Digite tipo de consulta (Normal/Retorno): "); scanf("%c%*c", &tipo); fprintf(registro2,"%d %d %d %30s\n", dataB, horaB, codB, tipoB); printf("\nAgendamento realizado com sucesso !\n\n"); fclose(registro2); } if(op==3){ printf("Digite codigo do paciente: "); scanf("%d%*c", &cod); fscanf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); if(cod==codB){ posicao=0; repetiu=1; } else{ while ((!feof(registro)) && (cod!=codB)){ posicao=posicao+48+repetiu; fscanf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); repetiu++; } } if(repetiu==0){ cout<<"\n Paciente nao cadastrado\n\n"; } else { rewind (registro); fseek(registro, posicao, SEEK_SET); printf("Digite telefone: "); scanf("%d%*c", &tel); fprintf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); cout<<"\n Alterado com sucesso \n"; } fclose(registro); } if (op==4){ registro = fopen("Paciente.txt", "a+"); registro2 =fopen("Agenda.txt","a+"); feof(registro); feof(registro2); fscanf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); fscanf(registro2,"%d %d %d %30s\n", dataB, horaB, codB, tipoB); fprintf(registro,"%d %d %30s %30s\n", codB, telB, nomeB, convB); fprintf(registro2,"%d %d %d %30s\n", dataB, horaB, codB, tipoB); fclose(registro); fclose(registro2); } if(op==5){ aux=fopen("Emp.txt", "w+"); fscanf(registro," %s %d %d ", nomeB, dataB, horaB); printf("\n %s %d %d ", nomeB," - ", dataB," - ", horaB); fclose(aux); } if(op==6){ fclose(registro); fclose(registro2); } } system("pause"); } Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites