Ir ao conteúdo

Posts recomendados

Postado

Pessoal, boa tarde!

Não estou conseguindo implementar a parte de "Diagnostico" no código preciso que se algum sintoma for respondido como "S" ele apresente uma mensagem e se todos forem respondido com "N" apresente outro mensagem

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


main (void){
setlocale(LC_ALL, "Portuguese");



char resp;
char nome;
int idade,opcao;
int sim_1=0,nao_1=0;




printf("----------------- Menu ------------------");
printf("\n (1)Diagnostico Covid-19 ");
printf("\n (2)Dicas de Prevenção   ");
printf("\n (3)Unidades de Saude Serra Gaucha");
printf("\n (4)Tratamentos");
printf("\n-----------------------------------------");


printf("\nDigite uma opção: ");
scanf("%i",&opcao);




switch (opcao)
{
   case  1:
   	
   	
   	   	
   	system("cls");
   	
   	printf("----------------- Menu ------------------");
	printf("\nDiagnostico Covid-19");
	printf("\n-----------------------------------------\n");
	
     fflush(stdin);

	 printf("Está com Febre? \n");
	 printf ("(S) SIM\n");
	 printf ("(N) NÃO\n");
	 scanf("%s",&resp);
	
	  if ((resp=='S')||(resp=='s'))
			{	
				sim_1++;
			}
			else
			{
				nao_1++;
			}
			
	 printf("Tens dificuldade de respirar?  \n");
	 printf ("(S) SIM\n");
	 printf ("(N) NÃO\n");
	 scanf("%s",&resp);
	
	  if ((resp=='S')||(resp=='s'))
			{	
				sim_1++;
			}
			else
			{
				nao_1++;
			}
			
	 printf("Está com tosse seca?  \n");
	 printf ("(S) SIM\n");
	 printf ("(N) NÃO\n");
	 scanf("%s",&resp);
	
	  if ((resp=='S')||(resp=='s'))
			{	
				sim_1++;
			}
			else
			{
				nao_1++;
			}
			

      printf ("Recomendamos procurar uma Unidade de Saude %d\n",sim_1);
      printf ("negativo: %d\n",nao_1);
      break;

   case  2:
   	
   	system("cls");
   	
   	printf("----------------- Menu ------------------");
	printf("\nDicas de Prevenção");
	printf("\n-----------------------------------------");
   	
   	
   	
   	
     printf("\n 1- Lave suas mãos com frequência. Use sabão e água ou um gel à base de álcool.");
     printf("\n");
     printf("\n 2- Mantenha uma distância segura de qualquer pessoa que esteja tossindo ou espirrando.");
     printf("\n");
     printf("\n 3- Não toque nos olhos, no nariz ou na boca.");
     printf("\n");
     printf("\n 4- Quando tossir ou espirrar, cubra o nariz e a boca com o cotovelo dobrado ou um tecido.");
     printf("\n");
     printf("\n 5- Fique em casa se você se sentir indisposto.");
     printf("\n");
     printf("\n 6- Se você tiver febre, tosse e dificuldade para respirar, procure assistência médica. Ligue antes de sair");
     printf("\n");
     printf("\n 7- Siga as instruções de sua autoridade de saúde local.");
     printf("\n");
     
   break;
   
   case  3:
     printf("3");
   break;
   
   case  4:
   	
   	
   	   	
   	system("cls");
   	
   	printf("----------------- Menu ------------------");
	printf("\nTratamentos");
	printf("\n-----------------------------------------");
   	
   	
   	
     printf("\nJuntamente com as orientações, algumas medidas simples podem ajudar, como:");
     printf("\n");
     printf("\nFazer repouso.");
     printf("\n");
     printf("\nBeber bastante água.");
     printf("\n");
     printf("\nTomar banho quente para auxiliar no alívio da dor de garganta e tosse.");
     printf("\n");
     printf("\nUsar umidificador de ar.");
     printf("\n");
     
     
     
   break;

   default :
      printf ("Valor invalido!\n");
 }
}

 

Postado

@Jacksoon

27 minutos atrás, Jacksoon disse:

se algum sintoma for respondido como "S" ele apresente uma mensagem e se todos forem respondido com "N" apresente outro mensagem

Você já está incrementando um contador, agora só precisa avaliar seu valor.

Se você quer apenas avaliar se ao menos 1 dos sintomas recebeu sim como resposta, você não precisa da variável nao_1. Avalie somente o valor da variável sim_1.

if(sim_1 > 0){
    printf("Um ou mais sintomas foram respondidos com sim.\n");
} else{
    printf("Todos sintomas foram respondidos com não.\n");
}
  • Curtir 1
Postado

@Lucca Rodrigues  Entendi, mas a  ideia seria apresentar o resultado apenas no final após todos os testes.

20 horas atrás, Lucca Rodrigues disse:

@Jacksoon

Você já está incrementando um contador, agora só precisa avaliar seu valor.

Se você quer apenas avaliar se ao menos 1 dos sintomas recebeu sim como resposta, você não precisa da variável nao_1. Avalie somente o valor da variável sim_1.


if(sim_1 > 0){
    printf("Um ou mais sintomas foram respondidos com sim.\n");
} else{
    printf("Todos sintomas foram respondidos com não.\n");
}

 

Postado
22 horas atrás, Jacksoon disse:

que se algum sintoma for respondido como "S" ele apresente uma mensagem e se todos forem respondido com "N" apresente outro mensagem

 

Escreva seu programa em torno dos dados. Sempre.

 

Citação

"Se algum" e "Se todos" são condições definitivas.

 

Pense bem: 

 

Condição 1: Se algum

 

Você tem 3 perguntas. E se o cara apresentar algum dos sintomas vai recomendar que procure um posto de saúde. Se o cara tem o primeiro sintoma qual o propósito de perguntar também se ele tem tosse para depois dar a mesma resposta? 

O cara já está com febre e preocupado. Pra que testar a paciência dele perguntando mais 2 coisas? Ou uma se ele tem tosse seca? 

Você parte dos sintomas mais graves e ao primeiro sim você dá a única resposta, poupando o paciente e a paciência do paciente que já está com febre e também o computador.

 

Condição 2: Se todos

 

Não há razão pra ficar contando: ao menos 1 é o que basta. E na verdade não precisa perguntar nada porque as hipóteses se referem à mesma pergunta... 

 

EXEMPLO

        char resp[30];
        printf("Está com Febre? (S) SIM (N) NÃO: "); // 1
        scanf("%s", resp);
        if ((resp[0] == 'S') || (resp[0] == 's'))
        {   printf("Recomendamos procurar uma Unidade de Saude %d\n");
            break;
        };
        printf("Tens dificuldade de respirar? (S) SIM (N) NÃO: "); // 2
        scanf("%s", resp);
        if ((resp[0] == 'S') || (resp[0] == 's'))
        {   printf("Recomendamos procurar uma Unidade de Saude %d\n");
            break;
        }
        printf("Está com tosse seca?  (S) SIM (N) NÃO: "); // 3
        scanf("%s", resp);
        if ((resp[0] == 'S') || (resp[0] == 's'))
        {   printf("Recomendamos procurar uma Unidade de Saude!\n");
            break;
        }
        printf("Resultado negativo\n");
        break;

 

Este trecho funciona e é muito mais simples de ler

  • use %s em scanf() e leia uma string, assim se o cara bater o dedo em outra tecla e digitar sss não vai zoar seu programa
  • mas teste apenas pela primeira letra, resp[0]
  • declare a variável aí mesmo porque só está usando para isso mesmo
  • quando você já tem uma resposta mostre a recomendação e termine
  • se chegou até o fim o cara não tem sintomas. Não precisa contar nada
  • qualquer break tem o mesmo efeito, já que estão dentro do mesmo case...
     

É só um exemplo.

  • Curtir 1
Postado

Obrigado pelas dicas, consegui resolver a questão.

Teria alguma função que possa por para quando usuário acessar algum menu possa pressionar uma tecla para voltar ao menu inicial?

 

  • Curtir 1
Postado
3 horas atrás, Jacksoon disse:

Obrigado pelas dicas, consegui resolver a questão.

Teria alguma função que possa por para quando usuário acessar algum menu possa pressionar uma tecla para voltar ao menu inicial?

 crie uma função para exibir o menu então chame essa função quando necessario.

  • Curtir 2
Postado

@Jacksoon O certo seria, no menu principal, ter uma 5ª opção para caso o usuário queira sair.

Para isso, você poderia usar um loop incluindo tudo desde o menu principal. Todas as opções poderiam ser exibidas quantas vezes o usuário quiser, e o programa somente se encerraria com a 5ª opção.

while(true){
  //...
}

Daí, Para o 5º caso, você poderia fazer o seguinte:

case 5: // Sair
    printf("\nSaindo...\n");
    return(0);

Adicionalmente, você teria que imprimir no final de cada caso algo como: "Pressione enter para continuar...", limpar o buffer e usar a função getchar(). Dessa forma, quando o usuário apertar enter, o loop entra em ação e ele estaria de volta no menu principal:

printf ("\nPressione enter para continuar...\n");
scanf("%*c");
getchar();
break;

Você poderia colocar uma função para limpar a tela acima do menu principal para reiniciar todo o processo.

  • Curtir 1
  • Amei 1
Postado
Em 12/07/2020 às 16:52, Jacksoon disse:

Teria alguma função que possa por para quando usuário acessar algum menu possa pressionar uma tecla para voltar ao menu inicial

Apenas use uma função para cada nível de menu e retorne a opção. A linguagem faz o resto: retornar

  • Curtir 1

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!