Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Lista_7_Gabarito.pdf Lista 7 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para ou enquanto ou faca...enquanto e matrizes bidimensionais. Orientações: 1- Todos os exercícios têm pelo menos uma matriz bidimensional, 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- A estrutura do for, ou a estrutura do while ou a estrutura do do...while, está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Todas as soluções na linguagem C++. Linguagem C++ Solução do exercício 8 1) Entrar com valores reais para uma matriz M[4] [5] . Gerar e exibir a matriz DOBRO. #include <iostream> using namespace std; int main() { int L, c; float M[4][5], DOBRO[4][5]; //entrada for(L=0; L<4; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<": "; cin>>M[L][c]; //gera a matriz dobro . Poderia estar em outro for, mas assim eh melhor DOBRO[L][c]= M[L][c] * 2; } } //saida cout<<"\n\nMatriz Dobro\n\n"; for(L=0; L<4; L++) { for(c=0; c<5; c++) { cout<<DOBRO[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 2) Entrar com valores inteiros para uma matriz A[4] [4] e para uma matriz B[4] [4]. Gerar e exibir a matriz SOMA. #include <iostream> using namespace std; int main() { int L, c, A[4][4], B[4][4], SOMA[4][4]; //entrada dos valores da Matriz A for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //entrada dos valores da Matriz B for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: "; cin>>B[L][c]; //gera a matriz SOMA . Poderia estar em outro for, mas assim eh melhor SOMA[L][c]= A[L][c] + B[L][c]; } } //saida cout<<"\n\nMatriz SOMA\n\n"; for(L=0; L<4; L++) { for(c=0; c<4; c++) { cout<<SOMA[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 3) Entrar com valores para duas matrizes 5 x 5. Gerar e exibir a matriz diferença. #include <iostream> using namespace std; int main() { int L, c, A[5][5], B[5][5], diferenca[5][5]; //entrada dos valores da Matriz A for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //entrada dos valores da Matriz B for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz B: "; cin>>B[L][c]; //gera a matriz diferenca . Poderia estar em outro for, mas assim eh melhor diferenca[L][c]= A[L][c] + B[L][c]; } } //saida cout<<"\n\nMatriz Diferenca\n\n"; for(L=0; L<5; L++) { for(c=0; c<5; c++) { cout<<diferenca[L][c]<<"\t"; } cout<<"\n"; } cout<<"\n\n"; system("pause"); } 4) Ler valores inteiros para a matriz A[3][5] . Gerar e exibir a matriz SOMA_LINHA, onde cada elemento é a soma dos elementos de uma linha da matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou do trecho de saída. #include <iostream> using namespace std; int main() { int L, c, A[3][5], SOMA_LINHA[3]; //entrada dos valores da Matriz A for(L=0; L<3; L++) { SOMA_LINHA[L] = 0;//para não ter que criar outro for for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //gera a matriz SOMA_LINHA for(L=0;L<3;L++) for (c=0; c<5;c++) SOMA_LINHA[L] += A[L][c]; //saida system("cls"); cout<<"\n\nSoma Linha\n\n"; for(L=0;L< 3;L++) cout<<"\n"<<SOMA_LINHA[L]; cout<<"\n\n"; system("pause"); } 5) Ler valores inteiros para a matriz A[3][5]. Gerar e imprimir a matriz SOMA_COLUNA, onde cada elemento é a soma dos elementos de uma coluna da matriz A. Faça o trecho que gera a matriz, separado dos trechos de entrada ou do trecho de saída. #include <iostream> using namespace std; int main() { int L, c, A[3][5], SOMA_COLUNA[5]; //entrada dos valores da Matriz A for(L=0; L<3; L++) { for(c=0; c<5; c++) { cout<<"\nElemento linha "<<L+1<<" coluna "<<c+1<<" da matriz A: "; cin>>A[L][c]; } } //inicializa SOMA_COLUNA for (c=0; c<5;c++) SOMA_COLUNA[c] = 0; //gera a matriz SOMA_COLUNA for (c=0; c<5;c++) for(L=0;L<3;L++) SOMA_COLUNA[c] += A[L][c]; //saida system("cls"); cout<<"\n\nSoma Coluna\n\n"; for(c=0;c< 5;c++) cout<<SOMA_COLUNA[c]<<"\t"; cout<<"\n\n"; system("pause"); } 6) Fazer um programa leia valores para uma matriz M10 x 10 e escreva-a na ordem inversa que foi lida. Se a matriz fosse M3 x 3 e tivesse estes elementos: sua impressão seria: ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ 987 654 321 ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ 123 456 789 #include <iostream> using namespace std; int main() { int L,C; float mat[10][10]; //Entrada for(L=0; L < 10; L++) { for(C=0; C < 10; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nMatriz Exibida na orem inversa de leitura\n"; for(L=9; L >=0; L--) { for(C=9; C >=0 ; C--) { cout<<mat[L][C]<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 7) Faça um programa que leia valores reais para uma matriz 5 x 5 e exiba todos os elementos exceto os elementos da diagonal principal. #include <iostream> using namespace std; int main() { int L,C; float mat[5][5]; //Entrada for(L=0; L < 5; L++) { for(C=0; C < 5; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos menos os da DP\n"; for(L=0; L < 5; L++) { for(C=0; C < 5; C++) { if(L != C) cout<<mat[L][C]<<"\t"; else cout<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 8) Faça um programa que leia valores reais para uma matriz 4 x 4 e exiba os elementos que se encontram acima da diagonal principal e a soma deles. #include <iostream> using namespace std; int main() { int L,C; float mat[4][4], soma=0; //Entrada for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos acima da DP\n"; for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { if(L < C) { soma += mat[L][C]; cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\nSoma dos elementos: "<<soma<<"\n"; system("pause"); } 9) Faça um programa que leia os elementos de uma matriz 6 x 6 e exiba os elementos que se encontram acima da diagonal principal e o produto deles. #include <iostream> using namespace std; int main() { int L,C; float mat[6][6], produto=1; //Entrada for(L=0; L < 6; L++) { for(C=0; C < 6; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nTodos elementos acima da DP\n"; for(L=0; L < 6; L++) { for(C=0; C < 6; C++) { if(L < C) { produto *= mat[L][C]; cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\nProduto dos elementos: "<<produto<<"\n"; system("pause"); } 9) Faça um programa que leia valores inteiros para uma matriz M inteira 4x4 e exiba os elementos que estão em linhas pares e colunas ímpares. #include <iostream> using namespace std; int main() { int L,C, mat[4][4]; //Entrada for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { cout<<"\n Linha "<<L+1<<" coluna "<<C+1<<": "; cin>>mat[L][C]; } } //Saida system("cls");//system("clear"); LINUX cout<<"\nElementos em linhas pares e colunas impares\n"; for(L=0; L < 4; L++) { for(C=0; C < 4; C++) { if(L % 2 ==1 && C % 2 == 0) { cout<<mat[L][C]<<"\t"; } else cout<<"\t"; } cout<<"\n\n"; } cout<<"\n\n"; system("pause"); } 10) Num torneio de futsal, de um turno, inscreveram-se 12 times. Armazenar os nomes dos times e exibir a tabela de jogos. Solução_1 #include <iostream> #define TAM 3 using namespace std; int main() { int L, c; char times[TAM][21]; //entrada dos nomes dos times for(L=0; L<TAM; L++) { cout<<"\nNome do "<<L+1<<"o time: "; cin.getline(times[L], 31); } // saida system("cls"); //nao eh obrigatorio cout<<"\n\nTabela de Jogos \n\n"; for(L=0; L<TAM; L++) for(c=0; c<TAM; c++) if(L < c) // pode ser if(L > c) tambem cout<<"\n"<<times[L]<<" x "<<times[c]; cout<<"\n\n"; system("pause"); } Solução_2 #include <iostream> #define TAM 3 using namespace std; int main() { int L, c; char times[TAM][21]; //entrada dos nomes dos times for(L=0; L<TAM; L++) { cout<<"\nNome do "<<L+1<<"o time: "; cin.getline(times[L], 31); } // saida system("cls"); //nao eh obrigatorio cout<<"\n\nTabela de Jogos \n\n"; for(L=0; L<TAM-1; L++) for(c=L+1; c<TAM; c++) cout<<"\n"<<times[L]<<" x "<<times[c]; cout<<"\n\n"; system("pause"); } Lista_4_Gabarito.pdf 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 Autora: 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): "; leia faixa; 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"; fimprog 3) 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++ Lista_5_Gabarito.pdf Lista 5 - gabarito 1 Autora: ANITA LOPES Lista 5 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para, enquanto e faca...enquanto . 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- A estrutura do enquanto, ou do faca...eqnuanto, está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Codificar em C++ todas as soluções já testadas no ambiente UAL. Solução do exercício 7 Fluxograma Linguagem UAL Linguagem C++ 1) Construa um algoritmo que possa entrar com vários números positivos e para cada número imprimir a raiz quadrada. prog Lista5Ex1 real num; imprima "\nDigite numero positivo. Para sair, digite 0 ou negativo: "; leia num; enquanto( num > 0.0 ) { imprima "\nRaiz quadrada: ", raiz(num); imprima "\n Digite numero positivo. Para sair, digite 0 ou negativo: "; leia num; } fimprog Lista 5 - gabarito 2 Autora: ANITA LOPES 2) Construa um algoritmo que possa entrar com várias idades e imprima quantas pessoas são eleitoras obrigatórias. prog Lista5Ex2 int idade, conta; imprima "\nDigite idade. Para sair, digite 0 ou negativo: "; leia idade; conta<-0; enquanto( idade > 0 ) { se(idade >=18 && idade <=70 ) { conta++; } imprima "\nDigite idade. Para sair, digite 0 ou negativo: "; leia idade; } imprima "\nTotal de eleitores obrigatorio(s): ", conta, "\n"; fimprog 3) Construa um algoritmo que possa entrar com números positivos e para cada número imprimir seus divisores. prog Lista5Ex3 int num, x; imprima "\nDigite numero positivo inteiro. Para sair, digite 0 ou negativo: "; leia num; enquanto( num > 0 ) { para(x<-1; x<= num div 2; x++) { se(num % x == 0 ) { imprima x, "\t"; } } imprima num, "\n"; imprima "\nDigite numero positivo inteiro. Para sair, digite 0 ou negativo: "; leia num; } fimprog 4) Construa um algoritmo que possa entrar com vários números positivos e imprima quantos números são perfeitos (Um número é perfeito se a soma de seus divisores exceto ele é igual a ele). prog Lista5Ex4 int num, x, conta, soma; imprima "\nDigite numero positivo inteiro. Para sair, digite 0 ou negativo: "; leia num; conta<-0; enquanto( num > 0 ) { soma<-0; para(x<-1; x<= num div 2; x++) { se(num % x == 0 ) Lista 5 - gabarito 3 Autora: ANITA LOPES { soma <- soma + x; } } se( soma == num ) { conta++; } imprima num, "\n"; imprima "\nDigite numero positivo inteiro. Para sair, digite 0 ou negativo: "; leia num; } imprima "\nTotal de Numeros Perfeitos: ", conta, "\n"; fimprog 5) Construa um algoritmo que possa entrar com o sexo de várias pessoas(M ou F ou m ou f) e imprima qual o sexo tem maior número de pessoas. prog Lista5Ex5 int num, contaM, contaF; string sexo; imprima "\nDigite sexo(M ou F). Para sair, @: "; leia sexo; contaM<-0; contaF<-0; enquanto( sexo <> "@" ) { se(sexo == "m" || sexo == "M" ) { contaM++; } senao { se(sexo == "f" || sexo == "F" ) { contaF++; } } imprima "\nDigite sexo(M ou F). Para sair, @: "; leia sexo; } se( contaM > contaF) { imprima "\nTem mais pessoas do sexo masculino\n"; } senao { se( contaF > contaM ) { imprima "\nTem mais pessoas do sexo feminino\n"; } senao { imprima "\nNumero de pessoas do sexo masculino é igual ao numero de pessoas do sexo feminino\n"; } Lista 5 - gabarito 4 Autora: ANITA LOPES } fimprog 6) Construa um algoritmo que possa entrar com várias notas e imprima a média das notas digitadas. prog Lista5Ex6 real nota, soma, media; int conta; conta<-0; soma<- 0.0; imprima "\nDigite nota 0 - 10. Para sair, digite -1.0: "; leia nota; enquanto( nota <> -1.0 ) { se( nota >=0.0 && nota <=10.0 ) { soma<- soma + nota; conta++; } senao { imprima "\nNota invailda\n"; } imprima "\nDigite nota 0 - 10. Para sair, digite -1: "; leia nota; } media<- soma/conta; imprima "\nMedia dos numeros digitaods: ", media, "\n"; fimprog 7) Construa um algoritmo que entre com um número e exiba a quantidade de algarismos do número. prog Lista5Ex7 int num, tamanho; tamanho<-0; imprima "\nDigite numero positivo: "; leia num; enquanto( num >0 ) { tamanho++; num <- num div 10; } imprima "\nTotal de algarismos: ", tamanho, "\n"; fimprog 8) Construa um algoritmo que entre com vários números positivos e imprima quantos são pares. prog Lista5Ex8 int num, conta; conta<-0; imprima "\nDigite numero positivo. Para sair, 0 ou negativo: "; leia num; enquanto( num > 0 ) { Lista 5 - gabarito 5 Autora: ANITA LOPES se( num % 2 == 0) { conta++; } imprima "\nDigite numero positivo. Para sair, 0 ou negativo: "; leia num; } imprima "\nTotal de numeros pares: ", conta, "\n"; fimprog 9) Construa um algoritmo que entre com vários números e imprima quantos são pares e a soma dos ímpares. prog Lista5Ex9 int num, contaPar, somaImpar; contaPar<-0; somaImpar<-0; imprima "\nDigite numero positivo. Para sair, 0 ou negativo: "; leia num; enquanto( num > 0 ) { se( num % 2 == 0) { contaPar++; } senao { somaImpar<-somaImpar + num; } imprima "\nDigite numero positivo. Para sair, 0 ou negativo: "; leia num; } imprima "\nTotal de numeros pares: ", contaPar, "\n"; imprima "\nSoma dos numeros pares: ", somaImpar, "\n"; fimprog 10) Construa um algoritmo que permita a entrada do número da conta e o saldo de vários clientes. A cada entrada, deverão ser impressos o número da conta, o saldo e uma das mensagens: positivo ou negativo. Ao final, deverá ser impresso o percentual de contas com saldo negativo. prog Lista5Ex10 int numConta, contaNegativo, contaTotal; real saldo; contaNegativo <- 0; contaTotal <- 0; imprima "\nDigite numero da conta. Para sair, 0 ou negativo: "; leia numConta; enquanto( numConta > 0 ) { imprima "\nDigite saldo: "; leia saldo; contaTotal++; se( saldo >= 0.0 ) { imprima "\n-------------------------------\n"; Lista 5 - gabarito 6 Autora: ANITA LOPES imprima "\n Conta numero: ",numConta, "\n Saldo R$ ", saldo, "0\n Situacao: Positivo ou zerado"; imprima "\n--------------------------------\n"; } senao { contaNegativo++; imprima "\n-------------------------------\n"; imprima "\n Conta numero: ",numConta, "\n Saldo R$ ", saldo, "0\n Situacao: Negativo"; imprima "\n--------------------------------\n"; } imprima "\nDigite numero da conta. Para sair, 0 ou negativo: "; leia numConta; } imprima "\nPercentual de contas negativas: ", contaNegativo*100.0/contaTotal, "\n"; fimprog 11) Uma empresa classifica seus funcionários de acordo com um índice de produtividade: (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário de acordo com a seguinte tabela: Excelente 40 % do salário base Bom 20 % do salário base Regular 5 % do salário base Construa um algoritmo que permita a entrada da matrícula, do salário base e a classificação de vários funcionários. Para cada funcionário deverão ser impressos a matrícula e seu novo salário. O programa deverá calcular a produtividade. A entrada de dados termina quando se digita uma matricula não positiva. #include <iostream> using namespace std; int main() { int matricula, classificacao; float salario, novoSalario, abono; cout<<"\nDigite matricula do funcionario. Digite 0 ou numero negativo para sair: "; cin>> matricula; while( matricula > 0) { cout<<"\nSalario: "; cin>>salario; cout<<"\nDigite (1) Excelente, (2) Bom e (3) Regular: "; cin>>classificacao; switch(classificacao) { case 1: abono= salario*0.4; novoSalario= salario + abono; // poderia ter sido somente a linha // novoSalario= salario *1.4; break; Lista 5 - gabarito 7 Autora: ANITA LOPES case 2: abono= salario*0.2; novoSalario= salario + abono; // poderia ter sido somente a linha // novoSalario= salario *1.2; break; case 3: abono= salario*0.05; novoSalario= salario + abono; // poderia ter sido somente a // linha: novoSalario= salario *1.05; break; default: abono=0; novoSalario= salario + abono; // poderia ter sido somente a // linha: novoSalario= salario; cout<<"\nClassificacao invalida. Salario Inalterado"; } cout<<"\n\nMatricula: "<<matricula<<"\tSalario novo R$ "<<novoSalario; cout<<"\nDigite matricula do funcionario. Digite 0 ou numero negativo para sair: "; cin>> matricula; } cout<<"\n\n"; //Coloco essa linha para afastar a mensagem do system("pause"); do texto system("pause"); } 12) Entrar com a idade de várias pessoas e imprimir: - total de pessoas com menos de 21 anos - total de pessoas com mais de 50 anos. #include <iostream> using namespace std; int main() { int idade, conta21=0, conta50=0; cout<<"\nDigite idade. Para sair, 0 ou numero negativo: "; cin>>idade; while(idade > 0 ) { if( idade < 21 ) conta21++; // nao coloquei entre chaves porque so tem um comando else if(idade > 50 ) conta50++; // nao coloquei entre chaves porque so tem um comando cout<<"\nDigite idade. Para sair, 0 ou numero negativo: "; cin>>idade; } cout<<"\n\n\nTotal de pessoas com menos de 21 anos: "<<conta21; Lista 5 - gabarito 8 Autora: ANITA LOPES cout<<"\n\n\nTotal de pessoas com mais de 50 anos: "<<conta50; cout<<"\n\n"; system("pause"); } 13) Construa um algoritmo que possa entrar com vários números inteiros positivos até entrar -1. Imprimir todos os números e, ao final, total de números múltiplos de 8 digitados e a média de todos os números lidos. #include <iostream> using namespace std; int main() { int num, conta=0, soma=0, mult8=0; cout<<"\nNumero positivo. Para sair digite -1: "; cin>>num; while(num > 0)//qualquer numero menor ou igual a zero sai { cout<<"\n\n-- Numero digitado: "<<num<<" --\n"; conta++; soma+=num; // poderia ser: soma = soma + num; if(num % 8 == 0) mult8++; cout<<"\nNumero positivo. Para sair digite -1: "; cin>>num; } cout<<"\nTotal de multiplos de 8: "<<mult8; cout<<"\nMedia inteira: "<<soma/conta; cout<<"\nMedia real: "<<(float)soma/conta; cout<<"\n\n"; system("pause"); } 14) Construa um algoritmo que receba a idade, a altura e o peso de várias pessoas. Calcule e imprima: * a quantidade de pessoas com idade superior a 50 anos; * a média das alturas das pessoas com idade entre 10 e 20 anos; * a porcentagem de pessoas com peso inferior a 40 quilos entre todas as pessoas analisadas. #include <iostream> using namespace std; int main() { int idade, conta10_20=0, conta50=0, contaTotal=0, conta40=0; float peso, altura, somaAlturas10_20=0; cout<<"\nDigite idade. Para sair, 0 ou numero negativo: "; cin>>idade; while(idade > 0) Lista 5 - gabarito 9 Autora: ANITA LOPES { cout<<"\nDigite altura: "; cin>>altura; cout<<"\nDigite peso: "; cin>>peso; contaTotal++; if(peso <40) conta40++; if(idade > 50 ) conta50++; else if(idade>10 && idade < 20)//Entre significa que os extremos estao fora { conta10_20++; somaAlturas10_20 += altura; } cout<<"\nDigite idade. Para sair, 0 ou numero negativo: "; cin>>idade; } cout<<"\nQuantidade de pessoas com idade superior a 50 anos: "<<conta50; if(conta10_20 > 0 ) cout<<"\nMedia das alturas das pessoas com idade entre 10 e 20 anos: "<<somaAlturas10_20/conta10_20; else cout<<"\nNinguem na faix entre 10 - 20 anos. Media nao calculada."; cout<<"\nPorcentagem de pessoas com peso inferior a 40 quilos: "<<conta40*100.0/contaTotal<<"%"; cout<<"\n\n"; system("pause"); } 15) Sabendo-se que uma empresa que patrocina uma equipe de vôlei paga aos seus jogadores, além do salário, um valor adicional ao salário mensal fruto do esforço de cada um. Essa produtividade é paga de acordo com a tabela a seguir: classe nível Valor adicional Lista 5 - gabarito 10 Autora: ANITA LOPES 1 excelente +100% 2 bom +80% 3 médio +50% 4 regular +30% 5 precisa treinar mais +10% 6 limite +5% 7 tsktsk nada Construa um algoritmo que entre com o salário e o código da classe de todos os jogadores, calcule e exiba o seu salário final e o nome da sua classe (nível). O programa acaba quando se digita um número fora do intervalo da faixa de 1-7. #include <iostream> using namespace std; int main() { int codigoClasse; float salario, novoSalario; cout<<"\nDigite codigo da classe(1 a 7) e para sair, qualquer outro numero: "; cin>> codigoClasse; while( codigoClasse >=1 && codigoClasse<=7) { cout<<"\nSalario: "; cin>>salario; switch(codigoClasse) { case 1: novoSalario= salario * 2; cout<<"\n\nClase: excelente\tSalario novo R$ "<<novoSalario<<"\n"; break; case 2: novoSalario= salario * 1.8; cout<<"\n\nClase: bom\tSalario novo R$ "<<novoSalario<<"\n"; break; case 3: novoSalario= salario * 1.5; cout<<"\n\nClase: medio\tSalario novo R$ "<<novoSalario<<"\n"; break; case 4:novoSalario= salario * 1.3; cout<<"\n\nClase: regular\tSalario novo R$ "<<novoSalario<<"\n"; break; case 5:novoSalario= salario *1.1; cout<<"\n\nClase: precisa treinar mais\tSalario novo R$ "<<novoSalario<<"\n"; break; case 6:novoSalario= salario *1.05; Lista 5 - gabarito 11 Autora: ANITA LOPES cout<<"\n\nClase: limite\tSalario novo R$ "<<novoSalario<<"\n"; break; case 7: novoSalario= salario ; cout<<"\n\nClase: tsktsk\tSalario novo R$ "<<novoSalario<<"\n"; //Como nao existe outra possibilidade, não precisa de deafult } cout<<"\nDigite codigo da classe(1 a 7) e para sair, qualquer outro numero: "; cin>> codigoClasse; } cout<<"\n\n"; //Coloco essa linha para afastar a mensagem do system("pause"); do texto system("pause"); } 16) Construa algoritmos que funcionem segundo menus abaixo. MENU 1: OPÇÕES 1 Exibe a hipotenusa 2 Exibe a média ponderada 3 Exibe o menor entre 3 números 4 Termina o programa OPCAO: Considerações: 1 - Ao se escolher a opção 1, deverá ser pedido os valores dos catetos e exibida a hipotenusa. 2 - Ao se escolher a opção 2, deverá ser pedido 4 notas e exibida a média ponderada. Para calcular a média ponderada, use os seguintes pesos para as notas: 2, 3, 2 e 3 respectivamente. 3 - Ao se escolher a opção 3, deverá ser pedido 3 números e exibido o menor. #include <iostream> #include <cmath> using namespace std; int main() { int opcao; float cateto1, cateto2, hipotenusa, nota1, nota2, nota3, nota4, mediaPonderada, num1, num2, num3; do { system("cls"); cout<<"\nMENU 1\n"; cout<<"\n1 Exibe a hipotenusa"; Lista 5 - gabarito 12 Autora: ANITA LOPES cout<<"\n2 Exibe a media ponderada"; cout<<"\n3 Exibe o menor entre 3 numeros"; cout<<"\n4 Termina o programa"; cout<<"\nOPCAO:"; cin>>opcao; system("cls"); // para limpar a tela antes de entrar em um dos casos switch(opcao) { case 1: cout<<"\nDigite o valor do 1o cateto: "; cin>> cateto1; cout<<"\nDigite o valor do 2o cateto: "; cin>> cateto2; if( cateto1> 0 && cateto2 > 0) { hipotenusa= sqrt(pow(cateto1,2) + pow(cateto2,2)); cout<<"\nA hipotenusa eh: "<<hipotenusa; } else cout<<"\nNao tem como calcular a hipotenusa\n"; break; case 2: cout<<"\nDigite a 1a nota: "; cin>> nota1; cout<<"\nDigite a 2a nota: "; cin>> nota2; cout<<"\nDigite a 3a nota: "; cin>> nota3; cout<<"\nDigite a 4a nota: "; cin>> nota4; mediaPonderada=(nota1*2 + nota2*3 + nota3*2 + nota4*3)/10; /*Esse eh um comentario de varias linhas por que 10? Porque 2+3+2+3 eh igual a 10 Lista 5 - gabarito 13 Autora: ANITA LOPES poderia tambem fazer (nora1+nota3)*2 + (not2+nota4)*3 ganha o que com isso: Menos duas operacoes */ cout<<"\nMedia ponderada: "<<mediaPonderada; break; case 3: cout<<"\nDigite o 1o numero: "; cin>> num1; cout<<"\nDigite o 2o numero: "; cin>> num2; cout<<"\nDigite o 3o numero: "; cin>> num3; if(num1 < num2 && num1<num3) cout<<"\nMenor: "<<num1; else if(num2 < num3) cout<<"\nMenor: "<<num2; else cout<<"\nMenor: "<<num3; break; case 4: cout<<"\nGabarito- Qualquer erro fale comigo: anita@anitalopes.com"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); }while(opcao != 4); } MENU 2: MENU 1 –Entra com três números e exibe-os em ordem decrescente Lista 5 - gabarito 14 Autora: ANITA LOPES 2 – Entra com um número e informa se ele é, ou não, capicua 3 - Calcula e imprime a raiz à quarta de um número 4 – Finaliza OPCAO: Observação: Um número é capicua se lido da esquerda para direita for igual se lido da direita para esquerda. Exemplo: 3443 #include <iostream> #include <cmath> using namespace std; int main() { int opcao, num, numInvertido, copiaNum; float num1, num2, num3; do { system("cls"); cout<<"\nMENU 2\n"; cout<<"\n1 - Entra com tres numeros e exibe-os em ordem decrescente"; cout<<"\n2 - Entra com um numero e informa se ele eh, ou nao, capicua"; cout<<"\n3 - Calcula e imprime a raiz a quarta de um numero"; cout<<"\n4 - Finaliza"; cout<<"\nOPCAO: "; cin>>opcao; system("cls"); // para limpar a tela antes de entrar em um dos casos switch(opcao) { case 1: //Fiz uma solucao diferente da ordenacao por combinacao. // Acho essa maior. Voce decide cout<<"\nDigite 1o numero: "; cin>>num1; cout<<"\nDigite 2o numero: "; cin>>num2; cout<<"\nDigite 3o numero: "; cin>>num3; Lista 5 - gabarito 15 Autora: ANITA LOPES if( num1 > num2 ) { if(num3 > num1 ) cout<<"\n"<<num3<<"\t"<<num1<<"\t"<<num2; else if(num3 > num2 ) cout<<"\n"<<num1<<"\t"<<num3<<"\t"<<num2; else cout<<"\n"<<num1<<"\t"<<num2<<"\t"<<num3; } else { if(num3 > num2 ) cout<<"\n"<<num3<<"\t"<<num2<<"\t"<<num1; else if(num3 > num1 ) cout<<"\n"<<num2<<"\t"<<num3<<"\t"<<num1; else cout<<"\n"<<num2<<"\t"<<num1<<"\t"<<num3; } break; case 2: cout<<"\nNumero: "; cin>>num; copiaNum = num; // para nao "perder" o valor de num numInvertido=0; while(copiaNum > 0 ) { numInvertido= numInvertido*10 + copiaNum %10; copiaNum = copiaNum / 10 ; //poderia ser copiaNum/=10; } if(num == numInvertido) cout<<"\nEh capicua"; else cout<<"\nNao eh capicua"; break; case 3: Lista 5 - gabarito 16 Autora: ANITA LOPES cout<<"\nDigite numero: "; cin>> num1; if(num1 >= 0) cout<<"\nRaiz a quarta: "<<pow( num1, (float)1 / 4); /* pow é uma função que exige, com muito rigor, os tipos dos argumentos. Para extrair raiz, pela matemática, elevamos o radicando a uma fração cujo denominador é o índice do radical e como ambos são inteiros, TEMOS QUE FORÇAR para QUE A OPERACAO SEJA FEITA COMO REAL Por essa razão, usamos um cast - tipo que desejamos entre parênteses */ else cout<<"\nNao posso fazer raiz de numero negativo"; break; case 4: cout<<"\nGabarito - Qualquer erro fale comigo: anita@anitalopes.com"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); }while(opcao != 4); } MENU 3: MENU A – Entra com 3 matriculas e respectivos CRs. Exibe a matrícula do maior CR B – Exibe a quantidade de algarismos de um número C – Exibe a tangente de um ângulo em graus D - Termina OPCAO: #include <iostream> #include <cmath> Lista 5 - gabarito 17 Autora: ANITA LOPES using namespace std; int main() { char opcao; int mat1, mat2, mat3, num, copiaNum, tamanho; float cr1, cr2, cr3, angulo, radAngulo; do { system("cls"); cout<<"\nMENU 3\n"; cout<<"\nA - Entra com 3 matriculas e respectivos CRs. Exibe a matrícula do maior CR."; cout<<"\nB - Exibe a quantidade de algarismos de um numero"; cout<<"\nC - Exibe a tangente de um ângulo em graus"; cout<<"\nD - Termina"; cout<<"\nOPCAO: "; cin>>opcao; system("cls"); // para limpar a tela antes de entrar em um dos casos switch(opcao) { case 'A': //ainda não aprendi a funcao toupper() que converte para maiusucula case 'a': cout<<"\nDigite mtricula e CR 1o aluno: "; cin>> mat1>>cr1; cout<<"\nDigite mtricula e CR 2o aluno: "; cin>> mat2>>cr2; cout<<"\nDigite mtricula e CR 3o aluno: "; cin>> mat3>>cr3; if( cr1> cr2 && cr1 > cr3) cout<<"\nA matricula do aluno com maior CR: "<<mat1; else if( cr2 > cr3 ) cout<<"\nA matricula do aluno com maior CR: "<<mat2; else cout<<"\nA matricula do aluno com maior CR: "<<mat3; Lista 5 - gabarito 18 Autora: ANITA LOPES break; case 'B': case 'b': cout<<"\nDigite numero: "; cin>> num; copiaNum=num; tamanho=0; // nao pode declarar e inicializar porque esse item pode ser escolhido varias vezes while(copiaNum > 0 ) { tamanho++; copiaNum/=10; } cout<<"\nO numero "<<num<<" tem "<< tamanho<<" algarismos"; break; case 'C': case 'c': cout<<"\nDigite angulo em graus: "; cin>> angulo; radAngulo= angulo *3.14159265/180; if(angulo != 90 && angulo != 270) cout<<"\nTangente : "<<tan(radAngulo); else cout<<"\nNao posso calcular a tangente desse angulo"; break; case 'D': case 'd': cout<<"\nGabarito- Qualquer erro fale comigo: anita@anitalopes.com"; break; default: cout<<"\nOpcao Invalida\n"; } Lista 5 - gabarito 19 Autora: ANITA LOPES cout<<"\n\n"; system("pause"); }while(opcao != 'd' && opcao != 'D'); } Lista_6_Gabarito.pdf Lista 6 - gabarito Lista 6 - imprima, atribuição,\leia, se ... então .. senão se, escolha, para ou enquanto ou faca...enquanto e vetores. Orientações: 1- Todas as soluções 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- A estrutura do para, ou a estrutura do enquanto ou a estrutura do faca...enquanto, está presente em todos os exercícios. 5 - Todos os exercícios terão comando de saída. 6- Todos os exercícios têm pelo menos um vetor. 7- Codificar em C++ todas as soluções já testadas no ambiente UAL. Linguagem UAL Linguagem C++ Solução do exercício 13 1) Armazenar 10 números inteiros em um vetor NUM e exibir uma listagem numerada. Lista 6 - gabarito #include <iostream> #define TAM 15 using namespace std; int main() { //declaração da variável do for e do vetor int x, NUM[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; } //saida system("cls"); //no Linux system("clear"); cout<< "\nRelacao do numeros\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<" - "<<NUM[x]; cout<<"\n\n"; system("pause"); // so no windows } 2) Armazenar 15 números inteiros em um vetor NUM e exibir uma listagem numerada contendo o número e uma das mensagens: par ou ímpar. #include <iostream> #define TAM 15 using namespace std; int main() { //declaração da variavel do for e do vetor int x, NUM[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; } //saida system("cls"); //no Linux system("clear"); cout<< "\nNumero\tPar/Iimpar\n"; for(x=0; x< TAM; x++) if(NUM[x] % 2 == 0 ) cout<<"\n"<< x + 1 <<"-"<<NUM[x]<<"\tPAR"; else cout<<"\n"<< x + 1 <<"-"<<NUM[x]<<"\tIMPAR"; cout<<"\n\n"; system("pause"); // so no windows } Lista 6 - gabarito 3) Entrar com números reais para o vetor A de 10 elementos. Gerar e exibir o vetor triplo. #include <iostream> #define TAM 10 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], TRI[TAM]; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; } //gerando o vetor triplo for(x=0; x< TAM; x++) { TRI[x]= A[x] * 3; //essa linha poderia estar no 1o for, depois da entrada } //saida system("cls"); //no Linux system("clear"); cout<< "\nVetor Triplo\n"; for(x=0; x< TAM; x++) cout<<"\n"<<TRI[x]; cout<<"\n\n"; system("pause"); // so no windows } 4) Armazenar 8 números em um vetor e exibir todos os números. Ao final, o total de números múltiplos de seis digitados. #include <iostream> #define TAM 8 using namespace std; int main() { //declaração da variavel do for, contador e do vetor int x, NUM[TAM], conta6=0; //entrada for(x=0; x< TAM; x++) { cout<<"\nNumero inteiro: "; cin>>NUM[x]; if(NUM[x] % 6 == 0) conta6++; Lista 6 - gabarito } //saida system("cls"); //no Linux system("clear"); cout<< "\nRelacao do numeros\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<" - "<<NUM[x]; cout<<"\n\nTotal de numeros multiplos de 6: "<<conta6; cout<<"\n\n"; system("pause"); // so no windows } 5) Armazenar matrícula e notas das AV1, AV2 e AV3 de 15 alunos. Calcular e armazenar a média segundo critério da Estácio (as duas maiores notas precisam ser maiores do que 4,0 e a média tem que ser maior ou igual a 6,0). Exibir uma listagem contendo matricula, as duas notas, média e situação de cada aluno. #include <iostream> #define TAM 3 using namespace std; int main() { //declaração da variavel do for, das variaveis simples e dos vetores int x, matric[TAM], sit[TAM]; float AV1[TAM], AV2[TAM], AV3[TAM], med[TAM], maior1, maior2; //entrada for(x=0; x< TAM; x++) { cout<<"\nMatricula do "<<x+1<<"o aluno: "; cin>>matric[x]; cout<<"\nNota da AV1 do "<<x+1<<"o aluno: "; cin>>AV1[x]; cout<<"\nNota da AV2 do "<<x+1<<"o aluno: "; cin>>AV2[x]; cout<<"\nNota da AV3 do "<<x+1<<"o aluno: "; cin>>AV3[x]; } //calculo da media for(x=0; x< TAM; x++) { if(AV1[x] < AV2[x] && AV1[x] < AV3[x] ) { maior1=AV2[x]; maior2=AV3[x]; } else if( AV2[x] < AV3[x] ) { maior1=AV1[x]; maior2=AV3[x]; } else { maior1=AV1[x]; maior2=AV2[x]; Lista 6 - gabarito } med[x]=(maior1 + maior2)/2; //Quando voce, na AULA_10 aprender a ducao strcpy(), volte aqui e melhore esse trecho if(maior1 >= 4 && maior2 >= 4 && med[x] >=6 ) sit[x]=1; else sit[x]=0; } //saida system("cls"); //no Linux system("clear"); cout<< "\nMatric.\tAV1\tAV2\tAV3\tMedia\tSituacao\n"; for(x=0; x< TAM; x++) { cout<<"\n"<< matric[x]<<"\t"<<AV1[x]<<"\t"<<AV2[x]<<"\t"<<AV3[x]<<"\t"<<med[x]< <"\t"; if(sit[x] == 1) cout<<"AP"; else cout<<"RP"; } cout<<"\n\n"; system("pause"); // so no windows } 6) Armazenar matrícula e salário de 20 pessoas. Calcular o novo salário sabendo- se que o reajuste foi de 8%. Exibir uma listagem numerada com matrículas e novos salários. #include <iostream> #define TAM 20 using namespace std; int main() { //declaração da variavel do for e dos vetores int x, matric[TAM]; float sal[TAM], salNovo[TAM]; //entrada e calculo do novo salario for(x=0; x< TAM; x++) { cout<<"\nMatricula do "<<x+1<<"o funcionario: "; cin>>matric[x]; cout<<"\nSalario atual do "<<x+1<<"o funcionario: "; cin>>sal[x]; salNovo[x]=sal[x] * 1.08; } //saida system("cls"); //no Linux system("clear"); Lista 6 - gabarito cout<< "\nMatric\tNovo salario\n"; for(x=0; x< TAM; x++) cout<<"\n"<< x + 1 <<"-"<<matric[x]<<"\t"<<salNovo[x]; cout<<"\n\n"; system("pause"); // so no windows } 7) Armazenar código, quantidade, valor de compra e valor de venda de 30 produtos. A listagem pode ser de todos os produtos ou somente de um ao se digitar o código. #include <iostream> #define TAM 30 using namespace std; int main() { //declaração da variavel do for, outras variáveis simples e dos vetores int x, codigo[TAM], qtdade[TAM], codigoProcura, achou, op, posicaoAchada; float valorCompra[TAM], valorVenda[TAM]; //entrada e for(x=0; x< TAM; x++) { cout<<"\nCodigo do "<<x+1<<"o produto: "; cin>>codigo[x]; cout<<"\nQuantidade do "<<x+1<<"o produto: "; cin>>qtdade[x]; cout<<"\nValor de compra do "<<x+1<<"o produto: "; cin>>valorCompra[x]; cout<<"\nValor de compra do "<<x+1<<"o produto: "; cin>>valorVenda[x]; } //saida do { system("cls"); //no Linux system("clear"); cout<<"\nListagem\n"; cout<<"\n1- Todos"; cout<<"\n2- So um"; cout<<"\n3- Sai"; cout<<"\nOpcao: "; cin>>op; system("cls"); switch(op) { case 1: cout<< "\nCodigo\tQtdade\tCompra\tVenda\n"; for(x=0; x< TAM; x++) cout<<"\n"<<codigo[x]<<"\t"<<qtdade[x]<<"\t"<<valorCompra[x]<<"\t"<< valorVenda[x]; Lista 6 - gabarito break; case 2: cout<< "\nDigite o codigo do produto: "; cin>>codigoProcura; achou=0; for(x=0; x< TAM && achou == 0; x++) if(codigoProcura == codigo[x]) { achou=1; posicaoAchada=x; } if(achou == 1) { cout<< "\nCodigo\tQtdade\tCompra\tVenda\n"; cout<<"\n"<<codigo[posicaoAchada]<<"\t"<<qtdade[posicaoAchada]<<"\t"< <valorCompra[posicaoAchada]<<"\t"<<valorVenda[posicaoAchada]; } else cout<<"\nCodigo não encontrado"; break; case 3: cout<<"\nGabarito\n"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); // so no windows }while(op != 3); } 8) Entrar com números inteiros em um vetor A [50]. Gerar e exibir o vetor B onde cada elemento é o quadrado do elemento, na respectiva posição, do vetor A. #include <iostream> #define TAM 50 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], B[TAM]; //entrada e geracao do vetor B for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; B[x]= A[x] * A[x]; //pode usar a funcao pow(,) Lista 6 - gabarito } //saida system("cls"); //no Linux system("clear"); cout<< "\nVetor Quadrado\n"; for(x=0; x< TAM; x++) cout<<"\n"<<B[x]; cout<<"\n\n"; system("pause"); // so no windows } 9) Faça um programa que leia um vetor A de 10 valores e construa outro vetor B, da seguinte forma: Ex: Vetor A 3 8 4 2 5 Vetor B 9 4 12 1 15 #include <iostream> #define TAM 10 using namespace std; int main() { //declaração da variavel do for e dos vetores int x; float A[TAM], B[TAM]; //entrada e geracao do vetor B for(x=0; x< TAM; x++) { cout<<"\nNumero: "; cin>>A[x]; if( x % 2 == 0)//VERIFICA SE A POSICAO É PAR B[x]= A[x] * 3; else B[x]= A[x] / 2; } //saida system("cls"); //no Linux system("clear"); cout<< "\n\nVetor A\t"; for(x=0; x< TAM; x++) cout<<A[x]<<"\t"; cout<< "\n\nVetor B\t"; for(x=0; x< TAM; x++) cout<<B[x]<<"\t"; cout<<"\n\n"; system("pause"); // so no windows } 10) Faça um programa que leia dois vetores A e B, contendo, cada um, 25 elementos inteiros. Intercale esses dois conjuntos( A[1] / B[1] / A[2] / B[2] /..), formando um vetor V de 50 elementos. Exiba o vetor V. Lista 6 - gabarito #include <iostream> #define TAM 25 using namespace std; int main() { //declaração da variável do for, variável que indicará a posição de V e do vetor int x, posV=0; float A[TAM], B[TAM], V[TAM*2]; //entrada e geracao do vetor V for(x=0; x< TAM; x++) { cout<<"\nNumero "<< x+1<<" do vetor A: " ; cin>>A[x]; V[posV]=A[x];
Compartilhar