Ir ao conteúdo
  • Cadastre-se

C Alguns erros em meu codigo


luckyiers

Posts recomendados

Ola boa tarde estou fazendo um exercicio e preciso listar os pacientes e cadastrar e fazer a checagem na hora do cadastro do paciente se ja possui o crm do medico mais nao esta funcionando

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iomanip>
#include <vector>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#define getch() _getch();
//protótipo das funções
int menu();
int cadastrar(int);
int cadastrar_paci(int);
void listar(int);
void listar_pac(int);
void consultar(int);
void grava_tudo_no_arquivo(int);
int pega_dados_do_arquivo(int);
//criação da struct
typedef struct
{
	char crm[15], nomeMedico[41],
	codPac[15], nomePac[41],dataAten[10];
    char especialidade[40];
} medico;
medico cadGeral[100];
//função principal

int main()
{
    int resp,contador = pega_dados_do_arquivo(0);
    do
    {
        resp = menu();
        switch( resp )
        {
        case 1 :
            contador = cadastrar(contador);
            break;
        case 2 :
            listar(contador);
            break;
        case 3 :
            consultar(contador);
            break;
        case 4 :
            cadastrar_paci(contador);
            break;
        case 5 :
            listar_pac(contador);
            break;
        case 0 :
            grava_tudo_no_arquivo(contador);
            exit(0);
        default:
            printf("\nOpcao invalida...\n");
            system("pause");
        }
    } while ( resp != 0 );
    return 16;
}
//função cadastrarmedico()
int cadastrar(int contador)
{
    //declaração das variáveis locais
    char resposta;
    int ax;
	do
	{
	    LabeL_1: // pode ser qualquer nome
        system("cls");
        printf("Informe o crm do medico: ");
        fflush(stdin);
        scanf("%14[^\n]", cadGeral[contador].crm);//o contador aponta para a posição do vetor de struct ou typedef
        printf("Informe o nome do medico: ");
        fflush(stdin);
        scanf("%40[^\n]", cadGeral[contador].nomeMedico);
        fflush(stdin);
        printf("informe a especialidade do medico: ");
        scanf("%38[^\n]", cadGeral[contador].especialidade);
        fflush(stdin);

		ax = 0;//começa pesquisar da posição zero , a primeira no vetor
        while( ax < contador )
        {
            if( strcmp( cadGeral[ax].crm,cadGeral[contador].crm ) == 0 )
            {
                printf("ja tem um crm com esse numero , digite crm,nome,especialidade novamente");
                getch();
                goto LabeL_1; // comando em desuso , mas func
            }
            ax++;
        }
        contador++;
		printf("Cadastrar outro medico <S/N>");
		resposta = getche();

	} while(toupper(resposta)=='S');
	return contador;
}

//função cadastrarpacientes()
int cadastrar_paci(int contador)
{
    //declaração das variáveis locais
    char resposta;
    int ax;
	do
	{
	    LabeL_1: // pode ser qualquer nome
        system("cls");
        printf("Informe o nome do paciente: ");
        fflush(stdin);
        scanf("%14[^\n]", cadGeral[contador].nomePac);//o contador aponta para a posição do vetor de struct ou typedef
        printf("Informe a data de atendimento: ");
        fflush(stdin);
        scanf("%40[^\n]", cadGeral[contador].dataAten);
        fflush(stdin);
        printf("Digite o crm do medico atendido: ");
        fflush(stdin);
        scanf("%14[^\n]", cadGeral[contador].crm);

        ax = 0;//começa pesquisar da posição zero , a primeira no vetor
        while( ax < contador )
        {
            if( strcmp( cadGeral[ax].crm,cadGeral[contador].crm ) == false )
            {
                printf("nao possui esse crm");
                getch();
                goto LabeL_1; // comando em desuso , mas func
            }
            ax++;
        }
        contador++;
		printf("Cadastrar outro paciente <S/N>");\
		resposta = getche();

	} while(toupper(resposta)=='S');
	return contador;
}
//função menu()
int menu()
{
	//declaração da variável
	int opcao;
	system("cls");
	printf(" 0 - Para salvar tudo e sair\n");
	printf(" 1 - Cadastrar medicos\n");
	printf(" 2 - Listar medicos\n");
	printf(" 3 - Consultar medicos\n");
	printf(" 4 - Cadastar Paciente\n");
	printf(" 5 - Listar Paciente\n");
	printf("Digite: ");
	scanf("%i", &opcao);

	return opcao;
}

//função consultar medicos()
void consultar(int contador)
{
    //variáveis locais
    medico cadGeral;
    char chave[41];
    int flag = 0;

    //ponteiro para o arquivo
    FILE *pontarq;

    //abrir o arquivo para leitura modo binário
    if((pontarq=fopen("cadastrocli.txt", "rb"))==NULL)
    {
        printf("\nErro na abertura do arquivo ou nao ha registros\n");
    }
    else
    {
        system("cls");
        printf("Informe o nome a consultar: ");
        fflush(stdin);
        scanf("%40[^\n]", chave);

        //estrutura de repetição para ler o arquivo e comparar com a chave
        while((fread(&cadGeral, sizeof(cadGeral), 1, pontarq))==1)
        {
            if(strcmp(strupr(chave),strupr(cadGeral.nomeMedico))==0)
            {
                printf("crm: %s", cadGeral.crm);
                printf("\nNome: %s", cadGeral.nomeMedico);
                printf("\nCredito: %s", cadGeral.especialidade);

                //mostrar flag para 1 - encontrou
                flag = 1;
            }
        }
        if(flag == 0)
            printf("\nCliente nao cadastrado...\n");

        //fechar o arquivo
        fclose(pontarq);
    }
    system("pause");
}
//listar medicos
void listar(int contador)
{
    int j,i;
    for(j=0;j<contador; j++)
    {
        printf("CRM -------: %s\n"    ,cadGeral[j].crm);
        printf("NOME ------: %s\n"    ,cadGeral[j].nomeMedico );
        printf("ESPECIALIDADE ---: %.2f\n\n",cadGeral[j].especialidade);
    }
    printf("Aperte qualquer Tecla");
    getch();
}

//lstar pacientes
void listar_pac(int contador)
{
    int j,i;
    for(j=0;j<contador; j++)
    {
        printf("Nome paciente: %s\n",cadGeral[j].nomePac);
        printf("Data de paciente %s\n",cadGeral[j].dataAten );
        printf("CRM do medico que atendeu: %s \n\n",cadGeral[j].crm);
    }
    printf("Aperte qualquer Tecla");
    getch();
}
void grava_tudo_no_arquivo(int contador)
{
    int j;
    FILE *pontarq;
    pontarq = fopen("cadastrocli.bin", "wb");// cria resete e abre o arquivo para gravar desde o início dele
    for(j=0; j<contador; j++)
        fwrite(&cadGeral[j], sizeof(cadGeral),1,pontarq);
    fclose(pontarq);
}
int pega_dados_do_arquivo(int contador)
{
    FILE *pontarq;
    pontarq = fopen("cadastrocli.bin", "rb");
    if(pontarq == NULL )return 0;
    printf("Dados ja cadastrados e que estão gravados no Arquivo\n");
    while( fread( &cadGeral[contador], sizeof(cadGeral), 1, pontarq ) == 1 )
    {
        printf("crm -------: %s\n"    ,cadGeral[contador].crm);
        printf("NOME ------: %s\n"    ,cadGeral[contador].nomeMedico);
        printf("CREDITO ---: %s\n\n",cadGeral[contador].especialidade);
        contador++;
    }
    fclose(pontarq);
    printf("aperte qualquer tecla: ");
    getch();
    return contador;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!