Prévia do material em texto
Lista 4 - gabarito 1 Autora: ANITA LOPES Lista 4 - imprima, atribuição,leia e se ... entao .. senao se, escolha, para. Orientações: 1- Todas as soluções em fluxograma e na linguagem UAL. 2- O comanda de entrada está presente em todos os exercícios. 3- Quando existir algum cálculo, declare a variável e armazene o resultado da operação. 4- O comando para está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Seja audacioso e tente codificar em C++ algumas soluções já testadas no ambiente UAL. Solução do exercício 1 da lista do para Dentro de para Fluxograma Linguagem UAL Linguagem C++ 1) Entrar com 10 números e imprimir o logaritmo desse número na base 10. prog Lista4Ex1 int a; real numero; para( a <- 1; a <=10; a++) { imprima "\nDigite numero: "; leia numero; se(numero > 0.0) { imprima "\nlogaritmo: ", log(numero) /log(10.0); } senao { imprima "\nNao fao logaritmo de numero negativo"; } } imprima "\n"; fimprog Em C++ #include <iostream> #include <cmath> using namespace std; int main() { Lista 4 - gabarito 2 Autora: ANITA LOPES int a; real numero; for( a = 1; a <=10; a++) { cout<<“\nDigite numero: "; cin>> numero; if(numero > 0) { cout<<“\nlogaritmo: "<< log(numero) /log(10); } else { cout<<“\nNao fao logaritmo de numero negativo"; } } cout<<“\n"; system(“pause”); } 2) Entrar com 5 números e imprimir a raiz quadrada do número, caso seja possível. Se não for possível, imprimir a mensagem NAO FACO. prog Lista3Ex2 int a; real numero; para( a <- 1; a <=5; a++) { imprima "\nDigite numero: "; leia numero; se(numero >= 0.0) { imprima "\nraiz: ", raiz(numero); } senao { imprima "\nNAO FACO"; } } imprima "\n"; fimprog Em C++ #include <iostream> #include <cmath> using namespace std; int main() { int a; float numero; for( a = 1; a <=5; a++) { cout<<"\nDigite numero: "; cin>> numero; if(numero >= 0) { cout<<"\nraiz: "<<sqrt(numero); } else { cout<<"\nNAO FACO"; } } cout<<"\n"; system("pause"); } Lista 4 - gabarito 3 Autora: ANITA LOPES 3) Entrar com 12 números e imprimir a soma de todos os números. prog Lista3Ex3 int i; real num, soma; soma <- 0.0; para( i <- 1; i <= 12 ; i++) { imprima "\nDigite numero: "; leia num; soma <- soma + num; } imprima "\nSoma dos numeros", soma; imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int i; float num, soma=0; for( i = 1; i <= 12 ; i++) { cout<<"\nDigite numero: "; cin>> num; soma += num; //soma = soma + num; } cout<<"\nSoma dos numeros"<<soma; cout<<"\n"; system("pause"); } 4) Entrar com 12 números e imprimir a média de todos os números. prog Lista3Ex4 int i; real num, soma, media; soma <- 0.0; para( i <- 1; i <= 12 ; i++) { imprima "\nDigite numero: "; leia num; soma <- soma + num; } media <- soma / 12; imprima "\nSoma dos numeros", media; imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { Lista 4 - gabarito 4 Autora: ANITA LOPES int i; float num, soma=0, media; for( i = 1; i <= 12 ; i++) { cout<<"\nDigite numero: "; cin>> num; soma += num; //soma = soma + num; } media= soma/12; cout<<"\nMedia dos numeros: "<<media; cout<<"\n"; system("pause"); } 5) Entrar com 5 números e imprimir quantos números são múltiplos de 6. prog Lista4Ex5 int numero, c, conta6; conta6<- 0; para( c <- 1; c <= 5; c++) { imprima "\ndigite numero: "; leia numero; se( numero % 6 == 0 ) { conta6 <- conta6 +1; # ou conta6++; } } imprima "\nTotal de multiplos de 6: ", conta6,"\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int numero, c, conta6=0; for( c = 1; c <= 5; c++) { cout<<"\ndigite numero: "; cin>> numero; if( numero % 6 == 0 ) conta6++; // as chaves são dispensáveis porque só tem um comando } cout<<"\nTotal de multiplos de 6: "<<conta6<<"\n"; system("pause"); } 6) Entrar com nome, nota da PR1 e nota da PR2 de 15 alunos. Imprimir, a cada entrada,: nome, nota da PR1, nota da PR2 e média de cada aluno. Ao final, a média geral da turma. prog Lista3Ex6 int c; string nome; real pr1, pr2, soma, mediaAluno, mediaTurma; Lista 4 - gabarito 5 Autora: ANITA LOPES soma <- 0.0 ; para( c <- 1; c <= 15; c++) { imprima "\n\nEntre com nome: "; leia nome; imprima "\nEntre com nota 1: "; leia pr1; imprima "\nEntre com nota 2: "; leia pr2; mediaAluno <- (pr1 + pr2)/2; soma <- soma + mediaAluno; imprima "\n\n",nome,"\t", pr1,"\t", pr2,"\t", mediaAluno,"\n" ; } mediaTurma <- soma / 15; imprima "\nmedia: ", mediaTurma, "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int c; char nome[31]; float pr1, pr2, soma=0, mediaAluno, mediaTurma; for( c = 1; c <= 15; c++) { cout<<"\n\nEntre com nome: "; cin.getline( nome, 31); cout<<"\nEntre com nota 1: "; cin>> pr1; cout<<"\nEntre com nota 2: "; cin>> pr2; cin.get(); //"apanha o enter" que foi deixado pelo cin>>pr2; mediaAluno = (pr1 + pr2)/2; soma = soma + mediaAluno; cout<<"\n\n"<<nome<<"\t"<<pr1<<"\t"<<pr2<<"\t"<< mediaAluno <<"\n" ; } mediaTurma = soma / 15; cout<<"\nmedia: "<< mediaTurma<< "\n"; system("pause"); } 7) Entrar com um número e imprimir todos os seus divisores. Solução 1 prog Lista4Ex7 int numero, c; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) Lista 4 - gabarito 6 Autora: ANITA LOPES { imprima c, "\t"; } } imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int numero, c; cout<<"\ndigite numero: "; cin>> numero; for( c = 1; c <= numero; c++) { if( numero % c == 0 ) { cout<<c<< "\t"; } } cout<<"\n"; system("pause"); } Solução 2 • Depois da metade, só encontramos como divisor o próprio número e, por isso, usamos a expressão numero div 2. • Como o número ficou fora do for, ele foi impresso depois do for. • Tendo em vista as duas considerações acima, melhoramos a performance em 50%, visto que evitamos metade das comparações. prog Lista4Ex7 int numero, c; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero div 2; c++) { se( numero % c == 0 ) { imprima c, "\t"; } } imprima numero,"\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int numero, c; cout<<"\ndigite numero: "; Lista 4 - gabarito 7Autora: ANITA LOPES cin>> numero; for( c = 1; c <= numero / 2; c++) //Em C++, a / faz divisão inteira if( numero % c == 0 ) cout<<c<< "\t"; cout<<numero<<"\n"; system("pause"); } 8) Entrar com um número e imprimir quantos divisores tem o número. Solução 1 prog Lista4Ex8 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } imprima "\nTotal de divisores: ", contaDivisores, "\n"; fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número e, por isso, usamos a expressão numero div 2. • Como o número ficou fora do for e o 1 também, o contador começou por 2. • Tendo em vista as duas considerações acima, melhoramos a performance em 50%, visto que evitamos metade das comparações. prog Lista4Ex8 int numero, contaDivisores, c; contaDivisores <- 2; imprima "\ndigite numero: "; leia numero; para( c <- 2; c <= numero div 2 ; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; } # ou contaDivisores++; } se(numero == 1) { imprima "\nTotal de divisores:1\n"; } senao { imprima "\nTotal de divisores: ", contaDivisores, "\n"; } fimprog 9) Entrar com um número e imprimir a soma dos divisores do número. Lista 4 - gabarito 8 Autora: ANITA LOPES Solução 1 prog Lista4Ex9 int numero, somaDivisores, c; somaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { somaDivisores <- somaDivisores + c; } } imprima "\nSoma dos divisores: ", somaDivisores, "\n"; fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número. • Como 1 só tem como divisor ele mesmo, foi necessário um teste para que não fosse impresso valor da variável somaDivisores. prog Lista4Ex9 int numero, somaDivisores, c; imprima "\ndigite numero: "; leia numero; somaDivisores <- numero +1; para( c <- 2; c <= numero div 2 ; c++) { se( numero % c == 0 ) { somaDivisores <- somaDivisores + c; } } se(numero == 1) { imprima "\nSoma dos divisores:1\n"; } senao { imprima "\nSoma dos divisores: ", somaDivisores, "\n"; } fimprog 10) Entrar com um número e imprimir se o número é, ou não, primo. Solução 1 prog Lista4Ex10 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 1; c <= numero; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } se( contaDivisores == 2 ) Lista 4 - gabarito 9 Autora: ANITA LOPES { imprima "\nPrimo\n"; } senao { imprima "\nNao Primo\n"; } fimprog Solução 2 • Como 1 é divisor de todos os números, o for começou a partir de 2. • Depois da metade, só encontramos como divisor o próprio número. • Tendo em vista as duas considerações acima, não podemos encontrar nenhum divisor. • O teste do primo teve que incluir um teste para saber se NÃO era o número 1 porque 1 não é primo e ele foi excluído do for para melhorar a performance. prog Lista4Ex10 int numero, contaDivisores, c; contaDivisores <- 0; imprima "\ndigite numero: "; leia numero; para( c <- 2; c <= numero div 2; c++) { se( numero % c == 0 ) { contaDivisores <- contaDivisores +1; }# ou contaDivisores++; } se( contaDivisores == 0 && numero <> 1 ) { imprima "\nPrimo\n"; } senao { imprima "\nNao Primo\n"; } fimprog 11) Entrar com um número e imprimir o fatorial desse número. prog Lista4Ex11 int numero, fat, c; fat <- 1; imprima "\nEntre com numero: "; leia numero; para( c <- 1; c <= numero; c++) { fat <- fat * c; } imprima "\nFatorial: ", fat,"\n"; fimprog 12) Ler 8 números inteiros e imprimir quantos são pares e quantos são ímpares. prog Lista4Ex12 int numero, cp, c; cp <- 0; Lista 4 - gabarito 10 Autora: ANITA LOPES para( c <- 1; c <= 8; c++) { imprima "\nEntre com numero: "; leia numero; se( numero % 2 == 0 ) { cp <- cp +1; } # ou cp++; } imprima "\npares: ", cp; imprima "\nimpares: ", 8-cp,"\n"; fimprog 13) Entrar com 20 números e imprimir a soma dos positivos e o total de números negativos. prog Lista4Ex13 int c, neg; real numero, soma; neg <- 0; soma <-0.0; para( c <- 1; c <= 20; c++) { imprima "\nDigite numero: "; leia numero; se( numero > 0.0 ) { soma <- soma + numero; } senao { se(numero<0.0) { neg ++; } } } imprima "\nSoma dos positivos: ", soma; imprima "\nTotal de negativos: ",neg,"\n"; fimprog 14) Entrar com 50 números e imprimir o maior entre eles. prog Lista4Ex14 int x; real num, maior; imprima "\nDigite 1o numero: "; leia num; maior <- num; para( x <- 2; x <= 50; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num > maior) { maior <-num; } } imprima "\nMaior numero digitado: ", maior,"\n"; fimprog 15) Entrar com 50 números e imprimir o menor entre eles. Lista 4 - gabarito 11 Autora: ANITA LOPES prog Lista4Ex15 int x; real num, menor; imprima "\nDigite 1o numero: "; leia num; menor <- num; para( x <- 2; x <= 50; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num < menor) { menor <-num; } } imprima "\nMenor numero digitado: ", menor,"\n"; fimprog 16) Entrar com 50 números e imprimir o maior e o menor entre eles. prog Lista4Ex16 int x; real num, menor, maior; imprima "\nDigite 1o numero: "; leia num; maior <- num; menor <- num; para( x <- 2; x <= 10; x++) { imprima "\nDigite ", x ,"o numero: "; leia num; se(num > maior ) { maior <-num; } senao { se(num < menor) { menor <-num; } } } imprima "\nMaior numero digitado: ", maior,"\n"; imprima "\nMenor numero digitado: ", menor,"\n"; fimprog 17) Entrar com um número que corresponde à faixa salarial e o salário de 100 pessoas. Imprimir o total salarial em cada faixa. 1 salário menor que R$ 900,00 2 R$900,00<=salário<R$ 1500,00 3 R$1500,00<=salário<R$ 3000,00 4 R$3000,00<=salário<R$ 5000,00 5 R$5000,00<=salário<R$ 10000,00 6 salário>=R$ 10000,00 prog Lisat4ex17 Lista 4 - gabarito 12 Autora: ANITA LOPES int x, faixa; real salario, faixa1,faixa2, faixa3, faixa4, faixa5, faixa6; faixa1 <- 0.0; faixa2 <- 0.0; faixa3 <- 0.0; faixa4 <- 0.0; faixa5 <- 0.0; faixa6 <- 0.0; para( x <- 1; x <= 10; x++ ) { imprima "\nSalario: "; leia salario; imprima "\nEntre com o numeroda faixa salarial( 1- 6): "; leiafaixa; se(faixa == 1) { faixa1 <- faixa1 + salario; } senao { se(faixa == 2) { faixa2 <- faixa2 + salario; } senao { se(faixa == 3) { faixa3 <- faixa3 + salario; } senao { se(faixa == 4) { faixa4 <- faixa4 + salario; } senao { se(faixa == 5) { faixa5 <- faixa5 + salario; } senao { se(faixa == 6) { faixa6 <- faixa6 + salario; } } } } } } Lista 4 - gabarito 13 Autora: ANITA LOPES } } imprima "\nFaixa 1: R$ ", faixa1, "0\n"; imprima "\nFaixa 2: R$ ", faixa2, "0\n"; imprima "\nFaixa 3: R$ ", faixa3, "0\n"; imprima "\nFaixa 4: R$ ", faixa4, "0\n"; imprima "\nFaixa 5: R$ ", faixa5, "0\n"; imprima "\nFaixa 6: R$ ", faixa6, "0\n"; fimprog Em C++, usando switch no lugar dos ses encadeados #include <iostream> using namespace std; int main() { int x, faixa; float salario, faixa1,faixa2, faixa3, faixa4, faixa5, faixa6; faixa1 = 0; faixa2 = 0; faixa3 = 0; faixa4 = 0; faixa5 = 0; faixa6 = 0; for( x = 1; x <= 10; x++ ) { cout<<"\nSalario: "; cin>> salario; cout<<"\nEntre com a faixa salarial: 1 (salario<900,00)\n2 (900,00=< salario <1500,00)\n3 (1500,00=< salario <3000,00)\n4 (3000,00=< salario <5000,00)\n5 (5000,00=< salario <10000,00)\n6 (salario >=10000): "; cin>> faixa; switch( faixa) { case 1: faixa1 = faixa1 + salario; break; case 2: faixa1 = faixa1 + salario; break; case 3: faixa1 = faixa1 + salario; break; case 4: faixa1 = faixa1 + salario; break; case 5: faixa1 = faixa1 + salario; break; case 6: faixa1 = faixa1 + salario; break; } } cout<<"\nFaixa 1: R$ "<< faixa1<< "0\n"; Lista 4 - gabarito 14 Autora: ANITA LOPES cout<<"\nFaixa 2: R$ "<< faixa2<< "0\n"; cout<<"\nFaixa 3: R$ "<< faixa3<< "0\n"; cout<<"\nFaixa 4: R$ "<< faixa4<< "0\n"; cout<<"\nFaixa 5: R$ "<< faixa5<< "0\n"; cout<<"\nFaixa 6: R$ "<< faixa6<< "0\n"; system("pause"); } 18) Entrar com dois números e imprimir todos os números no intervalo fechado, do menor para o maior. prog Lisat4ex18 int x, inicio, fim; imprima "\nLeia valor inicial da serie: "; leia inicio; imprima "\nLeia valor final da serie: "; leia fim; se( inicio <= fim ) { para( x <- inicio; x <= fim; x++ ) { imprima x, "\t"; } } senao { para( x <- inicio; x >= fim; x-- ) { imprima x, "\t"; } } imprima "\n"; fimprog 19) Imprima todos os números de 1 até 40. prog Lista4Ex19 int x; para( x <- 1; x <= 40; x++) { imprima x, "\t"; } imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int x; for( x = 1; x <= 40; x++) cout<<x<< "\t"; // um comando só logo, não precisam das { } cout<<“\n"; Lista 4 - gabarito 15 Autora: ANITA LOPES system(“pause”); } 20) Imprima todos os números de 50 até 1. prog Lista4Ex20 int x; para( x <- 50; x >= 1; x-- ) { imprima x, "\t"; } imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int x; for( x = 50; x >=1 ; x--) cout<<x<< "\t"; cout<<"\n"; system("pause"); } 21) Imprima os 50 primeiros pares (não considerar o 0). prog Lista4Ex21 int x; para( x <- 2; x <= 100; x <- x+2) { imprima x, "\t"; } imprima "\n"; fimprog Em C++ #include <iostream> using namespace std; int main() { int x; for( x = 2; x <= 100; x = x+2) cout<<x<< "\t"; cout<<"\n"; system("pause"); } 22) Imprima os 30 primeiros ímpares. prog Lisat4ex22 int x; para( x <- 1; x <= 59; x <- x+2) { imprima x, "\t"; } imprima "\n"; fimprog Lista 4 - gabarito 16 Autora: ANITA LOPES 23) Imprima os 20 múltiplos de 5(considerar o 0). prog Lisat4ex23 int x; para( x <- 5; x <= 100; x <- x+5) { imprima x, "\t"; } imprima "\n"; fimprog 24) Ler o número de termos da série (N) e imprimir o valor de S, sendo NN S 1 1 1... 3 1 2 1 1 1 +−++++= prog Lista4Ex24 int c, num; real S; S <- 0.0 ; imprima "\nDigite numero: "; leia num; para( c <- 1; c <= num; c++) { S <- S + 1 / c ; } imprima "\nSoma: ", S, "\n"; fimprog 25) Ler o número de termos da série (N) e imprimir o valor de S, sendo NN NNN S +−++−+−+= 2 1... 2 3 1 21 prog Lista4Ex25 int c, num, N; real S; S <- 0.0 ; imprima "\nDigite numero: "; leia num; N <- num; para( c<- 1; c <= num; c++) { S <- S + c / N; N--; } imprima "\nSoma: ", S, "\n"; fimprog 26) Imprima uma tabela de conversão de polegadas para centímetros. Deseja-se que a tabela conste valores desde 1 polegada até 20 polegadas inteiras. prog Lista4ex26 int L,c, ca; imprima "\nConversao de polegadas para centimetros \n"; para(L<-1; L<=20; L++) { imprima "\n", L, "'' equivale(m) a ",L*2.54, " cm"; Lista 4 - gabarito 17 Autora: ANITA LOPES } imprima "\n"; fimprog 27) Imprima a tabuada de multiplicar do número 3. prog Lista4ex27 int x; para( x <- 1; x <= 10; x++ ) { imprima "\n3 x ", x, " = ", 3 * x; } imprima "\n"; fimprog 28) Construa um algoritmo que deixe escolher qual a tabuada de multiplicar que se deseja imprimir. prog Lista4ex28 int x,num; imprima "\nQual a tabuada? "; leia num; para( x <- 1; x <= 10; x++ ) { imprima "\n", num," x ", x, " = ", num * x; } imprima "\n"; fimprog para dentro de para 1) Imprima todas as tabuadas de multiplicar de 1 até 10. prog Lista4ParaDentroParaEx1 int L, c; string r; para( L <- 1; L <=10 ; L++) { imprima "\nTABUADA DO ", L, "\n"; para(c<-1; c<=10; c++) { imprima "\n",L, " x ", c, " = ", L*c; } imprima "\n\nPressione enter: "; leia r; } imprima "\n"; fimprog 2) Imprimir uma tabela para DEZ times num torneio de dois turnos. prog Lista4ParaDentroParaEx2 int L, c; string r; para( L <- 1; L <=10 ; L++) { para(c<-1; c<=10; c++) { se(L <> c) { imprima "\ntime ",L, " x time ", c, " ________"; } } Lista 4 - gabarito 18 Autora: ANITA LOPES imprima "\n\nPressione enter: "; leia r; } imprima "\n"; fimprog3) Imprimir uma tabela para DEZ times num torneio de um turno. prog Lista4ParaDentroParaEx3 int L, c; string r; para( L <- 1; L <=9 ; L++) { para(c<-L+1; c<=10; c++) { imprima "\ntime ",L, " x time ", c, " ________"; } imprima "\n\nPressione enter: "; leia r; } imprima "\n"; fimprog 4) Uma escola tem 5 turmas e cada turma tem n alunos. Construa um algoritmo que imprima, por turma, total de alunos com média superior a 7 e a média geral da escola. prog Lista4ParaDentroParaEx4 int L,c, contaAlunosMaior7, n, totalunos; real mediaAluno, somageral; somageral <- 0.0; totalunos <- 0; para(L <- 1;L <= 5;L++) { contaAlunosMaior7 <- 0; imprima "\nQuantos alunos tem a ", L, "a turma? "; leia n; totalunos <- totalunos + n; para(c <- 1;c <= n; c++) { imprima "\nDigite media do ", c, "o aluno: "; leia mediaAluno; se( mediaAluno > 7.0 ) { contaAlunosMaior7++; } somageral <- somageral + mediaAluno; } imprima "\nTotal de alunos com media superior ou igual a 7: ", contaAlunosMaior7; imprima "\n"; } imprima "\nMedia da escola: ", somageral / totalunos; imprima "\n"; fimprog Em C++ Em C++ Em C++ Em C++ Em C++ Em C++ Solução 1 Solução 1 Em C++ Em C++ Em C++
Compartilhar