Ir ao conteúdo
  • Cadastre-se

C IF, Else com resposta


Jacksoon

Posts recomendados

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");
 }
}

 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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");
}

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!