Escolar Documentos
Profissional Documentos
Cultura Documentos
//types.h
#ifndef ESTRUTURAS
#define ESTRUTURAS
#define TRUE 1
#define FALSE 0
char cpf[11];
char nome[100];
char tel[15];
char email[50];
int status;
} tcliente;
char crm[8];
char nome[100];
int especialidade;
int horarios[2][5];
char tel[15];
char email[50];
int status;
} tmedicos;
char cpf[11];
char crm[8];
char data_consulta[20];
int turno;
tcliente *paciente_manha[10];
tcliente *paciente_tarde[10];
}tconsulta;
typedef struct no {
char cpf[11];
char nome[100];
char tel[15];
char email[50];
int pos;
struct no *esq;
struct no *dir;
}tno;
char crm[8];
char nome[100];
int especialidade;
int horarios[2][5];
char tel[15];
char email[50];
int pos;
}tno_med;
tcliente *fila_de_espera;
struct fila *prox;
}tnoqueue;
}tdescritor;
tno * info;
tno_med * info_med;
}NoStack;
#endif
//moduloclientes.h
#include <stdio.h>
#include "types.h"
//modulomedicos.h
#include <stdio.h>
#include "types.h"
//moduloconsultas.h
#include <stdio.h>
#include "types.h"
//incializar-encerrar.h
#include <stdio.h>
#include "types.h"
//Queue.h
#include <stdio.h>
#include "types.h"
//Stack.h
#include <stdio.h>
#include "types.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "types.h"
tno * aux;
aux = raiz;
while(1){
if (raiz == NULL){
return -1;
pos++;
return pos;
pos++;
} else {
pos++;
tcliente c;
int status, pos = buscar_no_indice(raiz, cpf);
return c;
tcliente c;
if (*raiz == NULL) {
c = retorna_cliente(*raiz,arq, cpf);
strcpy((*raiz)->cpf, cpf);
strcpy((*raiz)->nome, c.nome);
strcpy((*raiz)->tel, c.tel);
strcpy((*raiz)->email, c.email);
(*raiz)->esq = NULL;
(*raiz)->dir = NULL;
} else {
} else {
return 0;
return 0;
else{ //digito 1
for(i = 0, j = 10; i < strlen(str)-2; i++, j--) //multiplica os números de 10 a 2 e soma os resultados
dentro de digito1
digito1 += (str[i]-48) * j;
digito1 %= 11;
if(digito1 < 2)
digito1 = 0;
else
digito1 = 11 - digito1;
if((str[9]-48) != digito1)
return 0; //se o digito 1 não for o mesmo que o da validação CPF é inválido
else{//digito 2
digito2 += (str[i]-48) * j;
digito2 %= 11;
if(digito2 < 2)
digito2 = 0;
else
digito2 = 11 - digito2;
if((str[10]-48) != digito2)
return 0; //se o digito 2 não for o mesmo que o da validação CPF é inválido
str[0] = toupper(str[0]);
str[i] = toupper(str[i]);
if (isalpha(str[i - 1]) != 0) {
str[i] = tolower(str[i]);
str[i + 1] = 8; //backspace
if (isdigit(str[i]) == 0) {
if (isalpha(str[i]) != 0) {
flag_letra = 1;
if (isdigit(str[i]) != 0) {
flag_digito = 1;
if (str[i] == '.') {
flag_ponto = 1;
if (str[i] == '_') {
flag_underscore = 1;
if (str[i] == '-') {
flag_dash = 1;
if (str[i] == '@') {
qtd_arroba++;
if (qtd_arroba >= 2) {
flag_arroba = 0;
break;
else {
flag_arroba = 1;
else {
tcliente c;
int status;
} else {
fseek(arq, 0, 2);
strcpy(c.cpf, cpf);
do {
do {
do {
c.status = 1;
if (status != 1) {
else {
int status;
tcliente c;
tno * aux;
} else {
aux = raiz;
strcpy(aux->email, c.email);
strcpy(aux->tel, c.tel);
tcliente c;
char escolha;
if (pos == -1) {
} else {
if (status != 1){
printf("Erro de leitura\n");
} else {
do {
printf("1.Nome\n");
printf("2.Email\n");
printf("3.Telefone\n");
printf("4.Continuar o programa\n");
escolha = getche();
switch (escolha) {
case '1':
do {
case '2':
do {
break;
case '3':
do {
break;
case '4':
break;
if (status != 1) {
} else {
tcliente c;
tno * aux = buscar_no_indice(raiz, cpf);
if (aux == NULL) {
else {
printf("Nome:\n");
puts(aux->nome);
printf("\n");
printf("Telefone:\n");
puts(aux->tel);
printf("\n");
printf("Email:\n");
puts(aux->email);
tno * aux;
aux = raiz;
if (aux->dir == NULL) {
raiz = raiz->esq;
return aux;
else {
return maior(raiz->dir);
tno * aux;
aux = *raiz;
if ((*raiz)->esq == NULL && (*raiz)->dir == NULL)
*raiz = NULL;
*raiz = (*raiz)->dir;
*raiz = (*raiz)->esq;
else {
aux = maior((*raiz)->esq);
strcpy((*raiz)->cpf, aux->cpf);
free(aux);
tcliente c;
if (*raiz == NULL) {
printf("Arvore Vazia\n");
remover_no(&(*raiz));
else {
remover_indice(&((*raiz)->esq), cpf);
else {
remover_indice(&((*raiz)->dir), cpf);
}
void remover(FILE * arq, char cpf[], tno *raiz) {
tcliente c;
if (pos == -1) {
else {
if (status != 1)
else {
c.status = 0;
if (status != 1) {
else {
remover_indice(&raiz, cpf);
tcliente c;
fseek(arq, 0, 0);
while (1) {
status = fread(&c, sizeof(tcliente), 1, arq);
if (status != 1) {
if (!feof(arq)) {
else {
else {
pos++;
return pos;
//modulomedicos.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "moduloclientes.h"
#include <conio.h>
#include "types.h"
tno_med * aux;
aux = raiz;
while(1){
if (raiz == NULL){
return -1;
pos++;
return pos;
pos++;
} else {
pos++;
if (isdigit(str[0]) == 0) {
} else {
str[0] = toupper(str[0]);
if (isdigit(str[1]) == 0) {
} else {
str[1] = toupper(str[1]);
return 0;
return 1;
tmedicos c;
return c;
int i, j;
tmedicos c;
if (*raiz == NULL) {
strcpy((*raiz)->crm, crm);
strcpy((*raiz)->nome, c.nome);
strcpy((*raiz)->tel, c.tel);
strcpy((*raiz)->email, c.email);
(*raiz)->esq = NULL;
(*raiz)->dir = NULL;
} else {
} else {
tmedicos c;
} else {
fseek(arq, 0, 2);
strcpy(c.crm, crm);
do {
do {
do {
printf("Digite o email desse medico: \n");
do{
printf("1- Acupuntura\n");
printf("3- Anestesiologia\n");
printf("4- Angiologia\n");
printf("6- Cardiologia\n");
printf("17- Coloproctologia\n");
printf("18- Dermatologia\n");
printf("20- Endoscopia\n");
printf("21- Gastroenterologia\n");
printf("23- Geriatria\n");
printf("26- Homeopatia\n");
printf("27- Infectologia\n");
printf("28- Mastologia\n");
printf("39- Nefrologia\n");
printf("40- Neurocirurgia\n");
printf("41- Neurologia\n");
printf("42- Nutrologia\n");
printf("43- Obstetricia\n");
printf("44- Oftalmologia\n");
printf("46- Otorrinolaringologia\n");
printf("47- Patologia\n");
printf("49- Pediatria\n");
printf("50- Pneumologia\n");
printf("51- Psiquiatria\n");
printf("53- Radioterapia\n");
printf("54- Reumatologia\n");
printf("55- Urologia\n");
scanf("%d", &c.especialidade);
printf("Segunda de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Terca de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quarta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quinta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Sexta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Segunda de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Terca de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quarta de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quinta de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Sexta de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
c.status = 1;
if (status != 1) {
else {
printf("Cliente cadastrado com sucesso \n");
int status, i, j;
tmedicos c;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
else {
else {
printf("CRM: ");
puts(c.crm);
printf("\n");
printf("Nome: ");
puts(c.nome);
printf("\n");
printf("Especialidade: ");
printf("%d", c.especialidade);
printf("\n");
printf("Tabela de horarios:\n");
printf("\n");
tmedicos c;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
else {
else {
pos++;
printf("CRM: ");
puts(c.crm);
printf("\n");
printf("Especialidade: ");
printf("%d", c.especialidade);
printf("\n");
printf("Turnos:\n");
printf("Segunda:\n");
printf("Manha e tarde\n");
printf("Tarde\n");
printf("Manha\n");
} else {
printf("Terca:\n");
printf("Manha e tarde\n");
printf("Tarde\n");
printf("Manha\n");
} else {
printf("Quarta:\n");
printf("Manha e tarde\n");
printf("Tarde\n");
} else {
printf("Quinta:\n");
printf("Manha e tarde\n");
printf("Tarde\n");
printf("Manha\n");
} else {
printf("Sexta:\n");
printf("Manha e tarde\n");
printf("Tarde\n");
printf("Manha\n");
} else {
break;
aux = raiz;
if (aux->dir == NULL) {
raiz = raiz->esq;
return aux;
else {
return maior_med(raiz->dir);
tno_med * aux;
aux = *raiz;
*raiz = NULL;
*raiz = (*raiz)->dir;
*raiz = (*raiz)->esq;
else {
aux = maior_med((*raiz)->esq);
strcpy((*raiz)->crm, aux->crm);
free(aux);
tmedicos c;
if (*raiz == NULL) {
printf("Arvore Vazia\n");
}
remover_no_med(&(*raiz));
else {
remover_indice_med(&((*raiz)->esq), crm);
else {
remover_indice_med(&((*raiz)->dir), crm);
tmedicos c;
if (pos == -1) {
} else {
if (status != 1){
}else {
c.status = 0;
if (status != 1) {
}
else {
remover_indice_med(&raiz, crm);
int status, i, j;
tno_med * aux;
} else {
aux = raiz;
strcpy(aux->nome, c.nome);
strcpy(aux->especialidade, c.especialidade);
tmedicos c;
char escolha;
if (pos == -1) {
} else {
if (status != 1){
printf("Erro de leitura\n");
} else {
do {
printf("1.Nome\n");
printf("2.Especialidade\n");
printf("3.Tabela de horarios\n");
printf("4.Continuar o programa\n");
escolha = getche();
switch (escolha) {
case '1':
do {
break;
case '2':
do {
printf("1- Acupuntura\n");
printf("3- Anestesiologia\n");
printf("4- Angiologia\n");
printf("6- Cardiologia\n");
printf("7- Cirurgia Cardiovascular\n");
printf("17- Coloproctologia\n");
printf("18- Dermatologia\n");
printf("20- Endoscopia\n");
printf("21- Gastroenterologia\n");
printf("23- Geriatria\n");
printf("26- Homeopatia\n");
printf("27- Infectologia\n");
printf("28- Mastologia\n");
printf("39- Nefrologia\n");
printf("40- Neurocirurgia\n");
printf("41- Neurologia\n");
printf("42- Nutrologia\n");
printf("43- Obstetricia\n");
printf("44- Oftalmologia\n");
printf("46- Otorrinolaringologia\n");
printf("47- Patologia\n");
printf("49- Pediatria\n");
printf("50- Pneumologia\n");
printf("51- Psiquiatria\n");
printf("53- Radioterapia\n");
printf("54- Reumatologia\n");
printf("55- Urologia\n");
scanf("%d", &c.especialidade);
break;
case '3':
printf("Segunda de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Terca de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quarta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Quinta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Sexta de manha\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Segunda de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Terca de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
do{
scanf("%d", &c.horarios[i][j]);
printf("Quinta de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
printf("Sexta de tarde\n");
do{
scanf("%d", &c.horarios[i][j]);
case '4':
break;
if (status != 1) {
} else {
}
}
//moduloconsultas.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "moduloclientes.h"
#include "modulomedicos.h"
#include "Queue.h"
#include "types.h"
int i;
return 0;
return 1;
int i = 0, v = valida_numero(*str);
long data[3];
if (v != 1){
return 0;
return 0;
return 0;
return 0;
return 0;
} else {
return 0;
return 1;
long data[3];
Dias31 = data[1] / 2;
}else{
Dias31 = ( data[1] + 1 ) / 2;
if ( data[1] >= 2 ){
DiasDoAno = DiasDoAno - 1;
} else {
DiasDoAno = DiasDoAno - 2;
if (data[2] == 1600){
NumDias = DiasDoAno;
} else {
switch ( NumDias % 7 ){
char data[20];
tcliente a;
tmedicos d;
tconsulta m;
if (poscliente >= 0) {
else {
return;
if (posmedicos >= 0) {
d = retorna_medico(raiz_medico,arq_medico, crm);
else {
return;
}
do{
}while(valida_data(&data) == 0);
dia = valida_dia(&data);
do{
scanf("%d", &t);
if(dia == 0){
} else {
if(t == 1){
if(d.horarios[0][0] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_manha(&m, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_manha[manha] = &a;
manha++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else if (t == 2){
if(d.horarios[1][0] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_tarde(&t, &a);
}
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_tarde[tarde] = &a;
tarde++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else {
if(t == 1){
if(d.horarios[0][1] == 0){
} else {
do{
scanf("%d", &op);
if(op == 1){
enqueue_manha(&m, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_manha[manha] = &a;
manha++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else if (t == 2){
if(d.horarios[1][1] == 0){
} else {
printf("Medico disponivel para esse horario\n");
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_tarde(&t, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_tarde[tarde] = &a;
tarde++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
}
} else if (dia == 2){
} else {
if(t == 1){
if(d.horarios[0][2] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_manha(&m, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_manha[manha] = &a;
manha++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else if (t == 2){
if(d.horarios[1][2] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_tarde(&t, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_tarde[tarde] = &a;
tarde++;
status = fwrite(&m, sizeof(tconsulta), 1, arq_consulta);
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else {
if(t == 1){
if(d.horarios[0][3] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_manha(&m, &a);
}
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_manha[manha] = &a;
manha++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else if (t == 2){
if(d.horarios[1][3] == 0){
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_tarde(&t, &a);
printf("Insercao na fila efetuada com sucesso\n");
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_tarde[tarde] = &a;
tarde++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else {
if(t == 1){
if(d.horarios[0][4] == 0){
} else {
printf("Medico disponivel para esse horario\n");
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_manha(&m, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_manha[manha] = &a;
manha++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
} else if (t == 2){
if(d.horarios[1][4] == 0){
printf("Esse medico esta indisponivel nesse horario\n");
} else {
printf("Nao ha mais vagas disponiveis para marcar consulta. Deseja entrar em uma fila
de espera?\n1-Sim\n2-Nao\n");
do{
scanf("%d", &op);
if(op == 1){
enqueue_tarde(&t, &a);
} else {
fseek(arq_consulta, 0, 2);
strcpy(m.cpf, cpf);
strcpy(m.crm, crm);
strcpy(m.data_consulta, data);
m.turno = t;
m.status = 0;
m.paciente_tarde[tarde] = &a;
tarde++;
if (status != 1) {
printf("Erro de gravacao\n");
else {
}
}
} else{
printf("Dia invalido\n");
int status, i;
tconsulta c;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
} else {
} else {
if(turno == 1){
puts(c.paciente_manha[i]->nome);
printf("\n");
} else {
puts(c.paciente_tarde[i]->nome);
printf("\n");
}
break;
int status;
tmedicos m;
tconsulta c;
fseek(arq_consulta, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq_consulta)) {
} else {
} else {
puts(m.nome);
printf("\n");
puts(m.crm);
printf("\n");
printf("%d", m.especialidade);
puts(c.data_consulta);
printf("%d", c.turno);
}
if(feof(arq_consulta)){
break;
int status;
tconsulta c;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
} else {
} else {
c.status = -1;
if(c.turno == 1){
if(isempty_manha(m) == FALSE){
c.paciente_manha[manha] = dequeue_manha(m);
if (status != 1) {
printf("Erro de gravacao\n");
} else {
printf("Consulta desmarcada com sucesso\n");
} else{
manha--;
if (status != 1) {
printf("Erro de gravacao\n");
} else {
c.paciente_tarde[tarde] = dequeue_manha(t);
if (status != 1) {
printf("Erro de gravacao\n");
} else {
} else {
tarde--;
if (status != 1) {
printf("Erro de gravacao\n");
else {
}
}
return;
//incializar-encerrar.c
#include "types.h"
#include "Queue.h"
#include "Stack.h"
#include "moduloclientes.h"
#include "modulomedicos.h"
#include "moduloconsultas.h"
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
FILE * arq;
if (arq == NULL) {
if (arq == NULL) {
return arq;
tcliente c;
int status;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq))
printf("Erro de leitura\n");
break;
else {
if (c.status == 1) {
tmedicos m;
int status;
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq))
printf("Erro de leitura\n");
break;
else {
if (m.status == 1) {
tconsulta c;
char data[9];
int status;
_strdate(data);
fseek(arq_consulta, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq_consulta)) {
} else {
} else {
c.status = 1;
if(c.turno == 1){
if(isempty_manha(m) == FALSE){
c.paciente_manha[manha] = dequeue_manha(m);
if (status != 1) {
printf("Erro de gravacao\n");
} else {
} else{
manha--;
if (status != 1) {
printf("Erro de gravacao\n");
} else {
c.paciente_manha[manha] = dequeue_manha(m);
if (status != 1) {
printf("Erro de gravacao\n");
} else {
} else {
tarde--;
printf("Erro de gravacao\n");
else {
break;
Stack pilha;
if (*raiz == NULL) {
printf("Arvore vazia\n");
else {
createStack(&pilha);
aux = *raiz;
if (aux != NULL) {
push(&pilha, aux);
aux = aux->esq;
else {
if (isEmpty(pilha) == FALSE) {
aux = pop(&pilha);
aux2 = aux;
aux = aux->dir;
free(aux2);
*raiz = NULL;
Stack pilha;
if (*raiz == NULL) {
printf("Arvore vazia\n");
else {
createStack(&pilha);
aux = *raiz;
if (aux != NULL) {
push_med(&pilha, aux);
aux = aux->esq;
else {
if (isEmpty(pilha) == FALSE) {
aux = pop_med(&pilha);
aux2 = aux;
aux = aux->dir;
free(aux2);
}
}
*raiz = NULL;
int status;
tcliente c;
FILE * aux;
if (aux == NULL) {
fclose(arq);
else {
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
else {
break;
else {
if (c.status == 1) {
if (status != 1) {
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
fclose(arq);
fclose(aux);
remove("clientes.dat");
rename("auxiliar", "clientes.dat");
int status;
tmedicos m;
FILE * aux;
if (aux == NULL) {
fclose(arq);
else {
fseek(arq, 0, 0);
while (1) {
status = fread(&m, sizeof(tmedicos), 1, arq);
if (status != 1) {
if (!feof(arq)) {
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
else {
break;
else {
if (m.status == 1) {
if (status != 1) {
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
fclose(arq);
fclose(aux);
remove("medicos.dat");
rename("auxiliar", "medicos.dat");
}
}
int status;
tconsulta c;
FILE * aux;
if (aux == NULL) {
fclose(arq);
else {
fseek(arq, 0, 0);
while (1) {
if (status != 1) {
if (!feof(arq)) {
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
else {
break;
else {
if (c.status == 1) {
if (status != 1) {
printf("Erro ao executar o processo de manutenção do arquivo\n");
fclose(arq);
fclose(aux);
remove("auxiliar");
return;
fclose(arq);
fclose(aux);
remove("consultas.dat");
rename("auxiliar", "consultas.dat");
//Queue.c
#include "types.h"
#include <stdio.h>
tdescritor *aux;
aux = (tdescritor*)malloc(sizeof(tdescritor));
return aux;
novo = (tnoqueue*)malloc(sizeof(tnoqueue));
} else {
tnoqueue *novo;
novo = (tnoqueue*)malloc(sizeof(tnoqueue));
} else {
tcliente *c;
tnoqueue *aux;
c = aux ->fila_de_espera;
free(aux);
return c;
tcliente *c;
tnoqueue *aux;
c = aux ->fila_de_espera;
free(aux);
return c;
return TRUE;
} else {
return FALSE;
}
int isempty_tarde (Queue t){
return TRUE;
} else {
return FALSE;
//Stack.c
#include "types.h"
#include <stdio.h>
#include <stdlib.h>
*s = NULL;
NoStack *novo;
novo->info = c;
novo->prox = *s;
*s = novo;
NoStack *novo;
novo->info_med = m;
novo->prox = *s;
*s = novo;
NoStack * aux;
tno * del;
aux = *s;
*s = (*s)->prox;
del = aux->info;
free(aux);
return del;
NoStack * aux;
tno_med * del;
aux = *s;
*s = (*s)->prox;
del = aux->info_med;
free(aux);
return del;
int isEmpty(Stack s) {
if (s == NULL) {
return TRUE;
else {
return FALSE;
}
}
//main.c
#include "moduloclientes.h"
#include "modulomedicos.h"
#include "moduloconsultas.h"
#include "incializar-encerrar.h"
#include "types.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main( ){
clientes = criarArquivo(arq_clientes_nome);
medicos = criarArquivo(arq_medicos_nome);
consultas = criarArquivo(arq_consultas_nome);
montar_indice_clientes(clientes, &indice_clientes);
montar_indice_medicos(medicos, &indice_medicos);
do {
printf("\t\t\tMenu Principal\n\n");
printf("1.Clientes\n");
printf("2.Medicos\n");
printf("3.Consultas\n");
printf("4.Sair do programa\n");
if(op == 1){
printf("\n");
printf("1.Cadastrar\n");
printf("2.Alterar\n");
printf("3.Exibir\n");
printf("4.Remover\n");
scanf("%d",&op2);fflush(stdin);
if (op2 == 1){
do{
cadastro(cpf,clientes,indice_clientes);
do {
do {
exibir(indice_clientes, cpf);
do{
printf("Informe o cpf do cliente a ser removido do cadastro\n");
} else {
printf("Opcao Invalida\n");
printf("\n");
printf("1.Cadastrar\n");
printf("2.Alterar\n");
printf("5.Remover\n");
if(op2 == 1){
do{
fgets(crm, 7, stdin);
do{
fgets(crm, 7, stdin);
do{
do{
}while(validar_nome(nome) == 0);
consultar_nome(medicos, nome);
do{
fgets(crm, 7, stdin);
printf("\n");
printf("1.Marcar consulta\n");
printf("4.Desmarcar consulta\n");
scanf("%d",&op2);fflush(stdin);
if(op2 == 1){
do {
do{
fgets(crm, 7, stdin);
do{
fgets(crm, 7, stdin);
do{
}while(valida_data(data) == 0);
do{
printf("Digite o turno\n1-Manha\n2-Tarde\n");
consultar_pacientes(consultas,crm,data,turno);
do {
do{
do{
fgets(crm, 7, stdin);
} else {
printf("Opcao invalida\n");
verificar(consultas);
}while(op != 4);
limpar_indice_clientes(indice_clientes);
limpar_indice_medicos(indice_medicos);
manutencao_clientes(clientes);
manutencao_medicos(medicos);
manutencao_consulta(consultas);
return 0;