Ir para conteúdo

Arquivado

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

Thais Tesck

dificuldade em desenvolver uma classificação de perguntas

Recommended Posts

Olá .

estou fazendo um "relatório" para classificar a participação de alguém em um crime conforme

as perguntas feitas.

(trabalho de aula)

 

Porém estou com dificuldades . Algo tão simples mas não vai .

Se puderem me dar uma dica , agradeço .

 

Meu raciocínio lógico ta péssimo , eu sei .

/*1. Utilizando listas faça um programa que faça 5 perguntas para uma pessoa sobre um crime. As 
*perguntas são: 
*a. "Telefonou para a vítima?" 
*b. "Esteve no local do crime?" 
*c. "Mora perto da vítima?" 
*d. "Devia para a vítima?" 
*e. "Já trabalhou com a vítima?" 
*O programa deve no final emitir uma classificação sobre a participação da pessoa no crime. Se a 
*pessoa responder positivamente a 2 questões ela deve ser classificada como "Suspeita", entre 3 e 4 
*como "Cúmplice" e 5 como "Assassino". Caso contrário, ele será classificado como "Inocente". 
*/

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

int main(int argc, char *argv[])
{
 
 char x[5] ; 
 int i ;
 
printf("Telefonou para a vitima?\n");
scanf("%s", &x[1]);
system ("cls");
printf("Esteve no local do crime?\n");
scanf("%s", &x[2]);
system ("cls");
printf("Mora perto da vitima?\n");
scanf("%s", &x[3]);
system ("cls");
printf("Devia para a vitima?\n");
scanf("%s", &x[4]);
system ("cls");
printf("Já trabalhou com a vitima?\n"); 
scanf("%s", &x[5]);
system ("cls");

for(i = 1 ; i >5 ; i++)

if(x[i] == 's')printf("suspeito");







return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a resposta estiver limitada entre "sim" e "não", basta criar uma rotina que faça a comparação e some a quantidade de ocorrências positivas. Isso gera um índice para , posteriormente, classifica-la.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra alternativa é usar uma variável, inicialmente com valor 0, que é incrementada a cada resposta positiva.

 

 

unsigned int positive_answers = 0;
 
// fazer perguntas e incrementar com base na resposta.
 
switch (positive_answers)
{
    // agir de acordo com a quantidade de resposas positivas.
 
}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei dessa forma , porém só le e nao mostra a classificação

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

int main()
{
 
 char x[5] ; 
 int i ;
 int positivas;

 

printf("Telefonou para a vitima?\n");
scanf("%s", &x[1]);
printf("Esteve no local do crime?\n");
scanf("%s", &x[2]);
printf("Mora perto da vitima?\n");
scanf("%s", &x[3]);
printf("Devia para a vitima?\n");
scanf("%s", &x[4]);
printf("Ja trabalhou com a vitima?\n"); 
scanf("%s", &x[5]);

      for( i = 0 ; i < 5 ;i++)
        if(x[i] == 's' || x[i]== 'S'){
            positivas++;
        }
      
    
    
      switch (positivas) {
        case 2:
            printf("\n\nSuspeita\n");
            break;
        case 3:
        case 4:
            printf("\n\nCúmplice\n");
            break;
        case 5:
            printf("\n\nAssassino\n");
            break;
            
        case 1:
            printf("\n\nInocente\n");
            break;
    }



return 0;

}

sei que o erro tá na forma de como leio as respostas , porem nao sei como concertar isso , queria saber como faço para ir de x[1] á x[5] comparando e usando só as positivas , se puderem me esclarecer .

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) O vetor é de 5 posições, porém, ele começa em zero.

A leitura está começando na posição 2 (valor 1), enquanto o "for()" está correto.

2) Troque a máscara de leitura para o tipo "char" ("%c").

3) Inicialize as variáveis. A variável "positivas" está vindo com lixo.

int postivas = 0;
 
printf("Telefonou para a vitima?\n");
scanf("%c", &x[0]);
printf("Esteve no local do crime?\n");
scanf("%c", &x[1]);
printf("Mora perto da vitima?\n");
scanf("%c", &x[2]);
printf("Devia para a vitima?\n");
scanf("%c", &x[3]);
printf("Ja trabalhou com a vitima?\n");
scanf("%c", &x[4]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui resolver , obrigada .

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

int main()
{
 
 char x[5] ; 

 int positivas = 0;
 
 int i;
 
printf ("Responda com 's' ou 'n'\n\n\n\n\n");
system("PAUSE");
system ("cls");


printf("Telefonou para a vitima?\n");
scanf("%c", &x[0]);
setbuf(stdin, NULL);
printf("Esteve no local do crime?\n");
scanf("%c", &x[1]);
setbuf(stdin, NULL);
printf("Mora perto da vitima?\n");
scanf("%c", &x[2]);
setbuf(stdin, NULL);
printf("Devia para a vitima?\n");
scanf("%c", &x[3]);
setbuf(stdin, NULL);
printf("Ja trabalhou com a vitima?\n"); 
scanf("%c", &x[4]);
setbuf(stdin, NULL);

for( i = 0; i<5 ; i++){
        if(x[i] == 's' || x[i]== 'S'){
            positivas++;
        }
      
    }
  
      switch (positivas) {
        case 2:
            printf("\n\nSuspeita\n");
            break;
        case 3:
        case 4:
            printf("\n\nCumplice\n");
            break;
        case 5:
            printf("\n\nAssassino\n");
            break;
            
        case 0:
        case 1:
            printf("\n\nInocente\n");
            
            
            break;
    }



return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nss! Um programa pra decidir o destino da vida de alguém... sem comentários... rsrs...

Primeiro remova "setbuf(stdin, NULL);" de todo o seu código. Já que você está utilizando scanf então é só adicionar um %*c pra limpar o caractere \n do buffer.

Que tal organizar esse código?

		//Se não fosse iniciante: char* perguntas[5] = {...};
	char perguntas[5][30] =
	{
		"Telefonou para a vítima",
		"Esteve no local do crime",
		"Mora perto da vítima",
		"Devia para a vítima",
		"Já trabalhou com a vítima"
	};
	char respostas[5];
	int i;

	for (i = 0; i < 5; i++)
	{
		printf("%s [S/N]?: ", perguntas[i]);
		scanf("%c%*c", &respostas[i]);
	}

Você pode fazer uma validação do que é digitado, se é S ou N nada mais...

Após ler os dados, em outro for vai incrementando uma variável sempre que a resposta for igual a S/s.
Depois no final utilise um switch para decidir o rumo da vida do interrogado com base na quantidade de respostas "Sim".


Retire:

case 0:
case 1:
printf("\n\nInocente\n");

Adicione:

default:
puts("Inocente");
break;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.