Ir ao conteúdo

[DUVIDA] Problema com programa


Mobios

Posts recomendados

Postado

Povo, tenho um programa pra fazer, o ultimo exercicio da Lista, o programa é o seguinte:

Um medico tem um numero n de pacientes e ele entra com o nome do caboclo e os sintomas, ao final imprime o nome do champz e o diagnostico dele, os sintomas sao:

Espirros (0 - nao / 1 - sim)

Coriza || ||

Dor de cabeça || ||

Temperatura (36.5 a 37 normal)

Disgnostico e baseado:

1 - Se o paciente tiver apenas um sintoma é gripe

2 - Se apresentar todos sintomas e pneumunia

3 - Se somente coriza e espirros é resfriado

4 - se tiver todos exet temperatura normal e coriza é bronquite

5 - Outra combinaçao é diagnostico indefinido

Segue o codigo


#include<stdio.h>
int main()
{
// VARIAVEIS
char nome[150][61];
int cont, esp[150], cor[150], dor[150], temp[150];

// INICIO
cont = 0;
while (cont <= 150)
{
__fpurge(stdin);
printf("\n Nome do caboclo -> ");
gets(nome[cont]);
if (strcmp(nome[cont], "fim") == 0)
{
break;
}
printf("\n Espirra? -> ");
scanf("%d", &esp[cont]);
printf("\n Tem coriza? -> ");
scanf("%d", &cor[cont]);
printf("\n Tem dor de cabeça? -> ");
scanf("%d", &dor[cont]);
printf("\n Temperatura em °C? -> ");
scanf("%d", &temp[cont]);
if (temp[cont] <= 37 && temp[cont] >= 36.5)
{
temp[cont] = 1;
}
else
{
temp[cont] = 0;
}
cont++;
}
cont = cont - 1;
while (cont >= 0)
{
if (esp[cont] == 1 && cor[cont] == 1 && dor[cont] == 1 && temp[cont] == 1)
{
printf("\n O paciente %s possui Pneumonia", nome[cont]);
}
else if (esp[cont] == 1 && cor[cont] == 1 && dor[cont] != 1 && temp[cont] != 1)
{
printf("\n O paciente %s possui Resfriado", nome[cont]);
}
else if (esp[cont] == 1 && cor[cont] != 1 && dor[cont] == 1 && temp[cont] != 1)
{
printf("\n O paciente %s possui Bronquite", nome[cont]);
}

else
{
printf("\n O paciente %s não possui diagnóstico definido.", nome[cont]);
}
cont--;
}
return 0;
}

Alguem me da uma luz de como fazer isso funcionar certinho?

Obrigado c:

Obs: Uso o C4Droid como plataforma IDE e compilo em TCC

Postado

como ficaria então cara? porque to pensando aqui e tal, mas nao sei bem como implementar o switch case neste caso, ja que existem varias condicionais

Postado

Cara sou iniciante dos iniciantes em linguagem C, eu não consegui definir um jeito de fazer o "diagnostico indefinido", talvez você consiga, você vai achar que é só colocar um else e acabara os seus problemas, porém comigo não deu certo.

compila ai para você ver como ficou.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

//Declarando as variáveis.
char nome[30];
int espirro,coriza,dorCabeca;
float temp;

//Construindo estrutura.
printf ("\n\n\tNOME DO PACIENTE: ");
gets (nome);

printf ("\n\t___________________________");
printf ("\n\t SELECIONE OS SINTOMAS");
printf ("\n\t 0-NAO 1-SIM");
printf ("\n\t---------------------------\n\n");
printf ("\n\tESPIRROS: ");
scanf ("%d",&espirro);
printf ("\n\tCORIZA: ");
scanf ("%d",&coriza);
printf ("\n\tDOR DE CABECA: ");
scanf ("%d",&dorCabeca);
printf ("\n\tTEMPERATURA: ");
scanf ("%f",&temp);
system ("cls");

if ((espirro==1)&&(coriza==0)&&(dorCabeca==0)&&(temp>=36.5&&temp<=37)){
printf ("\n\tSINTOMA: GRIPE.\n\n");
}
if ((espirro==0)&&(coriza==1)&&(dorCabeca==0)&&(temp>=36.5&&temp<=37)){
printf ("\n\tSINTOMA: GRIPE.\n\n");
}
if ((espirro==0)&&(coriza==0)&&(dorCabeca==1)&&(temp>=36.5&&temp<=37)){
printf ("\n\tSINTOMA: GRIPE.\n\n");
}
if ((espirro==1)&&(coriza==1)&&(dorCabeca==1)&&(temp<36.5)||(temp>37)){
printf ("\n\tSINTOMA: PENEUMUNIA.\n\n");
}
if ((espirro==1)&&(coriza==1)&&(dorCabeca==0)&&(temp>=36.5&&temp<=37)){
printf ("\n\tSINTOMA: RESFRIADO.\n\n");
}
if ((espirro==1)&&(coriza==0)&&(dorCabeca==1)&&(temp>=36.5&&temp<=37)){
printf ("\n\tSINTOMA: BRONQUITE.\n\n");
}

system("PAUSE");
return 0;
}

Postado

Eu faria dessa forma, com struct


#include <stdio.h>

#define MAX 3

typedef struct _paciente{
char nome[20];
char sintoma[20];
}PACIENTE;

int main(void){
PACIENTE paciente[MAX];
int diag, dc, e, c;
float temp;

for(diag = 0; diag < MAX; diag++){
printf("Nome do paciente: ");
scanf(" %s", paciente[diag].nome);
printf("temp: ");
scanf(" %f", &temp);
printf("Dor de cabeca? (1 - 0): ");
scanf(" %d", &dc);
printf("Espirros? (1 - 0): ");
scanf(" %d", &e);
printf("Coriza? (1 - 0): ");
scanf(" %d", &c);

if((dc + e + c) == 1){
strcpy(paciente[diag].sintoma, "gripe");
}else if(!(temp >= 36.4 && temp <= 37) && (dc + e + c) == 3){
strcpy(paciente[diag].sintoma, "pneumonia");
}else if(!dc && (c + e) == 2){
strcpy(paciente[diag].sintoma, "resfriado");
}else if(!(temp >= 36.4 && temp <= 37) && !c && (dc + e) == 2){
strcpy(paciente[diag].sintoma, "bronquite");
}else{
strcpy(paciente[diag].sintoma, "indefinido");
}
}

printf("\n\nRELATORIO\n\n");

for(diag = 0; diag < MAX; diag++){
printf("Paciente: %s\n", paciente[diag].nome);
printf("diag: %s\n\n", paciente[diag].sintoma);
}

return 0;
}

Postado

Obrigado a todos pela ajuda, mas infelizmente, nenhum chegou a funcionar corretamente, vou ver se dou mais uma olhada certinha aqui, obrigado a todos c: se mais alguem puder dar uma ajuda, fico muito grato c:

EDIT: O codigo do oliver.soul funciona de forma satisfatória, porém aprenseta um pequeno problema no diagnostico gripe, se tiver febre e algum outro sintoma ele indica gripe. Mas ta muito bom seu codigo cara, so queria compreende-lo hsuahsau mas valeu (y)

Postado

Dê uma olhada aí Mobios. Tentei seguir o que você já havia feito:

#include <stdio.h>
#include <string.h>
#define MAX 2

int main()
{

char nome[MAX][61];
int cont, esp[MAX], cor[MAX], dor[MAX], febre[MAX] = {0};
float temp;

cont = 0;
while (cont < MAX)
{
printf("\nNome do caboclo -> ");

gets(nome[cont]);
if (strcmp(nome[cont], "fim") == 0)
break;

printf("\nEspirra? -> ");
scanf("%d", &esp[cont]);
printf("\nTem coriza? -> ");
scanf("%d", &cor[cont]);
printf("\nTem dor de cabeca? -> ");
scanf("%d", &dor[cont]);
printf("\nTemperatura em C? -> ");
scanf("%f", &temp);
if (temp >= 36.5 && temp <= 37)
febre[cont] = 0;
else if (temp > 37)
febre[cont] = 1;

cont++;
fflush(stdin);
}

cont--;
while (cont >= 0)
{
if (esp[cont] && cor[cont] && dor[cont] && febre[cont])
printf("\nO paciente [%s] possui Pneumonia.", nome[cont]);
else if ((esp[cont] + cor[cont] + dor[cont] + febre[cont]) == 1)
printf("\nO paciente [%s] possui Gripe.", nome[cont]);
else if ((esp[cont] && cor[cont]) && (!(dor[cont] || febre[cont])))
printf("\nO paciente [%s] possui Resfriado.", nome[cont]);
else if ((esp[cont] && dor[cont]) && ((febre[cont]) && !(cor[cont])))
printf("\nO paciente [%s] possui Bronquite.", nome[cont]);
else
printf("\nO paciente [%s] nao possui diagnostico definido.", nome[cont]);
cont--;
}

return 0;
}

[]'s

LNW

Arquivado

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

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!