quarta-feira, 9 de março de 2016

Programação de computadores - 09 de Março de 2016

Programação de computadores - 09 de Março de 2016

Correção do exercício da MegaSena (corrigido pela Professora Zirlene)

int main(){
   int g1,g2,g3,g4,g5,g6;
   int n1,n2,n3,n4,n5,n6;
   int cont,cont2, I;
   cont=0; cont2=0;
      //números sorteados
      cout<<"Informe os números sorteados"<<endl;
      cin>>g1;
      cin>>g2;
      cin>>g3;
      cin>>g4;
      cin>>g5;
      cin>>g6;
   for (i=1;i<=30;i++){
      cout<<"Informe os 6 números jogados"<<endl;
      cin>>n1;
      cin>>n2;
      cin>>n3;
      cin>>n4;
      cin>>n5;
      cin>>n6;
      // condicionais
      if ((n1==g1)||(n1==g2)||(n1==g3)||(n1==g4)||(n1==g5)||(n1==g6)){
         cont++;
      }
      if ((n2==g1)||(n2==g2)||(n2==g3)||(n2==g4)||(n2==g5)||(n2==g6)){
         cont++;
      }
      if ((n3==g1)||(n3==g2)||(n3==g3)||(n3==g4)||(n3==g5)||(n3=g6)){
         cont++;
      }
      if ((n4==g1)||(n4==g2)||(n4==g3)||(n4==g4)||(n4==g5)||(n4==g6)){
         cont++;
      }
      if ((n5==g1)||(n5==g2)||(n5==g3)||(n5==g4)||(n5=g5)||(n5==g6)){
         cont++;
      }
      if ((n6==g1)||(n6==g2)||(n6==g3)||(n6==g4)||(n6==g5)||(n6==g6)){
         cont++;
      }
      //verificando se houve ganhador
      if (cont==6){
         cout<<"Parabéns, você ganhou!"<<endl;
         cont2++;
      }
      else{
         cout<<"Você não ganhou"<<endl;
      }
      cont=0;
}// fim for


Exercício

A empresa xyz deseja um sistema que possa controlar as suas contas de telefone. Para tanto o sistema deverá atender as seguintes especificações.
O sistema deverá fazer a leitura do código do cliente, quantidade de minutos usados no mês, e o tipo de cliente. Considere tipo residencial e comercial.
O algoritmo deverá retornar:
  • [v] a) a conta de cada cliente. Considere que clientes residenciais pagam R$0,20 por minuto. Clientes comerciais pagam até 100 minutos R$0,30 por minuto; se exceder a 100 minutos pagará R$ 0,40 por minuto excedido.
  • [v] b) O percentual de clientes residenciais e comerciais. (Exibir fora do While)
  • [v] c) O código e conta do cliente residencial que pagou a maior e menor conta. (Exibir fora do While)
  • [v] d) A quantidade de clientes comerciais que excederam os minutos. (Exibir fora do While)
  • [v] e) A média da conta dos clientes comerciais. (Exibir fora do While)
Obs.: O algorítmo será encerrado quando for digitado -1 no código do cliente.
Utilize while.


Minha resolução (letras a, b, c, d e e prontas e testadas no Code Blocks)

//cabeçalho
#include <iostream> // para poder usar o cin (entrada) e cout (saída)
#include <cstdlib> // para poder incluir a função "system pause"
using namespace std; // para poder incluir o return 0

int main(){

//Declarando as variáveis
//variável para o código do cliente
int codigodocliente; //variável do tipo inteiro
//variável para a quantidade de minutos utilizados;
float quantdeminutos; //variável do tipo inteiro
// variável para o tipo de cliente - 1 para residencial e 2 para comercial
int tipodecliente; // variável do tipo inteiro
//variável para armazenar o valor da conta do cliente
float contadocliente; //variável do tipo real
//variável para contar o número de clientes residenciais
int residenciais;
//variável para contar o número de clientes comerciais
int comerciais;
//variável para contar o número total de clientes
int totaldeclientes;
//variável para armazenar o percentual de clientes residenciais
float percentualresidenciais; //variável do tipo real
//variável para armazenar o percentual de clientes comerciais
float percentualcomerciais; //variável do tipo real
//variável para armazenar o valor da maior conta de clientes residenciais
float valordamaiorcontaresidencial; //variável do tipo real
//variável para armazenar o valor da menor conta de clientes residenciais
float valordamenorcontaresidencial; //variável do tipo real
//variável para armazenar o código do cliente com a maior conta
int codigoclientemaiorconta; //variável do tipo inteiro
//variável para armazenar o código do cliente com a menor conta
int codigoclientemenorconta; //variável do tipo inteiro
//variável para armazenar a quantidade de clientes comerciais que excederam os minutos
int quantclientescomerciaisexcdereramminutos; //variável do tipo inteiro
//variável para armazenar o valor da total das contas dos clientes comerciais
float contascomerciais; //variável do tipo real
//variável para armazenar o valor da media das contas dos clientes comerciais
float mediacontascomerciais; //variável do tipo real
//variável para armazenar a quantidade de clientes comerciais
int quantclientescomerciais; //variável do tipo inteiro


//Zerando as variáveis
codigodocliente=0;
quantdeminutos=0;
tipodecliente=0;
residenciais=0;
comerciais=0;
totaldeclientes=0;
percentualresidenciais=0;
percentualcomerciais=0;
valordamaiorcontaresidencial=0;
valordamenorcontaresidencial=0;
codigoclientemaiorconta=0;
codigoclientemenorconta=0;
quantclientescomerciaisexcdereramminutos=0;
contascomerciais=0;
mediacontascomerciais=0;
quantclientescomerciais=0;


// Entradas
cout<<"Informe o codigo do cliente ou digite -1 para sair"<<endl; //solicita o codigo do cliente
cin>>codigodocliente; //recebe o codigo do cliente

//Início do while
while(codigodocliente!=-1){
   cout<<"Informe a quantidade de minutos utilizados pelo cliente"<<endl; //solicita a quantidade de minutos utilizados pelo cliente
   cin>>quantdeminutos; //recebe a quantidade de minutos utilizados pelo cliente

   cout<<"Informe o tipo de cliente: digite 1 para cliente residencial e 2 para cliente comercial"<<endl; //solicita o tipo do cliente: residencial ou comercial
   cin>>tipodecliente; //recebe o codigo do cliente

   //Verificação do tipo de cliente
   while((tipodecliente!=1)&&(tipodecliente!=2)){
      cout<<"Informe corretamento o tipo de cliente: digite 1 para cliente residencial e 2 para cliente comercial"<<endl;
      cin>>tipodecliente; //recebe o codigo do cliente
   }

   //Conta do cliente residencial
   if(tipodecliente==1){
      contadocliente=0.2*quantdeminutos;
   }

   //Conta do cliente comercial
   if(tipodecliente==2){
      if(quantdeminutos<=100){
         contadocliente=0.3*quantdeminutos;
      }
      if(quantdeminutos>100){
         contadocliente=((0.3*100)+(quantdeminutos-100)*0.4);
      }
   }

   //Contando os clientes
   //contando os clientes pelo tipo residencial
   if(tipodecliente==1){
      residenciais=residenciais+1; //incrementa 1
   }
   //contando os clientes pelo tipo comercial
   if(tipodecliente==2){
      comerciais=comerciais+1; //incrementa 1
   }
   //incrementando o total de clientes
   totaldeclientes++; //incrementa 1

   //Informa a conta do cliente na tela - resposta da letra a
   cout<<"A conta do cliente "<<codigodocliente<<" deu R$"<<contadocliente<<endl;

   //Comparando as contas dos clientes residenciais
   if(tipodecliente==1){
      if(contadocliente!=0){ //Contas com valor igual a zero são desconsideradas na comparação
        if(contadocliente>valordamaiorcontaresidencial){
            valordamaiorcontaresidencial=contadocliente;
            codigoclientemaiorconta=codigodocliente;
        }
        if(valordamenorcontaresidencial==0){
            valordamenorcontaresidencial=contadocliente;
            codigoclientemenorconta=codigodocliente;
        }
        else {
            if(contadocliente<valordamenorcontaresidencial){
                valordamenorcontaresidencial=contadocliente;
                codigoclientemenorconta=codigodocliente;
            }
        }
        }
      }


   //Quantidade de clientes comerciais que excederam 100 minutos
   if(tipodecliente==2){
      if(quantdeminutos>100){
         quantclientescomerciaisexcdereramminutos=quantclientescomerciaisexcdereramminutos+1;
      }
   }

   //Para calcular a média das contas dos clientes comerciais (letra e)
   if(tipodecliente==2){
      contascomerciais=contascomerciais+contadocliente;
      quantclientescomerciais=quantclientescomerciais+1;
   }

   //Preparando para o próximo cliente
   cout<<"Informe o codigo do cliente ou digite -1 para sair"<<endl; //solicita o codigo do cliente
   cin>>codigodocliente; //recebe o codigo do cliente
   contadocliente=0;

}//Fechamento do While principal

//Exibindo o percentual de clientes residenciais e comerciais - resposta da letra b
//calculando o percentual de clientes residenciais
percentualresidenciais=100*residenciais/totaldeclientes;
//calculando o percentual de clientes comerciais
percentualcomerciais=100*comerciais/totaldeclientes;
//Exibindo o percentual de clientes residenciais
cout<<"O percentual de clientes residenciais e: "<<percentualresidenciais<<"%."<<endl;
//Exibindo o percentual de clientes comerciais
cout<<"O percentual de clientes comerciais e: "<<percentualcomerciais<<"%."<<endl;

//Exibindo o código do cliente residencial que pagou a maior e a menor conta - resposta da letra c
//Exibindo o código do cliente residencial que pagou a maior conta
cout<<"Exibindo os codigos dos clientes residenciais com a menor e a maior conta. Nota: clientes com conta igual a zero nao sao registrados."<<endl;
cout<<"O codigo do cliente residencial com a maior conta e: "<<codigoclientemaiorconta<<"."<<endl;
//Exibindo o código do cliente residencial que pagou a menor conta
cout<<"O codigo do cliente residencial com a menor conta e: "<<codigoclientemenorconta<<"."<<endl;

//Exibindo a quantidade de clientes comerciais que excederam 100 minutos - resposta da letra d
cout<<"A quantidade de clientes comerciais que excederam 100 minutos e: "<<quantclientescomerciaisexcdereramminutos<<"."<<endl;

//Exibindo a media das contas dos clientes comerciais - resposta da letra e
mediacontascomerciais=contascomerciais/quantclientescomerciais;
cout<<"A media das contas dos clientes comerciais e R$ "<<mediacontascomerciais<<"."<<endl;

//teste
cout<<"dados para simples conferencia"<<endl;
cout<<"percentual comercial de clientes: "<<percentualcomerciais<<endl;
cout<<"percentual residencial de clientes: "<<percentualresidenciais<<endl;
cout<<"total de clientes: "<<totaldeclientes<<endl;
cout<<"clientes residenciais: "<<residenciais<<endl;
cout<<"clientes comerciais: "<<comerciais<<endl;


//finalizando o programa
system("pause");
return 0;
}//Fechamento do programa


Lucas T R Freitas

Nenhum comentário: