Upload
nevespatricia9995
View
590
Download
0
Embed Size (px)
Citation preview
EXERCÍCIOS SOBRE A SINTAXE DA LINGUAGEM DE PROGRAMAÇÃO PASCAL
Indique os erros em cada um dos programas Pascal abaixo. A partir dos erros encontrados, elabore um resumo sobre as regras de uso correto dos componentes da linguagem Pascal.
1. Declaração de variáveis/Constantes, Comando de Atribuição e Expressões.Program exemplo1;Const valor:= 90.5;Var
Unitário, total, qtde: integer;Nome: char;Teste: boolean;Valor: real;
BeginQtde:=1.5;Total:=3;Unitário:=total/qtde;Quadrado:=total**2;Nome:=’teste’;True:=false;Letra1:=’A’;Letra2:=’B’;Teste:=letra1>letra2;Valor:=valor*letra1;
End.
2. Funções do Pascal / Comandos de Entrada e Saída de Dados (com uso de formatação)Program Exemplo2Var
Resp, outro; char;Num1, num2: integer;Resultado: real;
BeginWrite(‘Entre com os números para o cálculo’, num`, num2);Resultado:=succ num1 + sqrt num2;Write(resp);Write(‘Deseja ver os resultados? (‘S’/ ‘N’)’);Readln(resp);Resp:=’S’;Write(‘O resultado da expressão foi resultado’:6:3);Writeln(‘Deseja outro calculo?’);Upcase(outro):=outro;
End.
3. Estrutura de Seleção (IF.....THEN.....ELSE)Program Exemplo3;Var
Sexo, resp_carta: char;Idade, num_reserv, mulheres, num_carta, d_val, m_val, a_val: integer;
Begin
Read(sexo, idade);If sexo=’M’ and idade>=’18’ then
Write(‘Digite o número da carteira de reservista: ‘);Read(num_reserv);
ElseMulheres:=mulheres+1;Write(‘Possui carteira de motorista?`);Read(reso_carta);If resp_carta = ‘S’ or ‘s’ then
Write(‘Digite o número da carteira e a data de validade: ‘);Read(num_carta, d_val, m_val, a_val);If a_val=2013 then
Write(‘Atenção! Você deve renovar sua carteira! ‘);Senão
Write(‘Você deve tirar sua carteira para poder dirigir !’);End.
4. Estrutura de Repetição (WHILE .... DO)Programa Exemplo4;Var
Peso_ideal, altura: real;Sexo: char;
BeginWrite(‘Entre com sua altura (-1 para encerra): ‘);Read(altura);While altura <> 1 doBegin
Write(‘Sexo: ‘);Read(sexo);While (sexo<>’F’) or (sexo<>’f’) or (sexo<>’M’) or (sexo<>’m’) do
Write(‘erro: Digite M ou F para o sexo!’);Read(sexo);
If sexo=’M’ or sexo=’m’ then peso_ideal:=(72.7*altura)-58;
elsepeso_ideal:=(62.1*altura)-44.7;
write(‘Seu peso ideal é: ‘, peso_ideal);End;
End.
ESTRUTURA DE CONTROLE SEQUENCIAL
1. Faça um algoritmo que receba o salário-base de um funcionário, calcule e mostre o salário a receber, sabendp-se que esse funcionário tem gratificação de 5% sobre p salário-base e paga imposto de 7% sobre o total.
Solução 1:salBase, salReceber, grat, imp: real;Início
Leia(salBase)
Grat<-salBase*5/100salReceber<-salBase+grat-impImp<-SalReceber*7/100salReceber<-salReceber-impEscreva(salReceber)
FimSolução 2:salBase, salRecebre, Imp: real;Início
Leia(salBase)SalBase<-(salBase*5/100)Imp<-salReceber*7/100salReceber<-salReceber-impEscreva(salReceber)
Fim
2. Faça um algoritmo que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mortre:
a. A idade dessa pessoa;b. Quantos anos ela terá em 2005.
Solução 1:Ano_atual, ano_nascimento, idade_atual, idade_2005: inteiroInício
Leia(ano_nascimento, ano_atual)Idade_atual<-ano_atual-ano_nascimentoIdade_2005<-2005-ano_nascimentoEscreva(idade_atual)Escreva(idade_2005)
Fim
3. Algoritmo do triângulo: Faça um algoritmo para ler a base e a altura do triângulo. Em seguida, escreva a área do mesmo. Área=(Base*Altura)/2
Algoritmo Triangulo;Var
Base, altura, área: real;Begin
Write(‘Digite a base do triângulo: ‘);Readln(base);Write(‘Digite a altura do triângulo: ‘);Readln(altura);Área:=(base*altura)/2;Write(‘A área do triângulo é: ‘, área:10:2);
End.4. Algoritmo Preço de Automóvel: O preço de um automóvel é calculado pela soma do
preço de fábrica com o preço dos impostos (45% do preço de fábrica) e a percentagem do revendedor (28% do preço de fábrica). Faça um algoritmo que leia o
nome do automóvel e o preço de fábrica e imprima o nome do automóvel e o preço final.Program Preco;Var
Nome; string;Preco_fabrica, preco_final, imposto: real;
BeginWrite(‘Digite nome: ‘);Readln(nome);Write(‘Digite preço de fábrica: ‘);Readln(preco_fabrica);Imposto:=preco_fabrica*(0.45 + 0.28);Preco_final:=preco_fabrica+imposto;Writeln(‘Automóvel: ‘, nome);Writeln(‘Preço de venda: ‘,preco_final:10:2);
End.
ESTRUTURA CONTROLE CONDICIONAL (OU DE SELEÇÃO)
1. Construa um algoritmo que receba a idade do usuário e verifique se ele tem mais de 21 anos.
Program Pzim ;var
idade: integer; Begin
writeln(‘Qual a sua idade?’);readln(idade);if (idade>=21) then
writeln(‘Você é de maior!!’)elsewriteln(‘Você é de menor!!’);
End.
2. Construa um algoritmo que receba três números inteiros e verifique qual o maior.Program Pzim ;var
n1, n2, n3: integer; Begin writeln(‘Entre com o primeiro número:’); readln(n1); writeln(‘Entre com o segundo número:’); readln(n2); writeln(‘Entre com o terceiro número:’); readln(n3); if (n1>n2) then begin if (n2>n3) then begin writeln(‘O ‘, n1, ‘ é o maior.’);
end else if (n1>n3) then begin writeln(‘O ‘, n1, ‘ é o maior.’); end else begin writeln(‘O ‘, n3, ‘ é o maior.’); end; end else if (n2>n3) then begin writeln(‘O ‘, n2, ‘ é o maior.’); end else begin writeln(‘O ‘, n3, ‘ é o maior.’); end; End.
3. Construa um algoritmo que calcule o peso ideal de uma pessoa. Dados de entrada: altura e sexo. Fórmulas para o cálculo do peso:Peso ideal de homem = (72,7 x altura) – 58Peso ideal de mulher = (62,1 x altura) – 44,7
Program Pzim ;var
sexo: integer;peso, altura: real;
Begin writeln(‘Sexo(1-Homem 2-Mulher):’); readln(sexo); //analisa se escolha de sexo é válida
if ((sexo<1) or (sexo>2)) then begin writeln(‘Opção inválida!’); end else begin writeln(‘Qual a sua altura?’); readln(altura); if (sexo=1) then //usuário é homem begin peso:=(72.7*altura)-58; end else //usuário é mulher begin peso:=(62.1*altura)-44.7; end; end; writeln(‘Seu peso ideal é ‘,peso); End.
4. Construa um algoritmo que receba o código de um produto e o classifique de acordo com a tabela abaixo:CÓDIGOS DE CLASSIFICAÇÃO1 – Alimento não-perecível2 a 4 – Alimento perecível
5 e 6 – Vestuário7 – Higiene pessoal8 a 15 – Limpeza e utensílios domésticosQualquer outro código Inválido
Program Pzim ;var
cod: integer; Begin writeln(‘Código do produto:’); readln(cod); Case (cod) of 1: writeln(‘Alimento não-perecível’); 2,3,4: writeln(‘Alimento perecível’); 5,6: writeln(‘Vetuário’); 7: writeln(‘Higiene pessoal’); 8,9,10,11,12,13,14,15: writeln(‘Limpeza e utensílios domésticos’) else writeln(‘Código Inválido!’); end; End.
5. Construa um algoritmo que leia uma quantidade indeterminada de números inteiros positivos e identifique qual foi o maior número digitado. O final da série de números digitada deve ser indicada pela entrada de -1.
Program Pzim ;var
n, maior: integer; Begin maior:=0; repeat writeln(‘Entre com um número inteiro positivo (-1 para terminar):’);
readln(n); if (n>maior) then begin maior:=n; end; until (n<0); writeln(‘O maior é: ‘,maior); End.
6. Construa um algoritmo que leia três valores inteiros e os imprima em ordem crescente.
Program Pzim ;var
n1,n2,n3: integer; Begin writeln(‘Digite o primeiro número:’); readln(n1); writeln(‘Digite o segundo número:’); readln(n2); writeln(‘Digite o terceiro número:’); readln(n3); if (n1>n2) then begin if (n1>n3) then
begin if (n2>n3) then begin writeln(‘Números em ordem crescente: ‘,n3, n2, n1); end else writeln(‘Números em ordem crescente: ‘, n2, n3, n1); endelse
writeln(‘Números em ordem crescente: ‘, n2, n1, n3); end else if (n2>n3) then begin if (n1>n3) then begin writeln(‘Números em ordem crescente: ‘, n3, n1, n2); end else writeln(‘Números em ordem crescente: ‘, n1, n3, n2); end else writeln(‘Números em ordem crescente: ‘, n1, n2, n3); End.
7. Construa um algoritmo que receba um número inteiro e verifique se o mesmo é primo.
8. Dada a fórmula: H = 1 + ½ + 1/3 + ¼ + ... + 1/n. Construa um algoritmo que calcule o número H, dado o número inteiro N.
9. Construa um algoritmo que calcule o fatorial de um número N inteiro e positivo (N!). Saiba que:N! = 1x2x3x...x(n-1)xn0! = 1
10. A série de Fibonacci é formada pela seguinte sequencia: 1,1,2,3,5,8,13,21,34,55,.... Construa um algoritmo que gere a série de Fibonacci até o vigésimo termo.
11. Construa um algoritmo que leia cinco números inteiros e identifique o maior e o menor.
12. Construa um algoritmo que imprima a tabela de equivalência de graus Fahrenheit para centígrados. Os limites dão de 50 a 70 graus Fahrenheit com intervalo de 1 grau.Fórmula: C = 5/9(F-32)
13. Uma rainha requisitou os serviços de um monge, o qual exigiu o pagamento em grãos de trigo da seguinte maneira: os grãos de trigo seriam dispostos em um tabuleiro de xadrez, de tal forma que a primeira casa do tabuleiro tivesse um grão, e as casas seguintes o dobro da anterior. Construa um algoritmo que calcule quantos grãos de trigo a Rainha deverá pagar ao monge.
14. Construa um algoritmo que apure uma eleição com três candidatos. O algoritmo deve realizar as seguintes tarefas:Calcular o total de votos para cada candidato;Calcular a quantidade de votos nulos;Calcular a quantidade de votos em branco;Calcular o percentual de votos em branco e nulos em relação ao total;A votação deve obedecer as seguintes convenções:1,2,3 => votos dos candidatos;4 => votos em branco;
5 => votos nulos;0 => encerramento da apuração;
15. José tem 1,50m e cresce 2 centímetros por ano. Pedro tem 1,10m e cresce 3 centímetros por ano. Construa um algoritmo que calcule em quantos anos Pedro será maior que José.
16. Faça um algoritmo que calcule a média ponderada de um aluno, a partir de duas 3 notas obtidas no curso, sabendo-se que a primeira avaliação tem peso 2, a segunda tem peso 4 e a terceira tem peso 4. Mostre, ao final, a mensagem: “A MÉDIA FINAL DE ... FOI ...”. Informar também se o aluno foi aprovado, mostrando a mensagem “APROVADO” caso a nota final seja maior ou superior a 7,0.
Aluno: caracter;nota1, nota2, nota3, media: realp1, p2, p3: inteiro;Início
P1<-2;P2<-4;P3<-4;Leia(aluno);Leia(nota1, nota2, nota3);Media(nota1*p1+nta2*p2+nota3*p3)/10;Escreva(“A média de ”, aluno, “foi “, media);Se (media>=7,0) então
Escreva(“Aprovado”);Fim se
Fim
17. Elabore um algoritmo usando notação de fluxograma que verifique se um dado número inteiro positivo é PAR ou ÍMPAR.
F
V
Fim
Num “ eh ímpar”
Num “ eh par”
Num mod 2
Num
Início
18. Modifique o algoritmo da média do aluno para informar:APROVADO............... caso a nota final esteja no intervalo [10, 7]RECUPERAÇÃO.......... caso a nota final esteja no intervalo [5, 7]REPROVADO.............. caso a nota final esteja no intervalo [0, 5]
Aluno: caracter;Nota1, nota2, nota3, media: real;Inicio
Leia(aluno);Leia(nota1, nota2, nota3);Media<-(nota1*0.2+nota2*0.4+nota3*0.4)Escreva(“A média de”, aluno, “foi “, media);Se (media>=7,0) então
Escreva(“Aprovado”);Senão
Se(media<7,0 e media>=5,0) entãoEscreva(“Recuperação);
SenãoEscreva(“Reprovado”);
Fim se;Fim se;
Fim
19. Faça um algoritmo que leia 2 valores numéricos e um símbolo. Caso o símbolo seja um dos relacionados abaixo efetue a operação correspondente com os valores. Atenção para a divisão por 0!
“+” operação de soma“-“ operação de subtração“*” operação de multiplicação“/” operação de divisão
Num1, num2: real;Operador: caracter:Início
Leia(num1, num2);Leia(operador);Escolha operador
Caso “+”: escreva(num1+num2);Caso ”-“: escreva(num1-num2);Caso “*”: escreva(num1*num2);Caso “/”: Se num2<>0 então
Escreva(num1/num2)Senão
Escreva(“Divisão indefinida”);Fim se
Fim escolha;Fim
20. Dados 3 valores A, B, C, verifique se podem ser valores de lados de um triângulo e, se for, determine se o triângulo é equilátero, isósceles ou escaleno.
21. Sejam 3 números distintos, A, B, C. Coloque-os em ordem crescente, utilizando seleção encadeada (ou aninhada).
22. Algoritmo 3 Menores: Faça um algoritmo que leia 3 números inteiros e imprima o menor deles.Program Menor_2;Var
N1, n2, n3, menor: integer;Begin
Clrscr;Writeln(‘Digite 3 valores:’);Read(n1, n2, n3);If (n1<n2) and (n1<n3) then
Menor:=n1;Else
If (n2<n1) and (n2<n3) thenMenor:=n2;
ElseMenor:=n3;
Writeln(‘O menor dos valores é: ‘,menor);End.
23. Algoritmo Salário: Uma empresa tem para um determinado funcionário uma ficha contendo o nome, número de horas trabalhadas e o no de dependentes de um funcionário. Considerando que:
a. A empresa paga 12 Reais por hora e 40 Reais por dependentes;b. Sobre o salário são feitos descontos de 8,5% para o INSS e 5% par IR;
Faça um algoritmo para ler o Nome, número de horas trabalhadas e número de dependentes de um funcionário. Após a leitura, escreva qual o Nome, salário bruto, os valores descontados para cada tipo de imposto e finalmente qual o salário líquido do funcionário:Program Salario;Uses
Crt;Var
Nome: string;Numhora, salBruto, salliq: real;Numdep: integer;
BeginClrscr;Write(‘Digite o nome do funcionário: ‘);Read(nome);Write(‘Número de horas trabalhadas: ‘);Read(numhora);Write(Número de dependentes: ‘);
Read(numdep);Writeln;Salbruto:=(12*numhora)+(40*Numdep);Salliq:=salbruto-((salbruto*0.085)+(salbruto*0.05));Write(‘Nome do funcionário: ‘, nome);Writeln;Write(‘Salário Líquido: ‘, salliq);
End.
ESTRUTURA CONTROLE REPETIÇÃO
1. Receber 3 valores numéricos em 3 variáveis A, B e C, e trocar os valores entre as variáveis de forma que, ao final do algoritmo, a variável A possua o menor valor e a variável C o maior.
2. Dado um número inteiro de segundos, mostrar a quantidade de horas, minutos e segundos correspondentes.
3. Considere o seguinte problema:Queremos calcular a média final da segunda unidade dos alunos da 6ª série. Os 40 alunos realizaram três provas. A primeira prova teve peso 2.0, a segunda teve peso 4.0 e a terceira, peso 4.0.I – Ates de elaborar o algoritmo, responda as perguntas a seguir:a) Qual o objetivo do algoritmo?b) Quais são os dados de entrada?c) Qual será o processamento a ser utilizado?d) Quais serão os dados de saída?e) Existem restrições/regras específicas do problema?
II – Agora elabore a parte de declaração de dados do algoritmo, usando pseudocódigo. Crie variáveis e constantes. Lembre que os identificadores devem ser menmônicos!
III – Agora elabore um algoritmo para solucionar o problema. Mesmo sem conhecer as estruturas de controle do Portugol você pode elaborar um algoritmo usando notação que quiser (texto em português, desenhos etc).
IV – Seu algoritmo está correto? Como você pode conferir? Aponte os erros encontrados.
4. Seja a série S= 1/1 – 2!/4 + 3!/9 – 4!/16 + 5!/25 – 6!/36 ... – 10!/100a. Elabore um algoritmo, usando notação de fluxograma, que determine o valor
de S para 10 termos.b. Faça um teste exaustivo do algoritmo feito no item (a) para os 3 primeiros
termos de S, usando uma tabela como no modelo abaixo:Var 1 var2 var3 condição... ... ... ...
5. Escreva um algoritmo em pseudocódigo que receba um número inteiro positivo N e apresente um quadro de números como o que se segue abaixo. Este é o caso de N=5. Considere que o string ‘/n’ indica salto de linha e use o comando escreva (‘/n’) pra executar a ação de saltar uma linha, a fim de imprimir números numa nova linha.1 2 3 4 52 3 4 5 63 4 5 6 74 5 6 7 85 6 7 8 9
6. Desejamos efetuar uma análise estatística a respeito dos livros vendidos por uma livraria em uma determinado mês. Para cada livro são fornecidas as seguintes informações: título do livro, tipo (F=Ficção / N=Não-Ficção / T=Técnico-Científico), preço unitário de venda e quantidade de exemplares vendidos no mês.Elabore um algoritmo em pseudolinguagem que leia as informações sobre os livros e ao final, mostre o seguinte relatório:
a. Quantidade de exemplares de cada tipo (Ficção, Não-Ficção, Técnico-Científico) vendidos no mês;
b. Média de preços de venda de livros por tipo;c. Nome do livro mais vendido com eu preço de venda (Obs.: é preciso
considerar empates);7. O algoritmo abaixo lê um conjunto de CPFs de n pessoas de uma região
(consideramos que o número de n pessoas é sempre maior ou igual a dois) e informa se os CPFs estão organizados em ordem crescente ou decrescente. A leitura dos CPFs deve ser interrompida logo que se identifiquem que eles não estão organizados em ordem crescente ou decrescente (isto é, estão em ordem randômica).Verifique o algoritmo e corrija os 9 erros existentes, acrescentando ou corrigindo os comandos. Não é necessário reescrever todo o algoritmo.
Cpf, menor, maior: inteiro;Cont: real;Decresente, crescente: caracter;Início
Escreva (‘Entre com a quantidade de CPFs do conjunto (maior que 1):’);Leia(n);Escreva(‘Entre um número de CPF:’);
Leia(cpf);Menor<-cpf;Maior<-cpf;Crescente<-verdadeiro;Decrescente<-verdadeiro;Repita
Escreva(‘Entre com um número de CPF:’);Leia(cpf);Se decrescente e (cpf< menor) então
Menor<-cpf;Senão
Decrescente<-falso;Se (cpf> maior) ou crescente então
Cpf<-maior;Senão
Crescente<-falso;Cont<-cont+1;
Até (cont>n) ou not crescente ou not decrescente;Se crescente então
Escreva(‘Os números de CPFs estão em ordem crescente’);Senão
Se decrescente entãoEscreva(‘Os números de CPFs estão em ordem decrescente’);
SenãoEscreva(‘Os números de CPFs estão em ordem randômica’);
Fim.
8. Algoritmo Média Valor: dado uma série de 20 valores reais, faça um algoritmo que calcule e escreva a média aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser atribuída 10 para a média.Program Media_20Var
Conta: integer;Media, num, soma: real;
BeginClrscr;Conta:=0;Soma:=0;Writeln(‘Digite 20 numeros’);While conta<20 doBegin
Read(num);Soma:=soma+num;Conta:=conta+1;
End;Media:=(soma/20);If media > 8 then
Writeln(‘Média = 10’);Else
Writeln(‘A média é: ‘, media);End.
9. Algoritmo Média Maior que 4: dado um conjunto de n registros cada registro contendo um valor real, faça um algoritmo que calcule a média dos valores maiores que 4.Program Maior4;Uses
CRT;Var
N, aux: integer;Soma,media, numero: real;
BeginClrscr;Write(‘Digite valores diferentes de 999’);Writeln;Aux:=0;Soma:=0;Read(numero);While numero<>999 doBegin
If numero > 4 thenBegin
Soma:=soma+numero;Aux:=aux+1;
End;Read(numero);
End;Media:=(soma/aux);Write(‘Média= ‘,media);
End.
MANIPULAÇÃO DE CADEIAS DE CARACTERES
1. Escreva um programa em Pascal para ler 20 nomes de pessoas na ordem dreta (com até 30 caracteres cada) e imprima os nomes como foram lidos e na forma ‘sobrenome, nome’.
2. Escreva um programa em Pascal para ler frases com até 80 caracteres e determinar se cada frase é um palíndromo perfeito ou não. Encerrar o processamento quando uma mesma frase estiver repetida em linhas adjacentes de entrada. Sugestão: eliminar espaços em branco e demais caracteres não alfabéticos antes de efetuar a verificação. Exemplo de palíndromo: ‘socorram-me, subi no ônibus e Marrocos.
3. Escreva um programa em Pascal para determinar as formas nominais e para conjugar verbos regulares de qualquer conjugação nos vários tempos verbais simples. Estabeleça um diálogo amigável com o usuário, solicitando o verbo e informações para direcionar o processamento.
4. Escreva um programa em Pascal para ler uma lista de vários nomes de 25 caracteres e imprimir os nomes na sequencia de leitura e em ordem alfabética inversa. Encerrar o processamento quando encontrar a palavra final.
5. Escreva um programa em Pascal para determinar o primeiro e o último nomes da classificação alfabética de um grupo de vários nomes, sem ordenar o grupo de nomes. Encerrar o processamento quando encontrar o final do arquivo de entrada.
6. Escreva um programa em Pascal para determinar aquele que seria o penúltimo nome da classificação alfabética num grupo de vários nomes e sua posição relativa de entrada.
7. Escreva um programa em Pascal para criptografar uma frase com até 80 caracteres de acordo com o seguinte algoritmo: - para os primeiros 40 caracteres da frase: cada caracter deve ser substituído pelo caracter que está três posições à sua frente na tabela ASCII. Os três últimos caracteres da tabela ASCII serão substituídos pelo caracter que o
antecede em três posições na tabela ASCII. Os três primeiros caracteres da tabela ASCII serão substituídos pelos três últimos.
8. Escreva um programa em Pascal para decodificar uma frase com 80 caracteres que foi criptografada pelo programa anterior.
9. Escreva um programa em Pascal para ler os nomes dos vários amigos de uma pessoa (até encontrar o final do arquivo de entrada) e determinar as várias maneiras que essa pessoa pode convidar os amigos para jantar. Considere um máximo de 20 amigos.
10. Escreva um programa em Pascal que converta um número inteiro positivo de até 6 dígitos em um número romano. Projete o programa de forma que possa executá-lo repetidamente, até que o valor zero seja fornecido pelo utilizador.Ex.:Entrada Saída5 V12 XII50 L100 C350 CCCL
11. Escreva um programa em Pascal para ler um número em algarismos romanos e determinar seu correspondente em algarismos arábicos.
12. Escreva um programa em Pascal para ler um número real com até 10 dígitos (duas casas decimais) representando uma quantia real e escrever por extenso esta quantia.
13. Escreva um programa em Pascal para ler o nome completo de várias pessoas (até encontrar o final do arquivo) e determinar as pessoas pertencentes às várias famílias do grupo. Lembre-se que uma pessoa geralmente pertence a mais de uma família.
14. Escreva um programa em Pascal para ler as relações de até 100 nomes de pessoas que compareceram a duas festas diferentes. A segunda relação começa com `FESTA 2` e termina após a leitura dos 100 nomes ou com o final do arquivo de entrada. O programa deve imprimir uma listagem das pessoas suspeitas (comparecerem a pelo menos uma das festas); - uma listagem das pessoas pouco suspeitas (compareceram a apenas uma das festas); - uma listagem das pessoas muito suspeitas (compareceram a ambas as festas).
15. Faça uma função em Pascal que se comporte como um vírus, que receba uma frase e retorne a frase com cada uma das palavras duplicadas.
Entrada: EU VOU PARA A MARATONA DE COMPUTAÇÃOSaída: EU EU VOU VOU PARA PARA A A MARATONA MARATONA DE DE COMPUTAÇÃO COMPUTAÇÃO16.
EXERCÍCIOS ENVOLVENTO MATRIZES E VETORES
1. Faça um programa que lei dois vetores Q e R com 12 e 20 elementos inteiros (valores repetidos ou não) respectivamente e, determine o vetor W, onde W=Q R. Ao final, o programa deve mostrar o vetor W obtido, lembrando que ele não pode ter elementos repetidos.
2. Foi realizada uma pesquisa sobre a renda mensal de famílias em salvador. Para cada casa visitada foi perguntada a renda mensal. Com isso obteve-se os valores X1, X2, ... Xn (para n casas entrevistadas). Deseja-se calcular a mediana, a média aritmética simples e o desvio padrão da amostra. Use os procedimentos e fórmulas abaixo:Média=∑xi/nMediana= Mi = o valor central da variável quando os valores são dispostos em ordem (crescente ou decrescente) de magnitude.Método para calcular a mediana em valores não agrupados: Se houver um número ímpar de valores ordenados é só verificar o valor que ocupa a posição central. Se houver um número par de valores ordenados toma-se a média dos 2 valores que estão nas posições centrais.Desvio Padrão = S =√∑¿¿¿
3. Temos uma matriz ALFABETO de 15 linhas e 20 colunas onde cada elemento contém um caracter. Elaborar um programa Pascal para arrumar esta matriz de modo que as letras fiquem ordenadas segundo as linhas da matriz (da esquerda para a direita). Seu algoritmo não deve usar um vetor auxiliar!
4. Deseja-se ler duas cadeias de N caracteres cada e verificar se uma é anagrama da outra, mostrando em seguida os oares que não são anagramas com a indicação “não são anagramas” e os pares que são anagramas com a indicação “são anagramas”.Ex: ALMA LAMA – são anagramas BOLA LOBO – não são anagramas ROMA AMOR – são anagramas*Usar funções do Pascal para manipulação de cadeias de caracteres
5. Faça um programa que utilize a função Random para gerar 1000 números aleatórios e guarde-os num vetor. Ordene o vetor. Leia um número “chute”do teclado e informe se esse número está ou não no vetor. Utilize busca binária para localizar o número.
6. Receber do usuário uma lista de N nomes e idades de pessoas, onde N também é fornecido pelo usuário, e mostrar o nome e a idade da pessoa mais idosa e da pessoa mais jovem.
7. Gerar a matriz transposta de uma matriz 5x5 dada pelo usuário (a transposta é obtida permutando-se as linhas e as colunas de uma matriz).
8. Queremos efetuar a compactação de um vetor V1 de N algarismos 0 e 1 (N<=40) digitado pelo usuário (onde cada algarismo ocupa uma posição do vetor), de forma que o vetor resultante V2 de N elementos (N<=40) possua menos elementos do que o vetor original. A regra de compactação é a seguinte:
a. o primeiro elemento do vetor V2 é o número de algarismos zero que o vetor V1 contém, a partir do seu início, até o primeiro algarismo um;
b. o próximo elemento do vetor V2 é o número de algarismos um que o vetor V1 contem, a partir do último zero encontrado, até o próximo algarismo zero;
c. o próximo elemento do vetor V2 é o número de algarismos zero que o vetor V1 contém, a partir do último um encontrado, até o próximo algarismo um;
d. repete-se os passos b) e c) ate o final do vetor V1.Exemplo: para o vetor digitado V1=(0,0,0,1,1,0,1,0,1,1,0)Obtêm-se V2=(3,2,1,1,1,2,1)Fazer o algoritmo para efetuar esta compactação, recebendo o valor de N e o vetor V1 do usuário e testando se os algarismos digitados são somente 0’s e 1’s.
9. Escreva um algoritmo que calcule a interseção (valores em comum) entre os valores contidos em dois vetores V1 e V2 e armazene estes valores no vetor V3.
10. Faça um algoritmo para receber do usuário 10 nomes de postos de gasolina e os preços da gasolina em cada um deles mostrar os nomes e os respectivos preços em ordem, do menor para o maior preço. (Dica: utilizar dois vetores para armazenar os nomes e os preços).
11. Faça um algoritmo para ordenar um vetor de N inteiros (Dica: encontrar o maior de todos os inteiros e trocá-lo com o último elemento do vetor, repetindo este procedimento N vezes porém descartando, a cada interação, os elementos já ordenados).
12. Uma matriz quadrada A, cujos elementos são designados por Ai,j, é dita simétrica se Ai,j=Ai,j. Construir um algoritmo para ler uma matriz NxN do usuário (onde o valor de N também é fornecido pelo usuário) e determinar se ela é ou não simétrica.
Obs.: funções prontas podem ser utilizadas:Funções de manipulação de literais:LEN(x) – retorna o número de caracteres do literal x.INI(x, n) – retorna um iteral que consiste nos n primeiros caracteres do literal x.FIM(x, n) – retorna um literal que consiste nos n últimos caracteres do literal x.
Operador de concatenação |
Funções de manipulação de inteirosTRUNCA(x)
13. Elabore um programa que efetue a multiplicação de duas matrizes A(3x4) e B(4x3) de números inteiros, onde a matriz A tem valores constantes e a matriz B tem seus valores fornecidos pelo usuário. O programa deve mostrar ao final, a matriz produto.Matriz A: 2 11 8 70
4 22 5 12
3 13 6 6614. Uma locadora de vídeo com 2 filiais precisa reorganizar seu cadastro de clientes, pois
existem duplicações de cadastro de clientes em cada filial. E ela também deseja saber quais os clientes que locam filmes nas duas filiais. Faça um programa (com ou sem o uso de procedimentos) que, usando duas listas de clientes Filial1 e Filial2, retorne uma única lista com todos os clientes da locadora, aparecendo somente uma vez e outra lista com os clientes que locam filmes nas duas filiais (também aparecendo somente uma vez).A locadora mantém as seguintes informações de cada cliente: nome, nuúmero de identidade e nomes dos dependentes (Máx. 3 dependentes).Obs 1: Não é preciso elaborar o cadastro de clientes (inserção de elementos em Filial’ e Filial2). Considere que já está feito.Obs 2: Considere que o cadastro de clientes está duplicado quando o nome do cliente aparece mais de uma vez.
15. Dada uma sequencia de n números reais, determinar os números que compõem a sequencia e o número de vezes que cada um deles ocorre na mesma.Exemplo: n=8Sequencia: -1.7, 3.0, 0.0, 1.5, 0.0, -1.7, 2.3, -1.7Saída:-1.7 ocorre 3 vezes3.0 ocorre 1 vez0.0 ocorre 2 vezes1.5 ocorre 1 vez2.3 ocorre 1 vez
16. Dadas duas sequencias com n números inteiros entre 0 e 9, interpretadas como dois números inteiros de n algarismo, calcular a sequencia de números que representa a soma dos dois inteiros:Exemplo: n=81ª. Sequencia 8 2 4 3 4 2 5 12ª. Sequencia +3 3 7 5 2 3 3 7
1 1 6 1 8 6 5 8 817. Desafio: Você já jogou campo minado? Faça um programa que leia uma matriz 20 x
20 de caracteres do teclado. Cada caracter pode ser: * (asterisco) representa uma bomba na coordenada lida; - (traço) representa um local sem bomba. Crie uma matriz de inteiros 20 x 20 que contenha para cada posição [i,j] o número de bombas na vizinhança. Imprima essa matriz na tela. Cada posição tem no máximo 8 vizinhos (as diagonais contam). Veja o exemplo para uma matriz 5x5:Entrada:* - - - -- - - - -* * * * *- - - - ** - - - *Saída:0 1 0 0 0
3 4 3 3 21 2 2 3 23 4 3 5 30 1 0 2 1