Ir ao conteúdo
  • Cadastre-se

C onde esta o erro nesse código em C?


toscosan

Posts recomendados

Linguagem C, erro anexo.

 

Pergunta:

 

Uma certa empresa fez uma pesquisa de mercado para saber se as pessoas gostaram ou não do seu último produto lançado. Para isto, coletou o sexo do entrevistado e a sua resposta (sim ou não). Sabendo que foram entrevistadas 150 pessoas, fazer um algoritmo que calcule e mostre ao final: • O número de pessoas que responderam sim; • O número de pessoas que responderam não; • A percentagem de pessoas do sexo feminino que responderam sim; • A percentagem de pessoas do sexo masculino que responderam não; Para a resposta SIM/NÃO. Utilize uma variável do tipo CHAR, que armazena S ou N, ou use uma variável do tipo INT que armazena 1 (para SIM) e 2 (para NÃO).

 

Por que não esta compilando, onde estou errando ?

#include<stdio.h>

#include<math.h>

#include<string.h>

int main(){

int x, i, sim=0, nao=0, masc=0, fem=0; char sexo[15], resposta[4]; float femsim=0, mascnao=0;

  scanf("%d", &x);

  for (i=0; i<x; i++){

    scanf("%s" ,&resposta);

scanf("%s" &sexo);

    if ((strcmp(sexo,"MASCULINO")==0)&&(strcmp(resposta,"SIM")==0)){

      sim++; masc++;

    }

    else if ((strcmp(sexo,"MASCULINO")==0)&&(strcmp(resposta,"NAO")==0)){

      nao++; mascnao++; masc++;

    }

    else if ((strcmp(sexo,"FEMININO")==0)&&(strcmp(resposta,"SIM")==0)){

      sim++; femsim++; fem++;

    }

    else if ((strcmp(sexo,"FEMININO")==0)&&(strcmp(resposta,"NAO")==0)){

      nao++; fem++;

    }

  }

  printf("SIM = %d\nNAO = %d\n", sim, nao);

  printf("FEMININO - SIM = %.2f\n", (femsim*100)/fem);

  printf("MASCULINO - NAO = %.2f\n", (mascnao*100)/masc);

  return 0;

}

onde esta o problema.png

  • Amei 1
Link para o comentário
Compartilhar em outros sites

11 horas atrás, toscosan disse:

onde estou errando ?

 

✔️❌ Para responder SIM / NAO o enunciado impõe duas possibilidades:

  1. Usar um caractere S ou N
  2. Usar um numeral   1  ou 2

 

 

SUGESTÕES

 

  • Coloque antes das entradas mensagens de solicitação. Ex.:
    int qpe= 0; /*< Quantidade de Pessoas Entrevistadas */
    
    fprintf(stdout,"%s","Usuario, por favor, entre com quantidade de entrevistas.\n? ");
    fscanf(stdin," %d",&qpe);
  • Ainda é Possível resolver usando vetores.

|

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 8 meses depois...

Assim funciona:

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

int main() {
    int quantidadeEntrevistados = 2;  // Total de pessoas entrevistadas

    int quantidadeSim = 0;  // Quantidade de pessoas que responderam sim
    int quantidadeNao = 0;  // Quantidade de pessoas que responderam nao

    int quantidadeFeminino = 0;     // Quantidade de mulheres
    int quantidadeMasculino = 0;    // Quantidade de homens

    double porcentagemFeminino = 0.0;   // Baseado na quantidade de mulheres
    double porcentagemMasculino = 0.0;  // Baseado na quantidade de homens

    char sexo = ' ';
    char resposta = ' ';

    for (int i = 0; i < quantidadeEntrevistados; ++i) {
        printf("-------------------------------------------------- \n");
        printf("Entrevistado [ %i de %i ] \n", (i + 1), quantidadeEntrevistados);

        do {
            printf("Digite seu sexo [ F / M ]: ");
            scanf(" %c%*c", &sexo);
            sexo = (char) toupper(sexo);
        } while (sexo != 'F' && sexo != 'M');

        do {
            printf("Digite sua resposta [ S / N ]: ");
            scanf(" %c%*c", &resposta);
            resposta = (char) toupper(resposta);
        } while (resposta != 'S' && resposta != 'N');

        printf("-------------------------------------------------- \n");

        switch (sexo) {
            case 'F':
                quantidadeFeminino += 1;
                break;
            case 'M':
                quantidadeMasculino += 1;
                break;
            default:
                printf("[ E ]: Essa mensagem nao deveria ser exibida. Verifique o do-while do sexo. \n");
                exit(EXIT_FAILURE);
        }

        switch (resposta) {
            case 'S':
                quantidadeSim += 1;

                if (sexo == 'F') {
                    porcentagemFeminino += 1;
                }
                break;
            case 'N':
                quantidadeNao += 1;

                if (sexo == 'M') {
                    porcentagemMasculino += 1;
                }
                break;
            default:
                printf("[ E ]: Essa mensagem nao deveria ser exibida. Verifique o do-while da resposta. \n");
                exit(EXIT_FAILURE);
        }
    }

    porcentagemFeminino = (quantidadeFeminino != 0)
                          ? porcentagemFeminino * 100 / quantidadeFeminino
                          : 0.0;

    porcentagemMasculino = (quantidadeMasculino != 0)
                           ? porcentagemMasculino * 100 / quantidadeMasculino
                           : 0.0;

    return EXIT_SUCCESS;
}

 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!