Informática, perguntado por davi66henriquep7cqb8, 1 ano atrás

Um cinema possui capacidade de 100 lugares e está sempre com ocupação total. Certo dia, cada espectador respondeu a um questionário, no qual constava: - sua idade; - sua opinião em relação ao filme, segundo as seguintes notas: Nota Significado A Ótimo B Bom C Regular D Ruim E Péssimo. Elabore um algoritmo que, lendo estes dados, calcule e imprima:
- a quantidade de respostas ótimo;
 - a diferença percentual entre respostas bom e regular;
- a média de idade das pessoas que responderam ruim;
- a percentagem de respostas péssimo e a maior idade que utilizou esta opção;
- a diferença de idade entre a maior idade que respondeu ótimo e a maior idade que respondeu ruim.


em C++

Soluções para a tarefa

Respondido por KuroeJin
1
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cctype>

#define LIMPABUFFER while(getchar()!='\n');

using namespace std;

const int acentos=100;

int registro_idade(int idd[], int contador){
    if(contador<acentos){
        cout<<"Idade do cliente da poltrona "<<(contador+1)<<": ";
        cin>>idd[contador];
        LIMPABUFFER;
        if(idd[contador]<7) return registro_idade(idd, contador);
        return registro_idade(idd, contador+1); }    cout<<"\n====================================================="<<endl;
    return 0; }

bool opiniao_valida(char opiniao){
    switch(opiniao){
        case 'A':{ return true; }
        case 'B':{ return true; }
        case 'C':{ return true; }
        case 'D':{ return true; }
        case 'E':{return true; } }
    return false; }

int registro_opiniao(char opiniao[], int contador){
    if(contador<acentos){
        cout<<"Opiniao do cliente da poltrona "<<(contador+1)<<": ";
        cin>>opiniao[contador];
        opiniao[contador]=toupper(opiniao[contador]);
        LIMPABUFFER;
        if(!opiniao_valida(opiniao[contador])) return registro_opiniao(opiniao, contador);
        return registro_opiniao(opiniao, contador+1);}
    cout<<"\n======================================================="<<endl;
    return 0;}

int quantidade_opiniao_x(char opiniao[], char opiniaox, int contador, int total){
    if(contador<acentos){
        if(opiniao[contador]==opiniaox)
               return quantidade_opiniao_x(opiniao, opiniaox, contador+1, total+1);
        return quantidade_opiniao_x(opiniao, opiniaox, contador+1, total); }
    return total; }

int maior_idade_opiniao_x(int idd[], int maioridd, char opiniao[], int opiniaox, int contador){
    if(contador<acentos){
        if(opiniao[contador]==opiniaox){
            if(idd[contador]>maioridd){ return maior_idade_opiniao_x(idd, idd[contador], opiniao, opiniaox, contador+1);}
            return maior_idade_opiniao_x(idd, maioridd, opiniao, opiniaox, contador+1); }
        return maior_idade_opiniao_x(idd, maioridd, opiniao, opiniaox, contador+1);}
    return maioridd; }

double media_idade_opiniao_x(int idd[], int mediaidd, char opiniao[], int opiniaox, int contador, int total){
    if(contador<acentos){
        if(opiniao[contador]==opiniaox){
            return media_idade_opiniao_x(idd, mediaidd+idd[contador], opiniao, opiniaox, contador+1, total+1); }
        return media_idade_opiniao_x(idd, mediaidd, opiniao, opiniaox, contador+1, total);}
    return ((double)mediaidd/(double)total); }

double media_idade(int idd[], int mediaidd, int contador){
    if(contador<acentos) return media_idade(idd, mediaidd+idd[contador], contador+1);    return ((double)mediaidd/(double)acentos); }

int main(){
    int idd[acentos];
    char opiniao[acentos];
    registro_idade(idd, 0);
    registro_opiniao(opiniao, 0);

    cout<<"A quantidade de \"otimo\" e: "<<quantidade_opiniao_x(opiniao, 'A', 0, 0)<<endl;

    cout<<"A diferenca percentual entre \"bom\" e \"regular\" e: "<<( (quantidade_opiniao_x(opiniao, 'B', 0, 0)*100)/acentos )-( (quantidade_opiniao_x(opiniao, 'C', 0, 0)*100)/acentos )<<"%"<<endl;

    cout<<"A media da idade de pessoas que deram \"ruim\" e: "<<media_idade_opiniao_x(idd, 0, opiniao, 'D', 0, 0)<<endl;

    cout<<"A quantiade de pessoas que responderam \"pessimo\" e: "<<quantidade_opiniao_x(opiniao, 'E', 0, 0)<<", e a maior idade desta opcao e: "<<maior_idade_opiniao_x(idd, 0, opiniao, 'E', 0)<<endl;

    cout<<"A diferenca da maior idade quem respondeu \"otimo\" e da quem respondeu \"ruim\" e: "<<(maior_idade_opiniao_x(idd, 0, opiniao, 'A', 0)-maior_idade_opiniao_x(idd, 0, opiniao, 'D', 0))<<endl;

    getchar();

    return 0; }
Perguntas interessantes