Você está na página 1de 7

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

fim

Você também pode gostar