sexta-feira, 6 de abril de 2012

Exercícios resolvidos C++ Lista 2

Códigos de Programas C++ Lista 2


Por Ariadne Costa Gomes

1.     Resolva todos os exercícios de auto revisão do capítulo 2 do livro, página 229.
2.    Resolva os seguintes exercícios(pág. 177): 2.14, 2.15, 2.16, 2.21, 2.24, 2.25, 2.26, 2.28, 2.32, 2.42, 2.52.
2.1) Responda cada uma das seguintes perguntas.
a) Todos os programas podem ser escritos em termos de três tipos de estruturas de controle: Sequência, Seleção e Repetição
b) A estrutura de seleção If-Else é usada para executar uma ação quando uma condição é true e outra ação quando a condição é false.
c) A repetição de um conjunto de instruções um número de vezes específico é chamada de repetição Controlada por contador ou definida.
d) Quando não é conhecido com antecedência quantas vezes um conjunto de
comandos será repetido, um valor Sentinela, sinal, flag ou dummy, pode ser usado para terminar a repetição.
2.2 Escreva quatro comandos de C++ diferentes, cada um somando i à variável inteira x.
1 – x+1;
2 – x+=1;
3 - ++x;
4 – x++.
2.3 Escreva comandos de C++ para implementar cada uma das seguintes
frases:
a) Atribua a soma de x e y a z e incremente o valor de x por 1 depois do cálculo. z= x++ + y;
b) Teste se o valor da variável counter é maior que 10. Se for, imprima “Counter é maior que 10.” If (count >10) cout<< “Counter eh maior que 10.
c) Decremente a variável x por 1 e então subtrai-a da variável total.        total -= --x;
d) Calcule o resto após q ser dividido por divisor e atribua o resultado a q.
Escreva estes comandos de dois modos diferentes.
Modo 1) q % = divisor;
Modo 2) q = q % divisor.
2.4 Escreva um comando de C++ para executar cada uma das seguintes
tarefas.
a) Declare as variáveis sum e x como do tipo int. int sum, x;
b) Inicialize a variável x com 1. x= 1;
c) Inicialize a variável sum com 0. sum = 0;
d) Some a variável x à variável sum e atribua o resultado à variável sum.
sum+= x; ou sum= sum +x;
e) Imprima “A soma é : “, seguido pelo valor da variável sum.
cout<< “A soma eh “ << sum;
2.5 Combine os comandos que você escreveu para o Exercício 2.4 em um
programa que calcula e imprime a soma dos inteiros de 1 até 10. Use a estrutura while para iterar através do cálculo e comandos de incremento. O laço deve terminar quando o valor de x se tornar 11.
#include <iostream.h>
using std::cout;

 int main () {
    int sum=0, x=1;
    cout<< “Programa que calcula a soma dos numeros de 1 a 10.”;
    cout<< “\n\n”;
    while ( x<= 10){
      sum+=x;
      ++x;
      }
      cout<< "A soma eh: " << sum;
      cout<<"\n\n";
     
 fflush(stdin);
 system ("pause");
 return 0;
 }
2.6 Determine os valores de cada variável depois de o cálculo ser executado. Assuma que, quando cada comando começa a ser executado, todas as variáveis têm o valor inteiro 5.
a) product * x++; product = 25 e x=6.
b) quotient 1= ++x; quociente = 0 e x=6.

CAPÍTULO 2 - ESTRUTURAS DE CONTROLE 173
2.7 Escreva comandos simples de C++ que façam o seguinte:
a) Receba como entrada a variável inteira x com cm e». cm>>x;
b) Receba como entrada a variável inteira y com cm e». cm>> y;
c) Inicialize a variável inteira i com 1. i= 1;
d) lnicialize a variável inteira power com 1. power = 1;
e) Multiplique a variável power por x e atribua o resultado a power.
power = power * x; ou power*=x;
f) Incremente a variável y por 1. y++;
g) Teste y para ver se ela é menor que ou igual a x. if (y<=x)
h) Exiba o valor da variável inteira power com cout e «. cout<<power;


2.8 Escreva um programa em C++ que usa os comandos do Exercício 2.7 para
calcular x elevado à potência y. O programa deve ter uma repetição controlada por uma estrutura while.
#include<iostream.h>

 int main ()
 {
     int x, y;
     cout << "Digite o valor (inteiro) da base: ";
     cin >> x;
     cout<<"Digite o valor (inteiro) do expoente:";
     cin >> y;
     pow (x,y); // funcao que calcula a exponenciacao. Neste caso, x elevado a y.
     cout << "\n"<<pow(x,y);
     cout<<"\n";
     while(y<=x) {
        ++y;
     }
     fflush(stdin);
     system ("pause");
     return 0;
}
2.9 Identifique e corrija os erros em cada um dos seguintes comandos:
a) while ( c <= 5 ) {
product = c;
++c; Faltou fechar } após o ++c;
b) cin « value; O operador << esta errado, deveria ser >>
c) if ( gender == 1
cout« “Mulher’ « endl;
else; Não pode ter ; depois de else, pois causa um erro de logica
cout« “Homem” « endi;
2.14) O que está errado com a seguinte estrutura de repetição while:
while ( z > O) {
   sum + z;
} Se z for maior do que zero este trecho de codigo causara um loop infinito. Para que não ocorra o loop infinito, em algum momento dentro do while a variavel z deve ser decrementada, para que chegue ao valor zero ou menor do que zero, saindo entao do laço de repetição.
2.11 Determine se as seguintes frases são verdadeiras ou falsas. Se a resposta for falsa, explique por quê.
a) O caso default é obrigatório na estrutura de seleção switch. Falsa. Ocaso default é opcional.
b) O comando break é exigido no caso default de uma estrutura de seleção
switch para sair da estrutura corretamente. Falsa, o comando break é utilizado para sair de uma estrutura switch. O comando break não é necessário quando default é o último caso.
c) A expressão (x>y && a<b)é true se a expressão x>y é true ou a expressão a<b é true. Falsa. Ambas as expressões relacionais devem ser true para que a expressão inteira possa ser true, quando se usa o operador &&.
d) Uma expressão contendo o operador 1 1 é true se pelo menos um, ou ambos, os seus operandos são true. Verdadeira.
2.12 Escreva um comando de C++, ou um conjunto de comandos de C++, para
executar cada um dos seguintes comandos:
a) Some os inteiros ímpares entre 1 e 99 usando uma estrutura for. Suponha
que as variáveis sum e count tenham sido declaradas como inteiras.
#include<iostream.h>

int main (){
    int sum=0, count;
    cout<<" PROGRAMA PARA SOMAR OS NUMEROS IMPARES DE 1 A 99:\n\\n";
    for ( count = 1; count <= 99; count += 2){
      sum += count;
      }
      cout<<"RESULTADO DA SOMA = " << sum;
      cout<< "\n";
      fflush(stdin);
      system ("pause");
      return 0;
}
b) Imprima o valor 333.546372 em um campo de comprimento de 15 caracteres com precisões de 1, 2, e 3. Imprima cada número na mesma linha. Alinhe cada número à esquerda em seu campo. Quais os três valores impressos?
Esta matéria não foi dada, pr tanto não tem como responder.
c) Calcule o valor de 2 . 5 elevado à potência 3 usando a função pow. Imprima o resultado com uma precisão de 2 em um campo de 10 posições de
comprimento. O que é impresso? Não foi dado precisao.
d) Imprima os inteiros de 1 até 20 usando um laço while e a variável contadora x. Assuma que a variável x foi declarada, mas não inicializada. Imprima somente 5 inteiros por linha. Sugestão: use o cálculo x % 5. Quando o valor deste é 0, imprima um caractere nova linha; caso contrário imprima um caractere de tabulação horizontal.
#include <iostream.h>
 int main(){
   int x=1;
   while ( x <= 20 ) {
  
   cout << x;
      if ( x % 5 == 0)
      cout <<"\n";
      else
      cout << "\t";
   x++;
   }
  
   system ("pause");
   return 0;
 }



c) Repita o Exercício 2.12 (d) usando uma estrutura for.
#include <iostream.h>
 int main(){
     int x;
     for (x= 1; x<=20; x++ ) {
     cout << x;
     if ( x % 5 == 0)
        cout <<"\n";
     else
        cout << "\t";
     }
     system ("pause");
     return 0;
}
2.13 Ache o(s) erro(s) em cada um dos segmentos de código seguintes e
explique como corrigi-lo(s).
a) x =1;
while ( x <= 10 );
x++; O ponto e virgula após o laço while causa um loop infinito. Para corrigir o problema basta substituir o ponto e virgula por chaves {}.
b) for (y =0.1; y<= 1.0; y+= 0.1)
cout « y; Não se pode usar numeros em ponto flutuante para controlar uma estrutura for.
c) switch ( n ) {
case 1:
cout « “O número é 1” ;
case 2:
cout « “O número é 2” ;break;
default:
cout « “O número não é 1 ou 2” ;
break; É bom usar o comando break no fim dos comando pertencentes ao primeiro case. Quando isso não é feito, os comandos do case 2 são executados toda vez que os comandos do case 1 forem executados.
d) O código seguinte deve imprimir os valores de 1 a 10.
n = 1;
while ( n < 10)
cout « n++; Neste caso, o numero 10 não vai imprimir, porque foi usado para números menores do que 10. Para que isso não ocorra, basta utilizar <=10 ou <11.

CAPÍTULO 2 - ESTRUTURAS DE CONTROLE 177
2.14 Identifique e corrija o(s) erro(s) em cada um dos seguintes comandos:
a) if (age >= 65);
cout « “Idade é maior que ou igual a 65”;
else
cout « “Idade é menor que 65 ”;
 Depois de if não pode ter ponto e vírgula.
b) if ( age >= 65
cout « “Idade é maior que ou igual a 65” « endi;
else;
cout « “Idade é menor que 65 « endl”;
Faltou fechar o parenteses na primeira linha do codigo e depois de else não tem ponto e vírgula.
c) int x = 1, total;
while ( x < 10 ) {
total + x; Na ultima linha d cogigo, faltou o sinal de = após o sinal de + e antes da variavel x.
d) While ( x <= 100)
total += x; A palavra while deve ser escrita em letra minuscula.
e) while ( y > O ) {
cout « y « endi;
++y; Faltou o correspondente de fechamento } na última linha do código.
2.15 O que é impresso pelo seguinte programa?
 #include <iostream.h>

int main ()
 {
 int y, x = 1, total = 0;

 while (x<10) {
 y=x*x;
 cout << y;
 total += y;

 }

 cout << “O total é “ << total ;
 return 0;
 } Com este código, este programa geraria um loop infinito com o numero 1. Isso acontece porque a variável x continua sendo menor do que 10 durante toda a execução do programa e este não possui um ponto de parada.

Para os Exercícios 2.16 a 2.19 execute cada um destes passos:
a) Leia a definição do problema.
b) Formule o algoritmo usando pseudocódigo e o refinamento top-down, passo a passo.
c) Escreva um programa em C++.
d) Teste, depure e execute o programa em C++.
2.16 Os motoristas estão preocupados com a quilometragem obtida por seus
automóveis. Um motorista fez um controle de vários tanques de gasolina gastos,anotando os quilômetros de rodagem obtidos por tanque. Desenvolva um programa em que recebe como entrada os quilômetros rodados e os litros gastos para cada tanque. O programa deve calcular e exibir os quilômetros por litro obtidos para cada tanque. Depois de processar todas as informações fornecidas, o programa deve calcular e imprimir os quilômetros por litro obtidos por todos os tanques combinados (média). Digite os litros usados (-1 para fim): 12.8
Digite os quilômetros dirigidos: 287
Os quilômetros/litro para este tanque foram 22.421875
Digite os litros usados (-1 para fim) : 10.3
Digite os quilômetros dirigidos: 200
Os quilômetros/litro para este tanque foram 19.417475
Digite os litros usados (-1 para fim): 5
Digite os quilômetros dirigidos: 120
Os quilômetros/litro para este tanque foram 24.000000
Digite os litros usados (-1 para fim) : -1
A média geral de quilômetros/litro foi 21.90
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

int main()
{
   int opcoes;
    float quilometros_rodados;
    float total_quilometros;
    float litros_gastos;
    float total_litros,media=0,total=0;

    total_quilometros = 0.0;
    total_litros = 0.0;
    cout <<fixed << setprecision(2);
   while ( opcoes != 0 )
   { system ("cls");
      cout << "Escolha sua opcao: " << endl;
      cout << " 1- Adicionar Dados" << endl;
      cout << " 0- Sair " << endl;
      cout << endl;
      cin >> opcoes;
      switch( opcoes )
      {
         case 1:
                  
            cout << "Entre com os quilometros: ";
            cout<< "\n";
            cin >> quilometros_rodados;
            total_quilometros+= quilometros_rodados;
            cout << "\nEntre com os litros: ";
            cout<< "\n";
            cin >> litros_gastos;
            total_litros+= litros_gastos;
            cout<<"Quilometros por litro para esse tanque: "<< quilometros_rodados/litros_gastos;
            cout<< "\n";
            total = total + quilometros_rodados/litros_gastos;
            media++; 
            cout<<"\n";    
            cout << "Numero de carros analisados: " << media;
            cout<< "\n";
            cout << "\nMedia de "<< media <<" carros: " << total/media;
            cout<< "\n";
            system ("pause");
       case 0:
        break;
      }
      
       }    
     
   getch();
        return 0;
}

6 comentários:

  1. Alguem me ajudar urgente...


    Faça um programa que receba a idade e o sexo de sete pessoas e que calcule e mostre:
    * a idade média do grupo;
    * a idade média das mulheres;
    * a idade média dos homens.

    ResponderExcluir
    Respostas
    1. Segue o Programa Fabrício.

      public class Pessoa{

      private int idade;
      private String sexo;

      public Pessoa(){
      idade = 0;
      sexo = null;}

      public void setIdade(int i){
      idade = i;}

      public void setSexo(String s){
      nome = s;}

      public int getNome(){
      return nome;}

      public String getSexo(){
      return sexo;}
      }

      public class PessoaAPP{

      private ArrayList array = new ArrayList();

      public void executar(){
      Console cons = new Console();
      Pessoa p = new Pessoa();

      system.out.println(##CADASTRO##);

      int z = 0;
      do{do{String s = cons.readLine("Qual o sexo da pessoa?");} while(s!="m" || s!="f");
      do{int i = cons.readInt("Qual a idade?");} while(i<0);
      z++;

      p.setNome(s);
      p.setIdade(i);

      array.add(p);}

      while(z<=7);

      system.out.println(PessoaAPP.getIdadeHomens());
      system.out.println(PessoaAPP.getIdadeMulheres());
      system.out.println((PessoaApp.getIdadeHomens()+Pes soaAPP.getIdadeMulheres())/2);
      }

      public double getIdadeHomens(){
      int resultado;
      for(Pessoa p: array){
      p.getSexo().equals("m"){
      resultado = resultado++;}}
      return resultado;}

      public double getIdadeMulheres(){
      int resultado;
      for(Pessoa p: array){
      p.getSexo().equals("f"){
      resultado = resultado++;}}
      return resultado;}

      }

      Ref:http://forum.clubedohardware.com.br.

      Excluir
  2. Segue o Programa Fabrício.

    public class Pessoa{

    private int idade;
    private String sexo;

    public Pessoa(){
    idade = 0;
    sexo = null;}

    public void setIdade(int i){
    idade = i;}

    public void setSexo(String s){
    nome = s;}

    public int getNome(){
    return nome;}

    public String getSexo(){
    return sexo;}
    }

    public class PessoaAPP{

    private ArrayList array = new ArrayList();

    public void executar(){
    Console cons = new Console();
    Pessoa p = new Pessoa();

    system.out.println(##CADASTRO##);

    int z = 0;
    do{do{String s = cons.readLine("Qual o sexo da pessoa?");} while(s!="m" || s!="f");
    do{int i = cons.readInt("Qual a idade?");} while(i<0);
    z++;

    p.setNome(s);
    p.setIdade(i);

    array.add(p);}

    while(z<=7);

    system.out.println(PessoaAPP.getIdadeHomens());
    system.out.println(PessoaAPP.getIdadeMulheres());
    system.out.println((PessoaApp.getIdadeHomens()+Pes soaAPP.getIdadeMulheres())/2);
    }

    public double getIdadeHomens(){
    int resultado;
    for(Pessoa p: array){
    p.getSexo().equals("m"){
    resultado = resultado++;}}
    return resultado;}

    public double getIdadeMulheres(){
    int resultado;
    for(Pessoa p: array){
    p.getSexo().equals("f"){
    resultado = resultado++;}}
    return resultado;}

    }

    Ref:http://forum.clubedohardware.com.br.

    ResponderExcluir
  3. Altere o código que percorre a lista e faça com que o código .imprima uma mensagem se o valor existe no nó é par.
    Gostaria que me desse umas dicas.

    ResponderExcluir
  4. alguem poderia me ajudar no problema abaixo:

    Use uma estrutura de repetição cujo número de vezes deverá estar presente no enunciado.
    1) Defina seu problema em uma frase, de forma objetiva e clara.
    2) Defina pelo menos dois vetores numéricos e uma matriz bidimensional do tipo char que receberão dados via teclado dentro da estrutura de repetição.
    3) Pelo menos uma operação matemática com um, ou dois vetores, deverá estar presente.
    4) Uma estrutura do if else também tem que estar presente em um dos trechos.
    5) O trecho de saída tem que ser INDEPENDENTE do trecho de entrada.

    ResponderExcluir
  5. me ajuda com esse aqui tb :
    11.Utilize o comando switch e o tipo ‘char’ para fazer um programa que
    calcula as áreas das seguintes figuras geométricas:
    ‘q’ - Área do quadrado.
    ‘r’ - Área do retângulo.
    ‘t’ - Área do triângulo.
    ‘p’ - Área trapézio.

    ResponderExcluir