Bom dia a todos, estou tendo um problema com meu projeto, depois que escrevi o código vi que faltou algumas coisas pedidas, como comparar a idade do paciente com mais de 65 anos e informar que ele é paciente de risco e Fazer com que o programa seja salvo em formato binário! Alguém pode me dar uma ajuda????
// Em Ordem (Do menor pro maior)
void Mostrar(arvore *Arv){
if(Arv != NULL){
Mostrar(Arv->Esq);
printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nComorbidades: %s\nUrgencia: %d\nCódigo: %d\n", Arv->No->nome, Arv->No->cpf, Arv->No->sexo, Arv->No->idade, Arv->No->telefone, Arv->No->comorbidades, Arv->No->urg, Arv->No->codi);
Mostrar(Arv->Dir);
}
}
//Alterando os dados dos pacientes
void alterar_paciente(listas* lista_escolhida){
char nome_substituto[50];
char cpf_substituto[50];
int codigo, idade_substituto, telefone_substituto;
paciente* atual = lista_escolhida->head;
system("cls");
printf("\tCódigo do paciente a ser alterado: ");
scanf("%d", &codigo);
//Verificando se o código é válido
while(atual != NULL && atual->codi != codigo){
atual = atual->prox;
}
if(atual!=NULL){
printf("\n\tNovo nome: ");
scanf("%s", nome_substituto);
strcpy(atual->nome,nome_substituto);//Faz a mudança de nome
printf("\n\tNova idade: ");
scanf("%d", &idade_substituto);
atual->idade = idade_substituto;//Altera a idade
printf("\n\tNovo CPF: ");
scanf("%s", cpf_substituto);
strcpy(atual->cpf,cpf_substituto);//Altera o CPF
printf("\n\tNovo telefone: ");
scanf("%d", &telefone_substituto);
atual->telefone = telefone_substituto;//Altera o Telefone
printf("\n\tDados alterados com sucesso.\n\tVoltando ao menu...");
}else{
printf("\n\tpaciente não encontrado\n\tVoltando ao menu...");
}
Sleep(3000);
//Ponteiro para saber o elemento anterior ao elemento atual da lista.
paciente *anterior = NULL;
//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
paciente *atual = lista_escolhida->head;
int codigo;
system("cls");
//Requisitando e lendo o código do paciente a ser excluído.
printf("\n\nCódigo do paciente a ser excluído: ");
scanf("%d", &codigo);
//Procurando o paciente na lista.
while(atual != NULL && atual->codi != codigo){
anterior = atual;
atual = atual->prox;
}
//Mensagem caso o paciente não seja encontrado.
if(atual == NULL){
printf("\n Paciente não encontrado.");
Sleep(1500);
return lista_escolhida;
}
//Excluindo o primeiro paciente da lista.
if(anterior == NULL){
printf("\n Paciente excluído com sucesso.");
lista_escolhida->head = atual->prox;
Sleep(1500);
return lista_escolhida;
//Excluindo um paciente do meio da lista.
}else{
printf("\n Paciente excluído com sucesso.");
anterior->prox = atual->prox;
Sleep(1500);
return lista_escolhida;
}
lista_escolhida->qnt--;
//Desalocando o espaço da memória.
free(atual);
return lista_escolhida;
}
//Faz a animação do "Entrando..."
void entrando(){
int carregando;
for(carregando=1;carregando<=3;carregando++){
printf("\n\n\n\t\t\tCarregando.");
Sleep(100);
system("cls");
printf("\n\n\n\t\t\tCarregando..");
Sleep(100);
system("cls");
printf("\n\n\n\t\t\tCarregando....");
Sleep(100);
system("cls");
}
}
//Menu principal
void menu(){
int op_menu;
listas *lista_paciente = inicializarLista();
arvore *Arv = NULL;
do{
printf("\t\t--------------------HOSPITAL UNIP COVID-------------------------\n\n");
printf("\n\n");
printf("\tEscolha a opcao desejada\n");
printf("\t[1] - Adicionar paciente\n");
printf("\t[2] - Alterar dados do paciente\n");
printf("\t[3] - Exibir pacientes [Por chegada]\n");
printf("\t[4] - Exibir pacientes [Por urgencia]\n");
printf("\t[5] - Excluir pacientes\n");
printf("\t[0] - Encerrar o programa\n");
printf("\n\tOpcao: ");
scanf("%d", &op_menu);
switch(op_menu){
case 1:
system("cls");
cadastrar_paciente(lista_paciente, Arv);
break;
case 2:
system("cls");
alterar_paciente(lista_paciente);
break;
case 3:
system("cls");
listar_pacientes(lista_paciente);
break;
case 4:
system("cls");
printf("-- Pacientes por ordem de urgencia --");
Mostrar(Arv);
system("pause>null");
break;
case 5:
system("cls");
printf("\tQual paciente deseja excluir?\n");
lista_paciente = excluir_paciente(lista_paciente);
break;
case 0:
exit(0);
break;
default:
printf("\n\n\n\n");
printf("Opcao invalida\n");
Sleep(1500);
printf("\n\n\n\n");
}
system("cls");
}while(op_menu != 0);
}
system("color F1");
system("cls"); // limpa a tela.
printf ("\n\n\t\tAcesso permitido!\n\n\t\tParabens!\n\t\tTecle Enter para Acessar o Sistema!\n\n\n\n\n\n\n");
getchar(); // quando precionar o "ENTER" continua o programa.
system("cls"); // limpa a tela.
}
else
{
system("color F1");
system("cls"); // limpa a tela.
printf ("\n\n\t\tAcesso negado!\n\n\t\tVoce não tem permissao para acesso! Tecle Enter Para Tentar Novamente!\n\n\n\n\n\n\n\n\n\n\n");
system("pause>null");
system("cls"); // limpa a tela.
return main();
}
system("color F1");//Muda a cor do programa
setlocale(LC_ALL,"Portuguese");
entrando();//Chama a função responsável por realizar a animação
menu();//Chama o menu principal
system("pause>null");
}}}
Pergunta
Montoni
Bom dia a todos, estou tendo um problema com meu projeto, depois que escrevi o código vi que faltou algumas coisas pedidas, como comparar a idade do paciente com mais de 65 anos e informar que ele é paciente de risco e Fazer com que o programa seja salvo em formato binário! Alguém pode me dar uma ajuda????
Segue o Código Fonte:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<locale.h>
#include<string.h>
#include<conio.h>
typedef struct Paciente{
char nome[50];
char cpf[50];
char sexo[20];
char comorbidades[500];
int telefone;
int idade;
int codi;
int urg;
struct Paciente *prox;
}paciente;
typedef struct Listas{
int qnt;
struct Paciente *head;
}listas;
typedef struct Arvore{
struct Paciente *No;
struct Arvore *Esq;
struct Arvore *Dir;
}arvore;
int pacientes = 0;
void adicionar(arvore **Arv, paciente *tmp);
listas* inicializarLista(){
listas *tmp = (listas*)malloc(sizeof(listas));
tmp->qnt = 0;
tmp->head = NULL;
return tmp;
}
//Cadastra os Eletronicos no estoque
void cadastrar_paciente(listas *tmp, arvore *Arv){
int op_cadastro_paciente = 0;
printf("\t\t-------------------------CADASTRO-------------------------\n\n");
do{
system("cls");
paciente *aux = (paciente *)malloc(sizeof(paciente));
printf("\tInforme o nome do paciente\n");
printf("\tNome: ");
fflush(stdin);
gets(aux->nome);
fflush(stdin);
printf("\n\tInforme o CPF do paciente\n");
printf("\tCPF: ");
scanf("%s", aux->cpf);
printf("\n\tInforme o telefone do paciente\n");
printf("\tTelefone: ");
scanf("%d", &aux->telefone);
printf("\n\tInforme a idade do paciente\n");
printf("\tIdade: ");
scanf("%d", &aux->idade);
printf("\n\tInforme o sexo do paciente\n");
printf("\tSexo [M]-[F]: ");
fflush(stdin);
scanf("%s", aux->sexo);
fflush(stdin);
printf("\n\tInforme as comorbidades do paciente\n");
printf("\tComorbidades: ");
fflush(stdin);
gets(aux->comorbidades);
fflush(stdin);
printf("\n\tInforme a urgencia do paciente [de 1 (Mais urgente) a 20 (Menos urgente)]\n");
printf("\tUrgencia: ");
scanf("%d", &aux->urg);
printf("\n\n");
printf("\n\tInforme o código do paciente\n");
printf("\tCódigo: ");
scanf("%d", &aux->codi);
printf("\n\n");
//Salva os dados dos Pacientes em TXT
FILE *paci;
paci = fopen("Dados_Pacientes.txt", "a+");
fprintf(paci,"Nome: %s -> CPF: %s -> Sexo: %s -> Idade: %d -> Telefone: %d -> Código: %d\n", aux->nome, aux->cpf, aux->sexo, aux->idade, aux->telefone, aux->codi);
fclose(paci);
FILE *sint;
sint = fopen("Comorbidades.txt", "a+");
fprintf(sint,"Nome: %s\nIdade: %d\nComorbidades: %s\n", aux->nome,aux->idade, aux->comorbidades);
fprintf(sint,"----------------------------------------------------------------\n");
fclose(sint);
adicionar(&Arv, aux);
aux->prox = tmp->head;
tmp->head = aux;
tmp->qnt++;
printf("1-Novo cadastro\n2-Voltar ao Menu\n");
printf("Opção: ");
scanf("%d", &op_cadastro_paciente);
}while(op_cadastro_paciente != 2);
}
//Faz a listagem dos pacientes
void listar_pacientes(listas *tmp){
int op = 0;
printf("\t----------------------PACIENTES----------------------\n");
paciente *aux;
printf("\n\n");
printf("---------------------------------------------------------------------------------------------------------\n");
for(aux = tmp->head; aux != NULL; aux = aux->prox){
printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nComorbidades: %s\nCódigo: %d\n", aux->nome, aux->cpf, aux->sexo, aux->idade, aux->telefone,aux->comorbidades, aux->codi);
printf("---------------------------------------------------------------------------------------------------------\n\n\n");
}
printf("---------------------------------------------------------------------------------------------------------\n\n\n");
printf("\t\t\tExistem %d pacientes cadastrados\n", tmp->qnt);
free(aux);
printf("\n\n");
printf("1-Voltar ao menu\n2-Encerrar o programa ");
scanf("%d", &op);
if(op == 2){
exit(0);
}
}
void adicionar(arvore **Arv, paciente *pac){
arvore *temp = NULL;
if (*Arv == NULL){
temp = (arvore*)malloc(sizeof(arvore));
temp->Esq = NULL;
temp->Dir = NULL;
temp->No = pac;
*Arv = temp;
}
else {
if (pac->urg < ((*Arv)->No->urg)){
adicionar(&((*Arv)->Esq), pac);
}
else{
adicionar(&((*Arv)->Dir), pac);
}
}
}
// Em Ordem (Do menor pro maior)
void Mostrar(arvore *Arv){
if(Arv != NULL){
Mostrar(Arv->Esq);
printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nComorbidades: %s\nUrgencia: %d\nCódigo: %d\n", Arv->No->nome, Arv->No->cpf, Arv->No->sexo, Arv->No->idade, Arv->No->telefone, Arv->No->comorbidades, Arv->No->urg, Arv->No->codi);
Mostrar(Arv->Dir);
}
}
//Alterando os dados dos pacientes
void alterar_paciente(listas* lista_escolhida){
char nome_substituto[50];
char cpf_substituto[50];
int codigo, idade_substituto, telefone_substituto;
paciente* atual = lista_escolhida->head;
system("cls");
printf("\tCódigo do paciente a ser alterado: ");
scanf("%d", &codigo);
//Verificando se o código é válido
while(atual != NULL && atual->codi != codigo){
atual = atual->prox;
}
if(atual!=NULL){
printf("\n\tNovo nome: ");
scanf("%s", nome_substituto);
strcpy(atual->nome,nome_substituto);//Faz a mudança de nome
printf("\n\tNova idade: ");
scanf("%d", &idade_substituto);
atual->idade = idade_substituto;//Altera a idade
printf("\n\tNovo CPF: ");
scanf("%s", cpf_substituto);
strcpy(atual->cpf,cpf_substituto);//Altera o CPF
printf("\n\tNovo telefone: ");
scanf("%d", &telefone_substituto);
atual->telefone = telefone_substituto;//Altera o Telefone
printf("\n\tDados alterados com sucesso.\n\tVoltando ao menu...");
}else{
printf("\n\tpaciente não encontrado\n\tVoltando ao menu...");
}
Sleep(3000);
}
listas* excluir_paciente(listas* lista_escolhida){
//Ponteiro para saber o elemento anterior ao elemento atual da lista.
paciente *anterior = NULL;
//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
paciente *atual = lista_escolhida->head;
int codigo;
system("cls");
//Requisitando e lendo o código do paciente a ser excluído.
printf("\n\nCódigo do paciente a ser excluído: ");
scanf("%d", &codigo);
//Procurando o paciente na lista.
while(atual != NULL && atual->codi != codigo){
anterior = atual;
atual = atual->prox;
}
//Mensagem caso o paciente não seja encontrado.
if(atual == NULL){
printf("\n Paciente não encontrado.");
Sleep(1500);
return lista_escolhida;
}
//Excluindo o primeiro paciente da lista.
if(anterior == NULL){
printf("\n Paciente excluído com sucesso.");
lista_escolhida->head = atual->prox;
Sleep(1500);
return lista_escolhida;
//Excluindo um paciente do meio da lista.
}else{
printf("\n Paciente excluído com sucesso.");
anterior->prox = atual->prox;
Sleep(1500);
return lista_escolhida;
}
lista_escolhida->qnt--;
//Desalocando o espaço da memória.
free(atual);
return lista_escolhida;
}
//Faz a animação do "Entrando..."
void entrando(){
int carregando;
for(carregando=1;carregando<=3;carregando++){
printf("\n\n\n\t\t\tCarregando.");
Sleep(100);
system("cls");
printf("\n\n\n\t\t\tCarregando..");
Sleep(100);
system("cls");
printf("\n\n\n\t\t\tCarregando....");
Sleep(100);
system("cls");
}
}
//Menu principal
void menu(){
int op_menu;
listas *lista_paciente = inicializarLista();
arvore *Arv = NULL;
do{
printf("\t\t--------------------HOSPITAL UNIP COVID-------------------------\n\n");
printf("\n\n");
printf("\tEscolha a opcao desejada\n");
printf("\t[1] - Adicionar paciente\n");
printf("\t[2] - Alterar dados do paciente\n");
printf("\t[3] - Exibir pacientes [Por chegada]\n");
printf("\t[4] - Exibir pacientes [Por urgencia]\n");
printf("\t[5] - Excluir pacientes\n");
printf("\t[0] - Encerrar o programa\n");
printf("\n\tOpcao: ");
scanf("%d", &op_menu);
switch(op_menu){
case 1:
system("cls");
cadastrar_paciente(lista_paciente, Arv);
break;
case 2:
system("cls");
alterar_paciente(lista_paciente);
break;
case 3:
system("cls");
listar_pacientes(lista_paciente);
break;
case 4:
system("cls");
printf("-- Pacientes por ordem de urgencia --");
Mostrar(Arv);
system("pause>null");
break;
case 5:
system("cls");
printf("\tQual paciente deseja excluir?\n");
lista_paciente = excluir_paciente(lista_paciente);
break;
case 0:
exit(0);
break;
default:
printf("\n\n\n\n");
printf("Opcao invalida\n");
Sleep(1500);
printf("\n\n\n\n");
}
system("cls");
}while(op_menu != 0);
}
//Função principal
int main(){
while(1)
{
char string[5];
char enter[2];
printf ("\n Digite a senha : ");
string[0] = getch();
printf ("*");
string[1] = getch();
printf ("*");
string[2] = getch();
printf ("*");
string[3] = getch();
printf ("*");
string[4] = getch();
printf ("*");
enter[0] = getch();
if(enter[0] == 13)
{
if((string[0] == 'C') && (string[1] == 'o') && (string[2] == 'v') && (string[3] == 'i') && (string[4] == 'd')) // senha correta é "Covid".
{
system("color F1");
system("cls"); // limpa a tela.
printf ("\n\n\t\tAcesso permitido!\n\n\t\tParabens!\n\t\tTecle Enter para Acessar o Sistema!\n\n\n\n\n\n\n");
getchar(); // quando precionar o "ENTER" continua o programa.
system("cls"); // limpa a tela.
}
else
{
system("color F1");
system("cls"); // limpa a tela.
printf ("\n\n\t\tAcesso negado!\n\n\t\tVoce não tem permissao para acesso! Tecle Enter Para Tentar Novamente!\n\n\n\n\n\n\n\n\n\n\n");
system("pause>null");
system("cls"); // limpa a tela.
return main();
}
system("color F1");//Muda a cor do programa
setlocale(LC_ALL,"Portuguese");
entrando();//Chama a função responsável por realizar a animação
menu();//Chama o menu principal
system("pause>null");
}}}
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.