Buscar

Gabarito LISTAS 4 a 7

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];

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais