Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Pereira16

Alguém pode me ajudar com a linguagem C ?

Recommended Posts

Tenho uma pequena ideia como faz o programa mais estou meio perdido.

Foi feita uma pesquisa de audiência de TV em varias casas de uma certa cidade, num determinado dia. Para cada casa visitada, o entrevistador ( munido de um "notebook") escolhia num menu qual o canal que estava sendo assistido (SBT, Globo, Record, Bandeirantes ) e o numero de pessoas que estavam assistindo TV. se o TV estivesse deligado, nada era anotado, ou seja, esta casa não entrava na pesquisa. Implementar uma versão do algoritmo que o entrevistador está usando no seu " notebook" , que :

* Leia um numero indeterminado de dados, terminando quando o entrevistador escolher a opção FIM;

* calcule e escreva a percentagem de audiência para cada emissora ;

Ficarei muito agradecido de quem me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente você tem que fazer um loop (while), dizendo enquanto você não digitar "fim", e dentro desse loop fazer um switch ou vários if-else if indicando as emissoras e somando 1 a cada iteração.

Depois do loop, é só ver quantos você tem no total e qual a percentagem de cada um e imprimir na tela.

Mamão com açúcar =) Poste aqui o que você conseguiu com essas "dicas" e a gente te ajuda no que precisar!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Basicamente você tem que fazer um loop (while), dizendo enquanto você não digitar "fim", e dentro desse loop fazer um switch ou vários if-else if indicando as emissoras e somando 1 a cada iteração.

    Depois do loop, é só ver quantos você tem no total e qual a percentagem de cada um e imprimir na tela.

    Mamão com açúcar =) Poste aqui o que você conseguiu com essas "dicas" e a gente te ajuda no que precisar!

    Ate ai eu tenho uma noção de como fazer.

    o que eu não entendi foi percentagem de cada um).

    Muito obrigado por estar me ajudando.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Por exemplo, você pode fazer várias variáveis "float globo = 0", "float sbt = 0", "float record = 0", etc.... e durante o seu programa você vai ir somando +1 onde a TV estiver ligada, certo?

    Daí depois dessa fase do loop, se você somar as variáveis globo+sbt+record+etc... você vai obter o total, pode até fazer uma variável "float total = globo + sbt + record + ....".

    Para tirar a porcentagem da Globo, basta dividir a variável "globo" (ou seja, quantas TVs estão na Globo) pela variável "total" (ou seja, o total de TVs ligadas), e fazer isso pra cada emissora. Como já estarão todas como tipo "float" não vai dar problema.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Por exemplo, você pode fazer várias variáveis "float globo = 0", "float sbt = 0", "float record = 0", etc.... e durante o seu programa você vai ir somando +1 onde a TV estiver ligada, certo?

    Daí depois dessa fase do loop, se você somar as variáveis globo+sbt+record+etc... você vai obter o total, pode até fazer uma variável "float total = globo + sbt + record + ....".

    Para tirar a porcentagem da Globo, basta dividir a variável "globo" (ou seja, quantas TVs estão na Globo) pela variável "total" (ou seja, o total de TVs ligadas), e fazer isso pra cada emissora. Como já estarão todas como tipo "float" não vai dar problema.

    Beleza vou tentar aqui

    valeu

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Para tirar a porcentagem da Globo, basta dividir a variável "globo" (ou seja, quantas TVs estão na Globo) pela variável "total" (ou seja, o total de TVs ligadas), e fazer isso pra cada emissora. Como já estarão todas como tipo "float" não vai dar problema.

    Faltou multiplicar por 100.

    -

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Isso mesmo que o Shara falou!

    Ao dividir, por exemplo 3 TV's na Globo por 10 TV's ligadas no total, 3/10 = 0,3. Multiplica por 100 e você terá a porcentagem desejada, 30%.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Amigo estou aprendendo também a linguagem C "C++", resolvi tentar fazer o programa que voce falou... quebrei a cabeça mas consegui "eu acho rsrs"...

    Código:

    #include<iostream>
    #include<cstdlib>

    using namespace std;

    float globo=0, sbt=0, record=0, bandeirantes=0;
    float ag, agt, as, ast, ar, art, ab, abt, totalpes;
    int opcao;
    //char sair [4];

    int main (void){

    while(opcao!=5||opcao!=5){

    cout << " PESQUISA DE AUDIENCIA!" << endl << endl;
    cout << "ESCOLHA A EMISSORA PARA INICIAR A PESQUISA" << endl << endl;
    cout << "1. GLOBO | 2. SBT | 3. RECORD | 4. BANDERANTES | 5. FIM" << endl << endl;
    cout << "OPCAO> " << ends;
    cin >> opcao;
    cin.ignore();
    system("cls");

    if(opcao==1||opcao==2||opcao==3||opcao==4||opcao==5){

    switch(opcao){
    case 1:
    system("cls");
    globo++;
    cout << "REGISTRO DE AUDIENCIA - REDE GLOBO" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ag;
    cin.ignore();
    agt=agt+ag;
    system("cls");
    break;

    case 2:
    system("cls");
    sbt++;
    cout << "REGISTRO DE AUDIENCIA - REDE SBT" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> as;
    cin.ignore();
    ast=ast+as;
    system("cls");
    break;

    case 3:
    system("cls");
    record++;
    cout << "REGISTRO DE AUDIENCIA - REDE RECORD" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ar;
    cin.ignore();
    art=art+ar;
    system("cls");
    break;

    case 4:
    system("cls");
    bandeirantes++;
    cout << "REGISTRO DE AUDIENCIA - REDE BANDEIRANTES" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ab;
    cin.ignore();
    abt=abt+ab;
    system("cls");
    break;
    }
    }
    }
    totalpes= globo+sbt+record+bandeirantes;
    cout << " TOTAL DE RESIDENCIAS PESQUISADAS: " << totalpes <<endl<<endl<<endl;
    cout << "A GLOBO ATINGIU: " <<(globo/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "O SBT ATINGIU: "<<(sbt/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A RECORD ATINGIU: "<<(record/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A BANDEIRANTES ATINGIU: "<<(bandeirantes/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    system("pause");
    return EXIT_SUCCESS;
    }

    o conceito é basicamente o mesmo, espero que te ajude!

    eu utilizei o while e o um switch ao invés do if e else!

    Ahh... se você souber ou alguém como implementar uma maneira do programa aceitar somente numero rejeitando assim as letras... por favor passa uma demonstração ou explicacao mesmo!

    Editado por Ericsson Berg

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Dá para fazer uma classe de leitura do teclado que lê como string e retorna o número se for válido...

    É bem simples.

    Basta ler uma string, verificar se os caracteres descrevem um número válido, criar um objeto de stream de string cujo construtor recebe a string lida e jogar para uma variável do tipo desejado e retornar.

    Ainda dá pra fazer seu código menor, se você notar, muitas impressões começam do mesmo jeito, então isso poderia ser impresso separado.

    Sem falar no tanto de variáveis diferentes que você usou para as leituras quando uma variável apenas basta...

    E como você sempre lê a mesma coisa, poderia ser uma leitura para todos. Mas talvez fossem necessários 2 switchs... Enfim.

    -

    Editado por SharaMoustache

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Nossa muito bom

    eu to começando agora estou meio perdido em entender os exercícios de estrutura de repetição.

    Vou ver o código tentar entender ele melhor ficou muito doido mais muito mesmo.

    Muito obrigado.

    Estou usando dois livros: Fundamentos da programação de computadores e treinamento em C. Esses dois livros são bons ?

    Qual seria o melhor livro pra estudar ?

    Amigo estou aprendendo também a linguagem C "C++", resolvi tentar fazer o programa que voce falou... quebrei a cabeça mas consegui "eu acho rsrs"...

    Código:

    #include<iostream>
    #include<cstdlib>

    using namespace std;

    float globo=0, sbt=0, record=0, bandeirantes=0;
    float ag, agt, as, ast, ar, art, ab, abt, totalpes;
    int opcao;
    //char sair [4];

    int main (void){

    while(opcao!=5||opcao!=5){

    cout << " PESQUISA DE AUDIENCIA!" << endl << endl;
    cout << "ESCOLHA A EMISSORA PARA INICIAR A PESQUISA" << endl << endl;
    cout << "1. GLOBO | 2. SBT | 3. RECORD | 4. BANDERANTES | 5. FIM" << endl << endl;
    cout << "OPCAO> " << ends;
    cin >> opcao;
    cin.ignore();
    system("cls");

    if(opcao==1||opcao==2||opcao==3||opcao==4||opcao==5){

    switch(opcao){
    case 1:
    system("cls");
    globo++;
    cout << "REGISTRO DE AUDIENCIA - REDE GLOBO" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ag;
    cin.ignore();
    agt=agt+ag;
    system("cls");
    break;

    case 2:
    system("cls");
    sbt++;
    cout << "REGISTRO DE AUDIENCIA - REDE SBT" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> as;
    cin.ignore();
    ast=ast+as;
    system("cls");
    break;

    case 3:
    system("cls");
    record++;
    cout << "REGISTRO DE AUDIENCIA - REDE RECORD" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ar;
    cin.ignore();
    art=art+ar;
    system("cls");
    break;

    case 4:
    system("cls");
    bandeirantes++;
    cout << "REGISTRO DE AUDIENCIA - REDE BANDEIRANTES" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> ab;
    cin.ignore();
    abt=abt+ab;
    system("cls");
    break;
    }
    }
    }
    totalpes= globo+sbt+record+bandeirantes;
    cout << " TOTAL DE RESIDENCIAS PESQUISADAS: " << totalpes <<endl<<endl<<endl;
    cout << "A GLOBO ATINGIU: " <<(globo/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "O SBT ATINGIU: "<<(sbt/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A RECORD ATINGIU: "<<(record/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A BANDEIRANTES ATINGIU: "<<(bandeirantes/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    system("pause");
    return EXIT_SUCCESS;
    }

    o conceito é basicamente o mesmo, espero que te ajude!

    eu utilizei o while e o um switch ao invés do if e else!

    Ahh... se você souber ou alguém como implementar uma maneira do programa aceitar somente numero rejeitando assim as letras... por favor passa uma demonstração ou explicacao mesmo!

    Ainda eu não sei.

    Se não for pedir muito sera que tem como você me informa as variavas:

    ag, agt, as, ast, ar, art, ab, abt.

    Assim eu consigo entender o programa

    Muito bom você tem futuro.

    Editado por Pereira16

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    #include<iostream>
    #include<cstdlib>

    using namespace std;

    float globo=0, sbt=0, record=0, bandeirantes=0;
    float agt, ast, art, abt, r1, totalpes;

    int opcao;

    int main (void){

    while(opcao!=5||opcao!=5){

    cout << "\t\tPESQUISA DE AUDIENCIA!" << endl << endl;
    cout << "ESCOLHA A EMISSORA PARA INICIAR A PESQUISA" << endl << endl;
    cout << "1. GLOBO | 2. SBT | 3. RECORD | 4. BANDERANTES | 5. FIM" << endl << endl;
    cout << "OPCAO> " << ends;
    cin >> opcao;
    cin.ignore();

    if(opcao==1||opcao==2||opcao==3||opcao==4||opcao==5){

    switch(opcao){
    case 1:
    system("cls");
    globo++;
    cout << "REGISTRO DE AUDIENCIA - REDE GLOBO" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> r1;
    cin.ignore();
    system("cls");
    break;

    case 2:
    system("cls");
    sbt++;
    cout << "REGISTRO DE AUDIENCIA - REDE SBT" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> r1;
    cin.ignore();
    system("cls");
    break;

    case 3:
    system("cls");
    record++;
    cout << "REGISTRO DE AUDIENCIA - REDE RECORD" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> r1;
    cin.ignore();
    system("cls");
    break;

    case 4:
    system("cls");
    bandeirantes++;
    cout << "REGISTRO DE AUDIENCIA - REDE BANDEIRANTES" << endl<< endl;
    cout << "INFORME QUANTAS PESSOAS: " << ends;
    cin >> r1;
    cin.ignore();
    system("cls");
    break;
    }
    }
    }
    system("cls");
    totalpes= globo+sbt+record+bandeirantes;
    cout << " TOTAL DE RESIDENCIAS PESQUISADAS: " << totalpes <<endl<<endl<<endl;
    cout << "A GLOBO ATINGIU: " <<(globo/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "O SBT ATINGIU: "<<(sbt/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A RECORD ATINGIU: "<<(record/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    cout << "A BANDEIRANTES ATINGIU: "<<(bandeirantes/totalpes)*100 << "% NA PESQUISA DA AUDIENCIA!" <<endl;
    system("pause");
    return EXIT_SUCCESS;
    }

    Bom, seguindo o comentário SharaMoustache tentei enxugar um pouco mais o código, proém não consegui fazer o filtro por comparacao de string "Se alguém poder nos ajudar!!!".

    Com relação as variáveis reduzi para r1= resposta e (agt, ast, art, abt) audiência "emissora" total... as demais dá para entender!

    E quanto aos livros não vou saber te ajudar, mas estou começando a ler C/C++ a biblia. Caso você tenha algum ai voltado par a C++, me passa por favor!

    Falou.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Vou dar de exemplo uma classe que fiz para um projeto de aula:

    leitura.h:

    #ifndef LEITURA_H
    #define LEITURA_H

    #include <string>
    #include <stdexcept>

    using namespace std;

    //! Classe para prover interação com o teclado
    class Leitor
    {
    private:
    static const int PRIMEIRO_CARACTERE = 0;
    static const int CARACTERE_MENOS = '-';
    static const int TAM_MIN = 2;
    int strToInt(const string&);
    void verifica(const string&) throw(domain_error);
    public:
    /*!
    \return número inteiro
    */
    int getInt(void);

    /*!
    \return uma string
    */
    string getString(void);
    };

    #endif

    leitura.cpp

    #include <sstream>
    #include <iostream>
    #include <cctype>
    #include <stdexcept>
    #include "leitura.h"
    #include "constantes.h"

    using namespace std;

    int Leitor::strToInt(const string& entrada)
    {
    int saida;

    verifica(entrada);

    istringstream iss(entrada);
    iss>> std::dec >>saida;

    return saida;
    }

    int Leitor::getInt(void)
    {
    return strToInt(getString());
    }

    string Leitor::getString(void)
    {
    string ler;

    getline(cin,ler,'\n');

    return ler;
    }
    void Leitor::verifica(const string& teste) throw(domain_error)
    {
    if( !isdigit(teste.at(PRIMEIRO_CARACTERE)) && (teste.at(PRIMEIRO_CARACTERE) != CARACTERE_MENOS) )
    {
    throw( domain_error( LTR_NAO_NUM ) );
    }

    if( teste.length() >= TAM_MIN )
    {
    for(unsigned int i=1;i<teste.length();i++)
    {
    if( !isdigit(teste.at(i)) )
    {
    throw( domain_error( LTR_NAO_NUM ) );
    }
    }
    }
    }

    -

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Pow entendi boa parte do código mas com meus conhecimentos atuais não tem a mínima possibilidade de criar este código....

    Vou estudar maiss e um dia chego lá!!!

    valeu SharaMoustache!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Diego, espero que ajude. O codigo está em C, não C++. Veja se entende tudo!


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

    void main()
    {
    float globo=0, sbt=0, record=0, band=0;
    float total=0;
    char texto[5]="";


    do
    {
    strcpy(texto, "");
    printf("Entre com o valor correspondente a emissora, ou 'fim' para sair:\n\t1 - Globo\n\t2 - SBT\n\t3 - Record\n\t4 - Bandeirantes\n\t5 - TV desligada\n");
    scanf("%s", texto);

    if (strcmp(texto,"1") == 0)
    globo++;
    else if (strcmp(texto,"2") == 0)
    sbt++;
    else if (strcmp(texto,"3") == 0)
    record++;
    else if (strcmp(texto,"4") == 0)
    band++;
    }
    while(strcmp(texto,"fim") != 0);

    total = globo + sbt + record + band;

    printf("O total de audiencia foi:\n\tGlobo: %.1f%%\n\tSBT: %.1f%%\n\tRecord: %.1f%%\n\tBandeirantes: %.1f%%\n\n", (globo/total)*100, (sbt/total)*100, (record/total)*100, (band/total)*100);

    system("pause");
    }

    Editado por fabriciocarraro

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Muito obrigado a todos conseguir entender

    me ajudou muito

    ficou assim :

    #include<iostream>

    #include<cstdlib>

    using namespace std;

    float globo=0, sbt=0, record=0, bandeirantes=0;

    float asg, ass, asb, asr, qnt_pessoas=0;

    int opcao; // Variável tipo inteiro

    int main (void)

    {

    while(opcao != 5)

    {

    printf(" PESQUISA DE AUDIENCIA!\n\n");

    printf("ESCOLHA A EMISSORA PARA INICIAR A PESQUISA\n\n");

    printf("1. GLOBO | 2. SBT | 3. RECORD | 4. BANDERANTES | 5. FIM");

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

    scanf("%d", &opcao);

    system("cls"); // Limpar tela

    if(opcao != 0 && (opcao == 1 || opcao == 2|| opcao == 3|| opcao == 4))

    {

    printf("\nINFORME QUANTAS PESSOAS estão ASSISTINDO: ");

    scanf("%f", &qnt_pessoas);

    }

    switch(opcao){

    case 1:

    system("cls");

    globo++;

    printf("REGISTRO DE AUDIENCIA - REDE GLOBO\n\n");

    globo = qnt_pessoas;

    system("cls");

    break;

    case 2:

    system("cls");

    sbt++;

    printf("REGISTRO DE AUDIENCIA - REDE SBT\n\n");

    sbt = qnt_pessoas;

    system("cls");

    break;

    case 3:

    system("cls");

    record++;

    printf("REGISTRO DE AUDIENCIA - REDE RECORD\n\n");

    record = qnt_pessoas;

    system("cls");

    break;

    case 4:

    system("cls");

    bandeirantes++;

    printf("REGISTRO DE AUDIENCIA - REDE BANDEIRANTES\n\n");

    bandeirantes = qnt_pessoas;

    system("cls");

    break;

    }

    }

    qnt_pessoas = globo + sbt + record + bandeirantes;

    printf("TOTAL DE RESIDENCIAS PESQUISADAS: %f", qnt_pessoas);

    printf("\n\n\nA GLOBO ATINGIU: %.2f %% NA PESQUISA DA AUDIENCIA!\n\n",(globo/qnt_pessoas)*100);

    printf("\nO SBT ATINGIU: %.2f %% NA PESQUISA DA AUDIENCIA!\n\n\n",(sbt/qnt_pessoas)*100);

    printf("\nA RECORD ATINGIU: %.2f %% NA PESQUISA DA AUDIENCIA!\n\n\n",(record/qnt_pessoas)*100);

    printf("\nA BANDEIRANTES ATINGIU: %.2f %% NA PESQUISA DA AUDIENCIA!\n\n\n",(bandeirantes/qnt_pessoas)*100);

    system("pause");

    return EXIT_SUCCESS;

    }

    Editado por Pereira16

    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

    Entre para seguir isso  





    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

    ×