Ir ao conteúdo
  • Cadastre-se
Gabi00

C <Cálculo de percentual em C>

Posts recomendados

 

Olá, boa tarde!

Estou em dúvida sobre um exercício... Segue o enunciado e logo abaixo o meu algoritmo 

 

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; OK 

• O número de pessoas que responderam não; OK 

• A percentagem de pessoas do sexo feminino que responderam sim; Dúvida sobre a declaração da variável... Quando inicio o meu algoritmo, consta como percentual 0,00 

• A percentagem de pessoas do sexo masculino que responderam não; Dúvida acima 

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h> //string que irá corresponder a uma localidade e será atribuída a uma categoria 

 

#define TOTAL 6 //Função pré-processador que define constantes, as quais ficam gravadas na memória comando_valor_da_const
int main()

{
    setlocale(LC_ALL, "Portuguese"); //Acentuação específica representada pelo argumento categoria 
    int contS = 0, contN = 0, contSfem = 0, contNmasc = 0;
    int sexo, resposta;
    
    for (int i = 1; i <= TOTAL; i++) //Laço de repetição 
    {
        printf("Você gostou do produto? Digite 1 para SIM ou 2 para NÃO\n:  "); //Imprime na tela
        scanf_s("%d", &resposta); //leitura de variável 
        printf("Digite seu sexo (1 - M | 2- F)\n:   "); //Imprime na tela
        scanf_s("%d", &sexo); //leitura de variável 

        if (resposta == 1) //Resposta Sim 
        { 
            contS++;
            if (sexo == 2) //Sim Feminino
            {
                contSfem++;
            }
        }
        else //Resposta Não
        { 
            contN++;  
            contNmasc++; //Não Masculino
        }
    }

    printf("Total de pessoas que  gostaram: %d\n", contS);
    printf("Total de pessoas que não gostaram: %d\n", contN); 
    printf("Percentual de mulheres que responderam sim: %.2f\n", contSfem/contSfem)*100;
    printf("Percentual de homens que responderam não: %.2f\n", contNmasc/contNmasc)*100;

    
    system("pause");

    return 0;

}

 

Gostaria de saber o que estou fazendo de errado

Agradeço desde já...

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá@Gabi00 consigo pensar pelo menos duas maneiras de estruturar esses dados, ou melhor a base de dados. Uma delas é essa que você me demostrou em seu código, nela declaramos uma variável para cada problema chave, se incrementa cada uma delas segundo o condicional associado a variável que representa uma das 4 possibilidades.

 

FS, FN, MS e MN.

 

ALGORITMO pesquisa de preferência.

Inicio


Escrever "Pesquisa de Mercado em C - PMeC."
Escrever "Legendas: [M] de masculino, [F] de Feminino, de [S.] Sim, [N] de Não e [→] significa."
Escrever "Quantas pessoas participaram da pesquisa?"

Ler numero_pessoas

Escrever "Informe sexo (1 → M | 2 → F) seguindo de preferência (1 → S | 2 → N) finalize com ENTER"

contador ← numero_pessoas

Enquanto contador > 0 faz [7,...,11]
Ler sexo, resp
Se 2 = sexo Então Se 1 = resp Então feminino_s ←(feminino_s +1) Senão feminino_n ←(feminino_n +1) FimSe
Se 1 = sexo Então Se 1 = resp Então masculino_s ←(masculino_s +1) Senão masculino_n ←(masculino_n +1) FimSe
contador ←(contador -1)
FimEnquanto

Escrever "Total de pessoas que disseram sim: ",(feminino_s + masculino_s)
Escrever "Total de pessoas que disseram não: ",(feminino_n + masculino_n)
Escrever "Percentual de sexo feminino  que disseram sim: %.2f%%",(1.0/numero_pessoas*feminino_s*100)
Escrever "Percentual de sexo feminino  que disseram não: %.2f%%",(1.0/numero_pessoas*feminino_n*100)
Escrever "Percentual de sexo masculino que disseram sim: %.2f%%",(1.0/numero_pessoas*masculino_s*100)
Escrever "Percentual de sexo masculino que disseram não: %.2f%%",(1.0/numero_pessoas*masculino_n*100)


Fim

 

Outra forma é usando a mesma lógica com matrizes de maneira que sexo e respostas são índices da matriz.

 

ALGORITMO pesquisa de preferência com matriz.

Inicio

  1. Escrever "Pesquisa de Mercado em C - PMeC."
  2. Escrever "Legendas: [M] de masculino, [F] de Feminino, de [S.] Sim, [N] de Não e [→] significa."
  3. Escrever "Quantas pessoas participaram da pesquisa?" 
  4. Ler numero_pessoas
  5. Escrever "Informe sexo (1 → M | 2 → F) seguindo de preferência (1 → S | 2 → N) finalize com ENTER"
  6. contador ← numero_pessoas
  7. Enquanto contador > 0 faz [7,...,10]
  8. Ler sexo, resp
  9. dados[sexo][resp]← ([sexo][resp] +1)
  10. contador ← (contador -1)
  11. FimEnquanto
  12. Escrever "Total de pessoas que disseram sim: ", (dados[2][1] + dados[1][1])
  13. Escrever "Total de pessoas que disseram não: ", (dados[2][2] + dados[1][2])
  14. Escrever "Percentual de sexo feminino    que disseram sim: %.2f%%", (1.0/numero_pessoas*dados[2][1]*100)
  15. Escrever "Percentual de sexo feminino    que disseram não: %.2f%%", (1.0/numero_pessoas*dados[2][2]*100)
  16. Escrever "Percentual de sexo masculino que disseram sim: %.2f%%", (1.0/numero_pessoas*dados[1][1]*100)
  17. Escrever "Percentual de sexo masculino que disseram não: %.2f%%", (1.0/numero_pessoas*dados[1][2]*100)

Fim

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabi00     para postar seu código é melhor usar o botão <>

1797738485_barradeferramentas.JPG.0d5dc903452b40d4f1954f9a2e9db249.JPG

que está desenhado lá na barra de ferramentas da janela de postar , pois senão se você postar algum código que contenha vetor , seu código fica faltando alguns caracteres como os  [ i ] , que somem do seu código .

           e ele apresenta o resultado igual a zero por que você colocou para imprimir um float , mas usou uma variável int ,  então tem duas opções : a primeira é usar variáveis do tipo float , e a segunda  opção é converter o resultado int para float usando hum cast , então seu código com algumas modificações poderia ser assim   :

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <locale.h> /* string que irá corresponder a uma localidade e será    */
                    /* atribuída a uma categoria                              */
#define TOTAL 6     /* Função pré-processador que define constantes, as quais */
                    /* ficam gravadas na memória comando_valor_da_const       */
int letras[8][5] ={{15,16,14, 1,30}, /* letra  S */
                   {14,17,31,17,17}, /* letra  A */
                   {14, 4, 4, 4,14}, /* letra  I */
                   {17,25,21,19,17}, /* letra  N */
                   {30,17,17,17,30}, /* letra  D */
                   {14,17,17,17,14}, /* letra  O */
                   { 0, 0, 0, 0, 0}, /* letra    */
                   { 1, 2, 4, 0,16}, /* letra  ! */
    };
void gotoxy_2(int x, int y){/*imprimir na linha e coluna desejada */
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main(){
    setlocale(LC_ALL, "Portuguese"); /* Acentuação específica representada pelo argumento categoria */
    int contSfem=0,contNmasc=0,t_mulheres=0,t_homens=0,
        contS=0,contN=0,sexo,i,resposta;
    for(i=0; i<TOTAL; i++){ /*Laço de repetição ---> aqui é costume começar de zero                 */
        do{
            printf("Você gostou do produto? Digite 1 para SIM ou 2 para NÃO : "); /* Imprime na tela*/
            scanf("%d",&resposta);                        /* leitura de variável                    */
        }while(resposta != 1 && resposta != 2);
        do{
            printf("Digite seu sexo (1 - M | 2- F) : ");  /* Imprime na tela                        */
            scanf("%d", &sexo);                           /* leitura de variável                    */
        }while(sexo != 1 && sexo != 2);
        if(resposta == 1){                                /* Resposta Sim                           */
            contS++;
            if(sexo == 2){                                /* Sim Feminino                           */
                t_mulheres++;
                contSfem++;
            }
            else
                t_homens++;                               /* Sim Masculino                          */
        }
        else{                                             /* Resposta Não                           */
            contN++;
            if(sexo==1){
                contNmasc++;                              /* Não Masculino                          */
                t_homens++;
            }
            else
                t_mulheres++;                             /* Não FFememinino                        */
        }
    }
    printf("\n");

    printf("Total de pessoas que  gostaram -----------------: %d\n", contS);
    printf("Total de pessoas que não gostaram --------------: %d\n", contN);
    printf("Percentual de mulheres que responderam sim -----: %.2f por cento\n",
                                            (float)contSfem * 100 / t_mulheres);
    if(contNmasc != 0)/* a lingugem c não consegue dividir zero por nenhum outro número */
        printf("Percentual de homens que responderam não -------: %.2f por cento\n",
                                                 (float)contNmasc * 100 / t_homens);
    else
        printf("Percentual de homens que responderam não -------: 0 por cento\n"  );

    system("pause");
    gotoxy_2(0,50);
    gotoxy_2(0,15);
    int y1=23,x1=20,y2=y1,x2=x1,j,a,b;    /*y1=linha inicial  y2 para recuperar a linha inicial*/
    for(i=0;i<8;i++){                     /*  sao 8 letras                                     */
        for(j=0;j<5;j++){                 /*o caractere é de 5 linhas                          */
            x1 = x2;                      /*coluna de inicio do caractere                      */
            a=letras[i][j];               /*pega o numero da 1 linha do caractere              */
            for(b=0;b<5;b++){             /*aqui eh um numero de apenas 8 bits                 */
                gotoxy_2(x1,y1);          /*posiciona o cursor nas coordenadas determinadas por x1 y1 */
                if(a % 2 != 0){           /*se bit zero da variável a igual 1                  */
                    printf("%c",219);     /*coloca espaço invertido                            */
                }
                else{                     /*senão então bit zero igual a zero                  */
                    printf(" ");          /*coloca espaço normal                               */
                }
                a=a/2;                    /*dividindo numero por 2 desloca os bits para direita*/
                x1--;                     /*retrocede uma coluna apontando a próxima impressão */
                Sleep(10);                /*dorme um pouquinho                                 */
            }
            y1++;                   /*muda para proxima linha                                  */
            x1=x2;                  /*volta para a coluna inicial                              */
        }                           /*proxima linha                                            */
        x2=x2+6;                    /*avança 6 colunas posicionando para o prox caract         */
        y1=y2;                      /*volta para linha inicial                                 */
    }
    printf("\n\n\n\a");
    return 0;
}

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!