Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JulioKOG

Ajuda algoritmo - Arquivos

Recommended Posts

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.