Lógica de Programação e Algoritmos
Exercícios Resolvidos
Prof. André Y Kusumoto
1) Escreva um algoritmo que, a partir de um mes fornecido (numero inteiro de 1 a 12), apresente o nome dele por extenso.
declare
mes: numerico; inicio
Ler(mes); Escolha (mes)
caso 1: Escrever ("Janeiro"); caso 2: Escrever ("Fevereiro"); caso 3: Escrever ("Março"); caso 4: Escrever ("Abril"); caso 5: Escrever ("Maio"); caso 6: Escrever ("Junho"); caso 7: Escrever ("Julho"); caso 8: Escrever ("Agosto"); caso 9: Escrever ("Setembro"); caso 10: Escrever ("Outubro"); caso 11: Escrever ("NOvembro"); caso 12: Escrever ("Dezembro"); senao: Escrever("Mes invalido"); fim-escolha;
Fim
2) Escreva um algoritmo que leia traz valores inteiros diferentes e mostre-os em ordem decrescente.
declare
a,b,c: numerico; inicio
ler(a,b,c);
se (a>b) e (a>c) então se (b>c) então escrever(a,b,c); senão escrever(a,c,b); fim-se; senão se (b>c) então se (a>c) então escrever(b,a,c); senão escrever(b,c,a); fim-se; senão se (a>b) então escrever(c,a,b); senão escrever(c,b,a); fim-se; fim-se; fim-se; fim
3) Construa um algoritmo que leia 500 valores inteiros e positivos e: a) Encontre o maior valor
b) Encontre o menor valor
c) Calcule a média dos números lidos
Solução 1
declare
n, aux, maior, menor, soma: numerico; inicio
maior <- 0; soma <- 0; para aux <- 1 até 500 faça
ler(n); se (n > maior) então maior <- n; fim-se; se (aux > 1) então se (n < menor) então menor <- n; fim-se; senão menor <- n; fim-se; soma <- soma + n; fim-para;
escrever(maior, menor, soma/500); fim
Solução 2
declare
n, aux, maior, menor, soma: numerico; inicio
ler(n);
maior <- n; menor <- n; soma <- n; para aux <- 2 até 500 faça
ler(n); se (n > maior) então maior <- n; fim-se; se (n < menor) então menor <- n; fim-se; soma <- soma + n; fim-para;
escrever(maior, menor, soma/500); Fim
4) faça um algoritmo e o seu diagrama de blocos que calcule a média de salários de uma empresa, pedindo ao usuário o registro dos funcionários e os salários e
devolvendo a média, o salário mais alto e o salário mais baixo. Use registro = 0 (zero) para encerrar a leitura.
Declare
id, salario, cont, soma_sal, maior_sal, menor_sal: numerico; Inicio
soma_sal <- 0; maior_sal <- 0; cont <- 0; ler(id);
enquanto (id <> 0) faça ler(salario);
soma_sal <- soma_sal + salario; se (salario > maior_sal) então maior_sal <- salario;
fim-se;
se (cont <> 0) então
se (salario < menor_salario) então menor_salario <- salario; fim-se; senão menor_salario <- salario; fim-se; cont <- cont + 1; ler(id); fim-enquanto;
escrever(maior_sal, menor_sal, soma_sal/cont); Fim
5) Foi realizada uma pesquisa de algumas características físicas da população de uma certa região, a qual coletaram os seguintes dados referentes a cada habitante para serem analisados:
- sexo (M e F)
- cor dos olhos (azuis, verdes ou castanhos) - cor dos cabelos (louros, castanhos, pretos) - idade
Faça um algoritmo que determine e escreva: a) a maior idade dos habitantes;
b) a quantidade de indivíduos do sexo feminino cuja idade estão entre 18 e 35 anos, inclusive;
c) a quantidade de indivíduos que tenham olhos verdes e cabelos louros;
O final do conjunto de habitantes é reconhecido pelo valor "N" informado como resposta a uma pergunta "Deseja Continuar (s/n)?"
Declare
sexo, olhos, cabelos, resp: caracter;
idade, maior, qtdFIdade, qtdOvCl: numerico; Inicio
maior <- 0; qtdFIdade <- 0; qtdOvCl <- 0; repita
ler(sexo, olhos, cabelos); ler(idade);
se (idade > maior) então maior <- maior + idade; fim-se;
se ((sexo = "F") e (idade >= 18 e idade <= 35)) então qtdFIdade <- qtdFIdade + 1;
fim-se;
se (olhos = "V" e cabelos = "L") então qtdOvCl <- qtdOvCl + 1;
fim-se;
escrever("Deseja Continuar (S/N)?"); ler(resp);
até que (resp = "N");
escrever(maior, qtdFIdade, qtdOvCl); Fim
6) faça um algoritmo para ler 10 valores que devem ser armazenados em um vetor, calcular e mostrar a soma e a média desses valores.
declare
val : vetor[10] de numerico; soma, aux: numerico;
inicio
para aux <- 1 até 10 faça ler(val[aux]);
fim-para;
soma <- 0;
para aux <- 1 até 10 faça soma <- soma + val[aux]; fim-para;
escrever (soma, soma/10); fim
7) Monte um algoritmo que leia as vendas de cada vendedor durante uma semana, armazenando-as em uma matriz 3x5. Ao final informe:
a) Faturamento diário da empresa; b) faturamento semanal da empresa; c) faturamento semanal por vendedor
d) Informar qual o vendedor de maior faturamento semanal.
declare
vendas : matriz [3,5] de numerico;
lin, col, fatDia, FatSemEmp, FatSemVend, MaiorFat: numerico; vendedoras : vetor [3] de caracter;
diasemana : vetor [5] de caracter; inicio vendedoras[1] <- "Sandra"; vendedoras[2] <- "Vera"; vendedoras[3] <- "Maria"; diasemana[1] <- "Segunda-feira"; diasemana[2] <- "Terça-feira"; diasemana[3] <- "Quarta-feira"; diasemana[4] <- "Quinta-feira"; diasemana[5] <- "Sexta-feira";
para lin <- 1 até 3 faça
para col <- 1 até 5 faça ler(vendas[lin,col]); fim-para;
fim-para;
{ Letra a - Faturamento diario da empresa } para col <- 1 até 5 faça
fatDia <- 0;
para lin <- 1 até 3 faça
fatDia <- FatDia + vendas[lin,col]; fim-para;
escrever("O faturamento da ",diasemana[col]," foi ", fatDia); fim-para;
{ Letra b - Faturamento semanal da empresa } fatSemEmp <- 0;
para lin <- 1 até 3 faça
para col <- 1 até 5 faça
fatSemEmp <- fatSemEmp + vendas[lin,col]; fim-para;
fim-para;
escrever("O faturamento semanal da empresa foi ", fatSemEmp);
{ Letra c e d - vendedor com maior faturamento semanal } MaiorFat <- 0;
para lin <- 1 até 3 faça fatSemVend <- 0;
para col <- 1 até 5 faça
fatSemVend <- fatSemVend + vendas[lin,col]; fim-para;
se (fatSemVend > MaiorFat) então MaiorFat <- fatSemVend; indice <- lin;
fim-se;
escrever("O faturamento da ", vendedoras[lin]," na semana foi ", fatSemVend);
fim-para;
escrever("A vendedora de maior faturamento semanal foi: ", vendedoras[indice]);
8) Escreva um algoritmo que lê uma matriz 5x5, calcule e mostre as somas: a) da linha 4;
b) da coluna 2;
c) da diagonal principal; d) da diagonal secundária;
e) de todos os elementos da matriz;
declare
mat : matriz [5,5] de numerico;
lin, col, som_l4, som_c2, som_dp, som_ds, soma, x, aux: numerico; inicio
para lin <- 1 até 5 faça
para col <- 1 até 5 faça ler(mat[lin,col]); fim-para;
fim-para;
{ letra a - soma da linha 4 } som_l4 <- 0;
para col <- 1 até 5 faça
som_l4 <- som_l4 + mat[4,col]; fim-para;
escrever (som_l4);
{ letra b - soma da coluna 2 } som_c2 <- 0;
para lin <- 1 até 5 faça
som_c2 <- som_c2 + mat[lin,2]; fim-para;
escrever (som_c2);
{ letra c - diagonal principal solução C1 } som_dp <- 0;
para lin <- 1 até 5 faça
para col <- 1 até 5 faça se (lin=col) então
som_dp <- som_dp + mat[lin,col]; fim-se; fim-para; fim-para; escrever (som_dp); { solução C2 } som_dp <- 0;
para x <- 1 até 5 faça
som_dp <- som_dp + mat[x,x]; fim-para;
escrever (som_dp);
{ letra d - diagonal secundária } som_ds <- 0;
aux <- 5;
para lin <- 1 até 5 faça
som_ds <- som_ds + mat[lin,aux]; aux <- aux - 1;
fim-para;
escrever (som_ds);
{ letra e - todos os elementos } soma <- 0;
para lin <- 1 até 5 faça
para col <- 1 até 5 faça
soma <- soma + mat[lin,col]; fim-para;
fim-para;
escrever (soma);