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 7