Ir ao conteúdo
  • Cadastre-se

C No que estou errando?


Posts recomendados

Espectadores de cinema responderam a um questionário no qual constava sua idade e opinião (validar
ambos) em relação ao filme:
• Ótimo corresponde ao número 3,
• Bom corresponde ao número 2,
• Regular corresponde ao número 1.
Faça um programa que receba a idade e a opinião de quantidade indeterminada de espectadores (idade ou opinião
igual a zero encerra) e que mostre:
a) A média das idades das pessoas que responderam ótimo;
b) A quantidade de pessoas que respondeu regular ou bom.
c) A porcentagem de pessoas que responderam bom ou ótimo
 

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

int main()
{
    int  idade, opiniao, soma=0;
    int op1=0, op2=0, op3=0, contVotos=0, contVot=0;
    float mediaOtimo, percBom, contador=0;

    printf ("** Pesquisa de opiniao **\n");
    printf ("\n");
    printf ("\t[1] REGULAR\n");
    printf ("\t[2] BOM E REGULAR \n");
    printf ("\t[3] OTIMO\n");
    printf ("\t[0] DIGITE ZERO PARA IDADE E PARA OPINIAO PARA SAIR\n");

    while (idade!=0 || opiniao!=0)
    {
        printf ("\nIdade: ");
        scanf ("%d", &idade);
        printf ("\nOpiniao: ");
        scanf ("%d", &opiniao);
        printf ("\n");

        if(opiniao==1)
        {
            printf("\nVOCE OPINOU POR REGULAR");
            printf ("\n");
            op1 = op1 + 1;
        }
        else if(opiniao==2)
        {
            printf("\nVOCE OPINOU BOM E REGULAR");
            printf ("\n");
            op2 = op2 + 1;
        }
        else if(opiniao==3)
        {
            printf("\nVOCE OPINOU POR OTIMO\n");
            printf ("\n");
            op3 = op3 + 1;
            soma= idade+soma;
        }
        else if (opiniao==0)
        {
           printf("\nVOCE SAIU DO PROGRAMA");
           printf ("\n");
        }
        else{
            printf("\nOPCAO INVALIDA!!!");
            printf ("\n");
        }

        ///Contagem dos votos
        contador = op1+op2+op3;

        ///Contagem dos votos REGULAR E BOM
        contVotos = op1+op2;

        ///Contagem dos votos BOM E ÓTIMO
        contVot= op2+op3;

        }


    /* Media das idades das pessoas que responderam otimo */
    mediaOtimo = (float) soma / contador;

    /* Percentagem das pessoas que responderam BOM OU OTÍMO  entre todos os espectadores analisados */
    percBom = ((float)contVot/ contVot) * 100;

    printf ("\nA media das idades das pessoas que responderam otimo..: %.2f", mediaOtimo);
    printf ("\nA quantidade de pessoas que respondeu regular ou bom..: %d", contVotos);
    printf ("\nA percentagem de pessoas que respondeu bom ou otimo entre todos os espectadores analisados..: %.2f", percBom);

    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

um printf() que imprime seis linhas é bem mais esperto que 6 printf() que imprimem uma linha cada um.

 

Como não tem nenhuma variável um puts() é muito melhor.

 

TESTE SEMPRE o retorno de scanf(). É ingêuo seguir sem testar

 

use nomes mais expressivos. op1 op2 e op3?

 

2 horas atrás, Gabriella Guedes disse:
while (idade!=0 || opiniao!=0)

 

está começando sem inicializar esses valores.

 

Não leu os avisos do compilador?

 

 

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!