Você está na página 1de 17

1. Resolva todos os exerccios de auto reviso do captulo 1 do livro, pgina 92. 2. Resolva os seguintes exerccios(pg. 94): 1.10, 1.

11, 1.12, 1.13(desconsidere a letra c), 1.17, 1.18, 1.19, 1.20, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.30, 1.31, 1.32. Exerccios de auto-reviso 1.1 Preencha os espaos em branco em cada uma das seguintes frases: a) A empresa que popularizou a computao pessoal foi Apple. b) O computador que tornou a computao pessoal vivel nos negcios e na indstria foi o IBM Personal Computer. c) Computadores processam dados sob o controle de conjuntos de instrues chamados de programas do computador. d) As seis unidades lgicas principais do computador so unidade de entrada, unidade de sada, unidade de memria, unidade aritmtica e lgica, unidade central de processamento, unidade secundria de armazenamento e) As trs classes de linguagens discutidas no captulo so, linguagens de mquina, linguagens simblicas, linguagens de auto nvel. f) Os programas que traduzem programas em linguagem de alto nvel para a linguagem de mquina so chamados de compiladores. g) C amplamente conhecida como a linguagem de desenvolvimento do sistema operacional UNIX. h) A linguagem foi desenvolvida por Wirth para o ensino da programao estruturada nas universidades foi o Pascal. i) O Departamento de Defesa dos EUA desenvolveu a linguagem Ada com um recurso chamado multitasking o qual permite que os programadores especifiquem que muitas atividades possam ocorrer em paralelo. 1.2 Preencha os espaos em branco em cada uma das sentenas seguintes sobre o ambiente C++. a) Programas em C++ so normalmente digitados em um computador usando um programa editor. b) Em um sistema C++, um programa pr-processador executado antes de a fase de traduo do compilador comear. c) O programa editor de ligao combina a sada do compilador com vrias funes de biblioteca para produzir uma imagem executvel. d) O programa carregador(loader) transfere a imagem executvel de um programa em C++ do disco para a memria. 1.3 Preencha os espaos em branco em cada uma das seguintes frases. a) Todo programa em C++ comea sua execuo na funo main. b) A chave a esquerda({) comea o corpo de toda funo e a chave a direita(}) termina o corpo de toda funo. c) Todo comando termina com ponto e vrgula. d) A seqncia de escape \n representa o caractere nova linha, que

faz com que o cursor se posicione no incio da prxima linha na tela. e) O comando IF usado para tomar decises. 1.4 Diga se cada uma das seguintes frases verdadeiro ou falsa. Se for falsa, explique por qu. Suponha que o comando using std: :cout; usado.
.

a) Comentrios fazem o computador imprimir o texto depois do / / na tela quando o programa executado. Falso. Os comentrios no fazem qualquer ao ser executada durante a execuo do programa. Eles so usados para documentar programas e melhorar sua legibilidade. b) A seqncia de escape \n, quando transferida para a sada com cout, faz com que o cursor se posione no incio da prxima linha da tela. Verdadeiro. c) Todas as variveis devem ser declaradas antes de serem usadas. Verdadeiro. d) Todas as variveis devem receber um tipo quando so declaradas. Verdadeiro. e) C++ considera as variveis nunber e NuNbEr idnticas. Falso. C++ case sensitive, ou seja, sensvel a letras maisculas e minsculas. f) Declaraes podem aparecer quase em qualquer lugar no corpo de uma funo em C++. Verdadeiro. g) O operador mdulo (%) pode ser usado s com operandos inteiros. Verdadeiro. h) Os operadores aritmticos *, 1, %, + e - tm todos o mesmo nvel de precedncia. Falso. Os operadores / e % tem a mesma precedncia e os operadores + e tm uma precedncia mais baixa. i) Um programa em C++ que imprime trs linhas na sada deve conter trs comandos de sada usando cout. Falso. Um nico comando de sada usando cout, contendo sequncias de escape mltiplas, pode imprimir vrias linhas. 1.5 Escreva um nico comando em C++ para realizar cada uma das seguintes frases (Suponha que no foram usados comandos using): a) Declare as variveis c, thislsAVariable, q76354 e number como sendo do tipo int. int c, thislsAVariable, q76534, number; b) Solicite ao usurio que fornea um inteiro. Termine sua mensagem de solicitao com um sinal de dois pontos (:) seguido por um espao e deixe o cursor posicionado depois do espao. cout<< Digite um numero inteiro:; c) Leia um inteiro fornecido pelo usurio atravs do teclado e armazene o valor fornecido em uma varivel de tipo inteiro chamada age. cin>> age; d) Se a varivel number no for igual a 7, imprima O nmero na varivel no igual 7. IF (number!=7) cout<<O numero da varivel no eh igual a 7.; e) imprima a mensagem Este um programa em C++ em uma linha. cout<< Este eh um programa em C++; f) imprima a mensagem Este um programa em C++ em duas linhas, na qual a primeira linha termina com c++. cout<< Este eh um programa em C++ \n; g) Imprima a mensagem Este um programa em C++ com cada palavra da mensagem escrita em uma linha separada.

cout<< Este \n eh \n um \n programa \n em \n C++; h) Imprima a mensagem Este um programa em C++ , com cada palavra separada da seguinte por uma marca de tabulao. cout<< Este \t eh \t um \t programa \t em \t C++; 1.6 Escreva um comando (ou comentrio) para realizar cada uma das seguintes tarefas: (Suponha que foram usados comandos using) a) Afirme que um programa calcula o produto de trs inteiros. // Calcula o produto de trs nmeros inteiros. b) Declare as variveis x. y. z e result como sendo do tipo int. int x,y,z,result; c) Escreva prompt pedindo ao usurio para digitar trs inteiros. cout<< Forneca tres numeros inteiros: ; d) Leia trs inteiros do teclado e armazene-os nas variveis x, y e z. cin>> x >> y >> z; e) Compute o produto dos trs inteiros contidos nas variveis x, y e z e atribua o resultado varivel result. result = x * y * z; f) Imprima o produto seguido pelo valor da varivel result. cout<< O produto eh << result; g) Devolva um valor a partir de main para indicar que o programa terminou com sucesso. return 0; 1.7 Usando os comandos que voc escreveu no Exerccio 1.6, escreva um programa completo que calcula e imprime o produto de trs inteiros.
// Calcular o produto de trs inteiros #include <iostream.h> int main (){ int x, y, z, result; cout<<"Digite tres inteiros: \n"; cin >> x >> y >> z; result = x * y * z; cout <<"O produto eh: "<< result; cout <<"\n"; system ("pause"); return 0; }

1.8 Identifique e corrija os erros em cada um dos seguintes comandos : a)if (c<7); cout c menor que 7\n; ponto e vrgula depois do parnteses da condio no comando IF. b)if (c=<7) cout c igual a ou maior que 7\n; O comando =< esta errado, deveria ser o contrario, ou seja, =>. 1.11 Por que voc poderia querer escrever um programa em uma linguagem independente de mquina em vez de em uma linguagem dependente de mquina? Porque uma linguagem dependente de mquina poderia ser mais apropriada para escrever certos tipos de programas? 1.12 Preencha os espaos em branco em cada uma das seguintes sentenas:

a) Que unidade lgica do computador recebe informaes de fora do computador para uso pelo computador? Unidade de entrada. b) O processo de instruir o computador para resolver problemas especficos chamado de ________________ c) Que tipo de linguagem de computador usar abreviaes semelhantes a palavras em ingls para instrues de linguagem de mquina? Linguagem Simblica ou Assembly. d) Que unidade lgica do computador envia as informaes que j foram processadas pelo computador a vrios dispositivos, de forma que as informaes possam ser usadas fora do computador? Unidade de saida e) Que unidade lgica do computador guarda informaes? Unidade de memria e Unidade de Memria Secundria. f) Que unidade lgica do computador executa clculos? Unidade Aritmtica. g) Que unidade lgica do computador toma decises lgicas? Unidade Lgica. h) O nvel de linguagem de computador mais conveniente para o programador escrever programas depressa e facilmente Linguagem de Auto Nivel. i) A nica linguagem que um computador pode entender diretamente chamada de Linguagem de Mquina daquele computador. j) Que unidade lgica do computador coordena as atividades de todas as outras unidades lgicas ?Cpu (Unidade Central de Processamento) 1.13 Discuta o significado de cada um dos objetos seguintes: a)std: :cin Este objeto fornece entrada de dados bufferizadaatravs do standart input device b)std: :cout Este objeto fornece sada de dados bufferizadaatravs do standart output device c)std: :cerr Este objeto fornece sada de dados NO bufferizadapara o standart error device 1.15 Preencha os espaos em branco em cada uma das seguintes sentenas: a) Comentrios so usados para documentar um programa e melhorar sua legibilidade. b) O objeto usado para exibir informaes na tela cout. c) Um comando de C++ que toma uma deciso if. d) Clculos so normalmente executados por comandos executveis. e) O objeto cin recebe como entrada valores fornecidos pelo teclado. 1.16 Escreva um nico comando, ou linha, de C++ que realize cada um dos seguintes comandos: a) lmprima a mensagem Digite dois nmeros. cout<< Digite dois nmeros; b) Atribua o produto das variveis b e c varivel a. a = b * c; c) Afirme que um programa executa um exemplo de clculo de folha de pagamento (isto , use texto que ajuda a documentar o programa). \\ Este programa executa um exemplo de calculo de folha de pagamento. d) Recebe como entrada do teclado trs valores do tipo inteiro e os transfere para as variveis inteiras a, b e c. cout << Digite trs inteiros:; cin>> a >> b >> c;

1.17 Diga quais das seguintes afirmaes so verdadeiras e quais so falsas.Se falsa, explique sua resposta. a) Os operadores de C++ so avaliados da esquerda para direita.Verdadeiro. b) Os seguintes nomes so todos nomes vlidos de variveis: under_bar , m928134, t5, j7, suas vendas, tota1na_conta_de1e, a, b, c, z, z2. Falso, no pode ter smbolos comeando a descrio dos nomes de variveis como em +5 e no pode ter espao entre palavras , como em suas vendas. c) O comando cout a = ; um exemplo tpico de um comando de atribuio. Falso, um exemplo de comando de impresso. d) Uma expresso aritmtica vlida em C++, sem parnteses, avaliada da esquerda para direita.Verdadeiro. e) Todos os seguintes so nomes de variveis no vlidos: 3g, 87, 67h2, h22. 2h. Falso, uma varivel no pode comear com um numero, como ocorreu em 67h2 e 2h. 1.18 Preencha os espaos em branco em cada uma das seguintes frases: a) Que operaes aritmticas esto no mesmo nvel de precedncia que a multiplicao?Diviso e Resto. b) Quando parnteses esto aninhados, que conjunto de parnteses avaliado primeiro em uma expresso aritmetica?O parnteses mais interno avaliado primeiro. e) Uma posio na memria do computador que pode conter valores diferentes em vrios momentos ao longo da execuo de um programa uma varivel. 1.19 O que imprime cada um dos seguintes comandos de C++, caso imprimam qualquer coisa, quando so executados? Se no imprimem nada, ento responda nada. Assuma que x = 2 e y = 3. a) cout x; Imprime o numero 2. b) cout x + x; Imprime o numero 4. c) cout x&; No imprime nada. d) cout x = x; Imprime x = 2. e) cout x + y = y + x; Imprime 5 = 5 f) z = x + y; No imprime nada. g) cm x y; No imprime nada. h) \\cout x + y = x + y; No imprime nada. i) cout \n; No imprime nada, apenas solta uma linha. 1.20 Qual dos comandos de C++ seguintes contm variveis cujos valores so substitudos? a) cm b c d e f; b) p = i + j + k + 7; c) cout variveis cujos valores so substituidos; d) cout a = 5; Somente a alternativa b, contem variveis cujos valores so substitudos. 1.21 Dada a equao algbrica y = ax3 + 7, quais dos seguintes comandos, se houver algum, so comandos corretos de C++ para expressar esta equao?

a) y = a * x * x * x + 7; b)y=a*x*x*(x+7); c)y= (a * x) * x * ( x+ 7); d)y=(a*x)*x*x+7; e)y=a*(x*x*x)+7; f) y=a*x* (x*x+7) Somente as alternativas a & e, apresentam comandos corretos para expressar a equao dada. 1.22 Indique a ordem de avaliao dos operadores em cada um dos seguintes comandos de C++ e mostre o valor de x aps cada comando ser executado. a) x 7 + 3 * 6 / 2 - 1; Primeiro: 3*6 = 18 Segundo: 18/2 = 9 Terceiro: 9 1 = 8 Quarto: 7x + 8 que o resultado. b) x = 2 % 2 + 2 * 2 - 2 / 2; Primeiro: 2 % 2 = 0 Segundo: 0 + (2 * 2) = 4 Terceiro: 2/2 = 1 Quarto: 4 1 = 3 que o resultado. c)x= (3*9* (3+ (9*3/ (3)))); Primeiro: 9 * 3 = 27 Segundo: 27 / 3 = 9 Terceiro: 3 + 9 = 12 Quarto: 3 * 9 = 27 Quinto: 27 * 12 = 324 que o resultado. 1.23 Escreva um programa que pede ao usurio que fornea dois nmeros, obtm os dois nmeros digitados pelo usurio e imprime a soma, o produto, a diferena e o quociente dos dois nmeros.
#include<iostream.h> int main(){ int a,b; cout<<"Digite dois numeros inteiros: "; cout <<"\n"; cin >> a >> b; cout<< " SOMA = " << a+b; cout <<"\n"; cout<< "PRODUTO = " << a * b; cout <<"\n"; cout<< "DIFERENcA = " << a - b; cout <<"\n"; cout << "QUOCIENTE = "<< a/b; cout <<"\n"; system ("pause"); return 0; }

1.25 Escreva um programa que pede ao usurio que fornea dois inteiros, obtm os nmeros digitados pelo usurio e ento imprime o nmero maior

seguido pelas palavras o maior. Se os nmeros so iguais, imprime a mensagem Estes nmeros so iguais.
#include<iostream.h> int main (){ int a, b; cout<< "Digite dois numeros inteiros: "; cout<< "\n"; cin >> a >> b; if ( a > b ) cout << a << " EH O MAIOR \n"; else if ( a < b) cout << b << " EH O MAIOR \n"; else cout << "ESTES NUMEROS SAO IGUAIS. \n"; system ("pause"); return 0; }

1.26 Escreva um programa que recebe trs inteiros como entrada do teclado e imprime a soma, a mdia, o produto, o menor e o maior destes nmeros.
#include<iostream.h> int main(){ int a, b, c; cout<< " DIGITE TRES NUMEROS INTEIROS: "; cin >> a >> b >> c; cout<< "SOMA = " << a+b+c; cout << "\n"; cout << "MEDIA = " << (a+b+c)/3.0; cout << "\n"; cout<< "PRODUTO = "<< a * b *c; cout << "\n"; if (a > b & b > c) cout << " MAIOR NUMERO EH = " << a << " MENOR EH= " << c; else if (a > c & c > b ) cout << " MAIOR NUMERO EH = " << a << " MENOR EH = "<< b; else if (b> a & a > c) cout << " MAIOR NUMERO EH = " << b << " MENOR EH = "<< c; else if (b > c & c > a) cout << " MAIOR NUMERO EH = " << b << " MENOR EH = "<< a; else if (c > a & a > b) cout << " MAIOR NUMERO EH = " << c << " MENOR EH = "<< b; else if (c > b & b > a) cout << " MAIOR NUMERO EH = " << c << " MENOR EH = "<< a; cout << "\n"; system ("pause"); return 0; }

1.27 Escreva um programa que l o raio de um crculo e imprime seu dimetro,circunferncia e rea. Para ssot, use o valor constante 3,14159. Faa estes clculos em comandos de sada. (Nota: neste captulo, discutimos s constantes e variveis inteiras. No Captulo 3, discutiremos nmeros de ponto-flutuante, isto , valores que podem ter pontos decimais.)
#include<iostream.h> int main (){ float raio; cout << "Digite o raio do crculo: " ; cout << "\n"; cin >> raio;

cout << " DIAMETRO = " << raio * 2; cout << "\n"; cout << " AREA = "<< 2 * 3.14159 * (raio * raio); cout << "\n"; system ("pause"); return 0; }

Faa um programa que receba a idade e o sexo de sete pessoas e que calcule e mostre: * a idade mdia do grupo; * a idade mdia das mulheres; * a idade mdia dos homens. 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;} }

Resolva todos os exerccios de auto reviso do captulo 2 do livro, pgina 229.

2. Resolva os seguintes exerccios(pg. 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 trs tipos de estruturas de controle: Sequncia, Seleo eRepetio b) A estrutura de seleo If-Else usada para executar uma ao quando uma condio true e outra ao quando a condio false. c) A repetio de um conjunto de instrues um nmero de vezes especfico chamada de repetio Controlada por contador ou definida. d) Quando no conhecido com antecedncia quantas vezes um conjunto de comandos ser repetido, um valor Sentinela, sinal, flag ou dummy, pode ser usado para terminar a repetio. 2.2 Escreva quatro comandos de C++ diferentes, cada um somando i varivel 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 clculo. z= x++ + y; b) Teste se o valor da varivel counter maior que 10. Se for, imprima Counter maior que 10. If (count >10) cout<< Counter eh maior que 10. c) Decremente a varivel x por 1 e ento subtrai-a da varivel total. total -= --x; d) Calcule o resto aps 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 variveis sum e x como do tipo int. int sum, x; b) Inicialize a varivel x com 1. x= 1; c) Inicialize a varivel sum com 0. sum = 0; d) Some a varivel x varivel sum e atribua o resultado varivel sum. sum+= x; ou sum= sum +x; e) Imprima A soma : , seguido pelo valor da varivel sum. cout<< A soma eh << sum; 2.5 Combine os comandos que voc escreveu para o Exerccio 2.4 em um programa que calcula e imprime a soma dos inteiros de 1 at 10. Use a estrutura while para iterar atravs do clculo e comandos de incremento. O lao 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 varivel depois de o clculo ser executado. Assuma que, quando cada comando comea a ser executado, todas as variveis tm o valor inteiro 5. a) product * x++; product = 25 e x=6. b) quotient 1= ++x; quociente = 0 e x=6. CAPTULO 2 - ESTRUTURAS DE CONTROLE 173 2.7 Escreva comandos simples de C++ que faam o seguinte: a) Receba como entrada a varivel inteira x com cm e. cm>>x; b) Receba como entrada a varivel inteira y com cm e. cm>> y; c) Inicialize a varivel inteira i com 1. i= 1; d) lnicialize a varivel inteira power com 1. power = 1; e) Multiplique a varivel power por x e atribua o resultado a power. power = power * x; ou power*=x; f) Incremente a varivel 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 varivel inteira power com cout e . cout<<power; 2.8 Escreva um programa em C++ que usa os comandos do Exerccio 2.7 para calcular x elevado potncia y. O programa deve ter uma repetio 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 } aps o ++c; b) cin value; O operador << esta errado, deveria ser >> c) if ( gender == 1 cout Mulher endl; else; No 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 repetio while: while ( z > O) { sum + z; } Se z for maior do que zero este trecho de codigo causara um loop infinito. Para que no 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 lao de repetio. 2.11 Determine se as seguintes frases so verdadeiras ou falsas. Se a resposta for falsa, explique por qu. a) O caso default obrigatrio na estrutura de seleo switch. Falsa. Ocaso default opcional. b) O comando break exigido no caso default de uma estrutura de seleo switch para sair da estrutura corretamente. Falsa, o comando break utilizado para sair de uma estrutura switch. O comando break no necessrio quando default o ltimo caso. c) A expresso (x>y && a<b) true se a expresso x>y true ou a expresso a<b true. Falsa. Ambas as expresses relacionais devem ser true para que a expresso inteira possa ser true, quando se usa o operador &&. d) Uma expresso contendo o operador 1 1 true se pelo menos um, ou ambos, os seus operandos so 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 variveis 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 precises de 1, 2, e 3. Imprima cada nmero na mesma linha. Alinhe cada nmero esquerda em seu campo. Quais os trs valores impressos? Esta matria no foi dada, pr tanto no tem como responder. c) Calcule o valor de 2 . 5 elevado potncia 3 usando a funo pow. Imprima o resultado com uma preciso de 2 em um campo de 10 posies de comprimento. O que impresso? No foi dado precisao. d) Imprima os inteiros de 1 at 20 usando um lao while e a varivel contadora x. Assuma que a varivel x foi declarada, mas no inicializada. Imprima somente 5 inteiros por linha. Sugesto: use o clculo x % 5. Quando o valor deste 0, imprima um caractere nova linha; caso contrrio imprima um caractere de tabulao 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 Exerccio 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 cdigo seguintes e explique como corrigi-lo(s). a) x =1; while ( x <= 10 ); x++; O ponto e virgula aps o lao 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; No se pode usar numeros em ponto flutuante para controlar uma estrutura for. c) switch ( n ) { case 1: cout O nmero 1 ; case 2: cout O nmero 2 ;break; default: cout O nmero no 1 ou 2 ; break; bom usar o comando break no fim dos comando pertencentes ao primeiro case. Quando isso no feito, os comandos do case 2 so executados toda vez que os comandos do case 1 forem executados. d) O cdigo seguinte deve imprimir os valores de 1 a 10. n = 1; while ( n < 10) cout n++; Neste caso, o numero 10 no vai imprimir, porque foi usado para nmeros menores do que 10. Para que isso no ocorra, basta utilizar <=10 ou <11. CAPTULO 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 no pode ter ponto e vrgula. 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 no tem ponto e vrgula. c) int x = 1, total; while ( x < 10 ) { total + x; Na ultima linha d cogigo, faltou o sinal de = aps 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 cdigo. 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 cdigo, este programa geraria um loop infinito com o numero 1. Isso acontece porque a varivel x continua sendo menor do que 10 durante toda a execuo do programa e este no possui um ponto de parada. Para os Exerccios 2.16 a 2.19 execute cada um destes passos: a) Leia a definio do problema. b) Formule o algoritmo usando pseudocdigo 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 esto preocupados com a quilometragem obtida por seus automveis. Um motorista fez um controle de vrios tanques de gasolina gastos,anotando os quilmetros de rodagem obtidos por tanque. Desenvolva um programa em que recebe como entrada os quilmetros rodados e os litros gastos para cada tanque. O programa deve calcular e exibir os quilmetros por litro obtidos para cada tanque. Depois de processar todas as informaes fornecidas, o programa deve calcular e imprimir os quilmetros por litro obtidos por todos os tanques combinados (mdia). Digite os litros usados (-1 para fim): 12.8 Digite os quilmetros dirigidos: 287 Os quilmetros/litro para este tanque foram 22.421875 Digite os litros usados (-1 para fim) : 10.3 Digite os quilmetros dirigidos: 200 Os quilmetros/litro para este tanque foram 19.417475 Digite os litros usados (-1 para fim): 5 Digite os quilmetros dirigidos: 120

Os quilmetros/litro para este tanque foram 24.000000 Digite os litros usados (-1 para fim) : -1 A mdia geral de quilmetros/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; }