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;
}
Alguem me ajudar urgente...
ResponderExcluirFaç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.
Segue o Programa Fabrício.
Excluirpublic 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.
Segue o Programa Fabrício.
ResponderExcluirpublic 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.
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.
ResponderExcluirGostaria que me desse umas dicas.
alguem poderia me ajudar no problema abaixo:
ResponderExcluirUse 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.
me ajuda com esse aqui tb :
ResponderExcluir11.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.