Ir ao conteúdo
  • Cadastre-se

Alguém pode me ajudar com a linguagem C ?


Pereira16

Posts recomendados

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

Link para o comentário
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!

Link para o comentário
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!

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.

Link para o comentário
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.

Link para o comentário
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.

Beleza vou tentar aqui

valeu

Link para o comentário
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.

-

Link para o comentário
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!

Link para o comentário
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.

-

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
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.

Link para o comentário
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 ) );
}
}
}
}

-

Link para o comentário
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");
}

Link para o comentário
Compartilhar em outros sites

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;

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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