Ficha de Trabalho N.º5 Soluções Propostas

Documentos relacionados
Aula Anterior. Decomposição algorítmica (continuação)

Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18. Para limite de n até 2 (* passagens de 1 até (n-1) *)

Exercícios. Resposta: a) var valor: real; i: integer. b)

LISTA 14 Gabarito. 1) Preparar um algoritmo para calcular a soma de 100 termos da seguinte série:

Aulas Anteriores. Detalhes da linguagem de programação

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Estrutura de Decisão - Case

Exercícios sobre o Capítulo III

Introdução à Ciência da Computação

Lista de Exercícios 05 Estruturas de Dados Homogêneas - Matrizes

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

Estruturas de Repetição

Linguagem de programação: Pascal

VARIÁVEIS INDEXADAS VETORES E MATRIZES

1. [VETOR][SALA] Cálculo da média aritmética de 10 valores armazenados em um vetor.

LISTA DE EXERCÍCIOS O que será escrito quando os algoritmos/trechos de algoritmos abaixo forem executados (fazer no papel)?

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Programação de Computadores

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

Ficha de Trabalho N.º6 Soluções Propostas

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Computação Eletrônica

Métodos de Programação I Ana Maria de Almeida

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Programação Universidade da Beira Interior Departamento de Informática 2007/08

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

Linguagem Pascal. Definição e Tipos de Dados. Professora Lara Popov Zambiasi Bazzi Oberderder. Linguagem PASCAL 1

Algoritmos e Técnicas - Estruturas de Controle de Fluxo Laboratório

Estrutura Condicional em Pascal

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Capítulo III : A Linguagem Pascal Estruturas de Controlo

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

LISTA DE EXERCÍCIOS: 1ª Unidade

Lista 2 TP060. Exercícios Vetores

Agregado Homogêneo e Heterogêneo

Aula 10: Introdução a Vetores e Matrizes

Fundamentos de Programação 1

Disciplina Programação Prof. Esp. Armando Hage. Programação em Turbo Pascal

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Laboratório de Programação A Exercícios sobre vetores e matrizes

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

3. 1. Teste no Início do Ciclo (Repetição enquanto ):

Exercícios: Vetores e Matrizes

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente.

Exercícios Data Modeling

Introdução à Programação. Strings

Notas de Aula de Algoritmos e Programação de Computadores

Refinamentos sucessivos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

ENQUANTO condição FAÇA comando 1. ENQUANTO condição FAÇA INÍCIO comando 1; comando 2 ; comando 3 FIM ENQUANTO X < Y FAÇA INÍCIO FIM

ALGORITMOS VARIÁVEIS E OPERADORES. Prof. Angelo Augusto Frozza, M.Sc.

Elementos básicos das linguagens de programação

Variáveis indexadas Vectores e Matrizes. APROG (Civil) Aula 12

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Transcrição:

Programação de Computadores Engenharia Electrotécnica 1º Ano - 1º Semestre Instituto Politécnico de Viseu Escola Superior de Tecnologia Ficha de Trabalho N.º5 Soluções Propostas 1 - Elabore um programa que leia um vector de n elementos inteiros (em que n é um valor inteiro entre 2 e 9 especificado pelo utilizador) e apresente no monitor os elementos pela ordem inversa. program Ordem_Inversa; {apresenta no monitor os elementos pela ordem inversa} type vector=array[1..9] of integer; var i,n: integer; numeros:vector; write(' Quantos elementos tem o vector (2 a 9)?'); write('digite o elemento ', i,' : '); readln(numeros[i]); writeln('elementos por ordem inversa:'); write(' ',numeros[n+1-i]); 2 - Elabore um programa que, dado um array de 8 elementos, calcule a soma desses elementos. Os elementos devem ser inteiros dados pelo utilizador. program somavaloresarray; {Determina a soma de um vector com 8 elementos} var i, soma: integer; numeros: array [1..8] of integer; for i := 1 to 8 do write('digite o ',i,'º elemento: '); readln(numeros[i]); end ; soma := 0; for i := 1 to 8 do soma := soma + numeros[i]; writeln(' A soma dos 8 elementos é ',soma);

3 - Elabore um programa que, considerando um vector com 6 inteiros, determine a soma dos elementos de ordem par. program somavaloresarray; {Determina a soma dos elementos de ordem par de um vector com 6 elementos} var i, soma: integer; numeros: array [1..6] of integer; for i := 1 to 6 do write('digite o ',i,'º elemento: '); readln(numeros[i]); soma := 0; for i := 1 to 6 do { ou for i := 1 to 3 do } if (i mod 2 = 0) then { soma := soma + numeros[2*i];} soma := soma + numeros[i]; writeln('a soma dos elementos de ordem par é ',soma); 4 - Elabore um programa que peça um array com n elementos inteiros e determine o valor máximo, o valor mínimo e as respectivas posições. program maxminarray; {Determina o maximo e o minimo de um vector com N elementos} const maximo=100; var i, n, imax, imin, max, min: integer; numeros: array [1..maximo] of integer; write('quantos elementos tem o array? '); write('digite o ',i,'º elemento: '); readln(numeros[i]) imax := 1; { inicialização das variáveis } imin := 1; max := numeros[imax]; min := numeros[imin]; for i := 2 to n do if numeros[i] > max then imax := i; max := numeros[imax] end else if numeros[i] < min then imin := i; min := numeros[imin] writeln('o maximo do vector é ',max, ' ocorre na posição ',imax); writeln('o minimo do vector é ',min, ' e ocorre na posição ',imin); 2/12

{ Outra forma de fazer o mesmo...} program maxminarray2; { Versão Alternativa } const maximo=100; var i, n, imax, imin, max, min: integer; numeros: array [1..maximo] of integer; write('quantos elementos tem o array? '); write('digite o elemento ', i, ': '); readln(numeros[i]) { inicialização das variáveis } imax := 1; imin := 1; for i := 2 to n do if numeros[i] > numeros[imax] then imax := i; else if numeros[i] < numeros[imin] then imin := i; writeln('o maximo ',numeros[imax], ' e a sua posição ',imax); writeln('o minimo ',numeros[imin], ' e a sua posição ',imin); readln } 5 - Elabore um programa que determine o produto interno entre dois vectores de n componentes. program ProdutoInterno; {Determina o produto interno entre dois vectores de n componentes} const maximo=50; var i, n, prod: integer; v1,v2: array [1..maximo] of integer; write('quantos elementos tem cada array? '); write(i,'º elemento de v1, v1[',i,']= '); readln(v1[i]) write(i,'º elemento de v2, v1[',i,']= '); readln(v2[i]) prod:=0; prod:=prod+v1[i]*v2[i]; writeln('o produto interno entre os dois vectores é ',prod); 3/12

6 - Elabore um programa que leia dois vectores de n elementos cada (inteiros) e determine um terceiro com 2n elementos que contenha os elementos do primeiro vector intercalados com os do segundo vector, mas estes pela ordem inversa da original. Mostre o vector final no monitor. Considere n = 4 elementos, por exemplo: vector x = [1 3 5 7] => vector final = [1 8 3 6 5 4 7 2] vector y = [2 4 6 8] program Intercala; {Intercala os elementos de 2 vectores, o 2º por ordem inversa} const maximo=50; var i, n: integer; v1,v2: array [1..maximo] of integer; v: array [1..2*maximo] of integer; write('quantos elementos tem cada array? '); write(i,'º elemento de v1, v1[',i,']= '); readln(v1[i]) write(i,'º elemento de v2, v1[',i,']= '); readln(v2[i]) v[2*i-1]:=v1[i]; v[2*i]:=v2[n+1-i]; writeln('vectores iniciais:'); write('v1: '); write(v1[i],' '); write(' v2: '); write(v2[i],' '); writeln('vector final:'); write('v: '); for i := 1 to 2*n do write(v[i],' '); 7 - Faça um programa que, a partir de um vector de dimensão N, determine o número que aparece mais vezes bem como as posições no vector onde ele aparece. program ProcuraRep; {Determina o número queaparece mais vezes bem como as posições no vector onde ele aparece} const n=8; var i,j,maisrep,rep,num: integer; t: array [1..n] of integer; 4/12

write('introduza o ',i,'º elemento do vector: '); readln(t[i]) maisrep:=0; rep:=0; for j:=i+1 to n do if (t[j]=t[i]) then rep:=rep+1; if (rep>maisrep) then maisrep:=rep; num:=t[i]; if (maisrep>0) then writeln('o elemento mais repetido é o nº ',num); writeln(' e ocorre ',maisrep+1,' vezes,'); write('nas posições:'); if (t[i]=num) then write(' ',i); end else writeln('não há números repetidos!'); 8 - Dado um vector com N elementos, calcular a maior diferença existente entre os seus elementos. Ex: PROGRAM maior_dif; const N = 8; var a : array[1..n] of integer; i,max,min,dif : integer; A[1] A[2] A[3] A[4] A[5] 1 6 3 2 10 maior diferença = 9 writeln('introduza os ',N,' elementos dos array:'); for i:=1 to N do write('a[',i,'] = '); readln(a[i]); max:=a[1]; min:=a[1]; for i:=2 to N do if a[i] > max then max:=a[i]; if a[i] < min then min:=a[i]; dif:=max-min; writeln('a maior diferença é ',dif); 5/12

9 - Dado um vector não ordenado de números inteiros positivos, mostrar a menor diferença entre 2 elementos, bem como os respectivos números de ordem no vector. PROGRAM menor_dif; const n = 5; var Ex: a : array[1..n] of integer; i,j,men_dif : integer; A[1] A[2] A[3] A[4] A[5] 1 6 3 2 10 menor diferença = 1 posições 1 e 4 writeln('introduza os ',n,' elementos dos array:'); for i:=1 to n do write('a[',i,'] = '); readln(a[i]); men_dif:=abs(a[2]-a[1]); for i:=1 to n-1 do for j:=i+1 to n do if abs(a[i]-a[j]) < men_dif then men_dif:=abs(a[i]-a[j]); writeln('menor diferença= ',men_dif); for i:=1 to n-1 do for j:=i+1 to n do if abs(a[i]-a[j])=men_dif then writeln(' Entre ',i,' e ',j); 10 - Numa lista de N valores determinar os valores maiores que os valores adjacentes, isto é, v[i-1] <v[i] > v[i+1]. 11 - Ler um vector A não ordenado de N inteiros e mostrar o vector na mesma sequência, ignorando os valores em duplicado. O número de elementos restantes (M) é também mostrado. Ex: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] 15 31 23 15 75 23 41 15 31 85 O vector resultante seria: 15 31 23 75 41 85 M = 6 12 - Dada uma matriz NxM de elementos inteiros, determinar o valor médio dos seus elementos, o valor máximo e o valor mínimo. program operacoesmatriz; { Determina media, maximo e minimo de uma matriz} const lin=50; col=50; var i,j,n,m,max,min:integer; med:real; matriz: array[1..lin,1..col] of real; write('n: '); write('m: '); readln(m); max := -MAXINT; min := MAXINT; 6/12

med := 0; for j := 1 to m do write('elemento (',i,',',j,'): '); readln(matriz[i,j]); med := med + matriz[i,j]; if matriz[i,j] > max then max := matriz[i,j]; if matriz[i,j] < min then min := matriz[i,j]; writeln('valor médio : ', med/(n*m):4:4); writeln('valor máximo : ', max:4:4); writeln('valor mínimo : ', min:4:4); readln; 13 - Modifique o programa anterior para uma matriz tri-dimensional NxMxP. program operacoesmatriz3d; {Determina media, maximo e minimo de uma matriz tridimensional} const lin=15; col=15; profundidade=15; var i,j,k,n,m,p:integer; med,max,min:real; matriz: array[1..lin,1..col,1..profundidade] of real; write('n: '); write('m: '); readln(m); write('p: '); readln(p); max := -MAXINT; min := MAXINT; med := 0; for j := 1 to m do for k := 1 to p do write('elemento (',i,',',j,',',k,'): '); readln(matriz[i,j,k]); med := med + matriz[i,j,k]; if matriz[i,j,k] > max then max := matriz[i,j,k]; if matriz[i,j,k] < min then min := matriz[i,j,k]; writeln('a m dia : ', med/(n*m*p):4:4); writeln('o m ximo : ', max:4:4); writeln('o m nimo : ', min:4:4); readln; 7/12

14 - Escreva um programa em Pascal que leia um array bi-dimensional de valores inteiros com N linhas e M colulas e troque as linhas e colunas do array. program TranspoeMatriz; {Troca as linhas pelas colunas de uma matriz de inteiros} const lin=100; col=100; var i,j,n,m,temp:integer; matriz: array[1..lin,1..col] of integer; write('número de linhas : '); write('número de colunas: '); readln(m); for j := 1 to m do write('elemento (',i,',',j,'): '); readln(matriz[i,j]); writeln('matriz Original:'); for j := 1 to m do write(matriz[i,j]:4); writeln('matriz Transposta:'); for j := 1 to m do write(matriz[i,j]:4); 15 - Faça um programa que efectue o produto entre duas matrizes: A[m x n] e B[n x p]. Considere que m, n e p são variáveis globais com os valores 3, 2 e 2, respectivamente. 8/12

16 - Melhore o programa anterior por forma a que efectue o produto de duas matrizes de dimensão arbitrária, fornecida pelo utilizador. program MultiplicaMatriz; {Multiplicação de matrizes de inteiros} const MM=50;NN=50;PP=50; var m,n,p,i,j,k:integer; A: array[1..mm,1..nn] of integer; B: array[1..nn,1..pp] of integer; C: array[1..mm,1..pp] of integer; writeln('cálculo do produto de duas matrizes, C=AxB'); write('número de linhas da matriz A: '); readln(m); write('número de colunas da matriz A: '); write('número de colunas da matriz B: '); readln(p); writeln('introduza os elementos da matriz A: '); for i := 1 to m do for j := 1 to n do write(' Elemento (',i,',',j,'): '); readln(a[i,j]); writeln('introduza os elementos da matriz B: '); for j := 1 to p do write(' Elemento (',i,',',j,'): '); readln(b[i,j]); for i := 1 to m do for j := 1 to p do C[i,j]:=0; for k := 1 to n do C[i,j]:=C[i,j]+A[i,k]*B[k,j]; writeln('matriz Produto C=AxB:'); for i := 1 to m do for j := 1 to p do write(c[i,j]:4); 9/12

17 - Escreva um programa que leia uma frase dada pelo utilizador e a escreva pela ordem inversa. program invertestring; {Inverte texto escrito pelo utilizador.} const maximo=100; type texto = array[1..maximo] of char; var i, j: integer; frase: texto; a: char; write('escreva uma frase: '); i := 0; while not eoln do i := i + 1; read(frase[i]) readln; for j:= i downto 1 do write(frase[j]); readln 18 - Escreva um programa que leia uma string e escreva o número de vogais nela existentes. Por exemplo: Escreva uma frase: Quantas vogais tem esta frase? Número de vogais: 11 program contavogais; const maximo=100; var i, numerovogais: integer; frase: string; {Conta o número de vogais numa frase.} write('escreva uma frase: '); readln(frase); numerovogais := 0; for i:= 1 to length(frase) do case frase[i] of 'a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y': inc(numerovogais); writeln('a frase tem ', numerovogais,' vogais.'); readln; 19 - Escreva um programa que dadas duas string's, str1 e str2, como parâmetros de entrada faça a sua concatenação, devolvendo a string resultante em str1. Por exemplo, se str1 for "Aula" e str2 for "pratica" a função deverá devolver "Aulapratica" em str1. 10/12

20 - Preparar um programa que determine se uma palavra ou frase é palíndromo, isto é, uma cadeia de caracteres que seja idêntica nos dois sentidos. Ex.: ARARA PROGRAM palindromo; var palavra,inversa,caracter : string; i,lp : integer; write('palavra: ');readln(palavra); inversa:=''; lp := ord(palavra[0]);{ ou lp:=length(palavra); } for i:=1 to lp do caracter:=palavra[i]; { ou caracter:=copy(palavra,i,1); } inversa:=caracter+inversa; if palavra = inversa then write(palavra,' é palíndromo') else write(palavra,' não é palíndromo'); 21 - Elabore um programa que retire todos os A e mostre no monitor o texto depois de modificado. Ex.: Ontem ja era tarde => Ontem j er trde PROGRAM tira_car; var texto,saida,carac : string; lp,indice : integer; write('texto: ');readln(texto); lp:=ord(texto[0]);{ ou lp:=length(texto); } saida:=''; for indice:=1 to lp do carac:=texto[indice];{ ou carac:=copy(texto,indice,1); } if (carac <> 'A') and (carac <> 'a') then saida:=saida+carac; writeln( A string sem As é :,saida); 22 - Elabore um programa que calcule e mostre o número de vezes que a string AB aparece num texto. PROGRAM pesquisa_ab; var texto,carac : string; indice,lp,contador : integer; write('introduza um texto: '); readln(texto); lp:=ord(texto[0]); { ou lp:=length(texto); } indice:=1;contador:=0; while indice <= lp-1 do carac:=texto[indice] + texto [Indice+1]; { ou carac:=copy(texto,indice,2); } if carac='ab' then contador:=contador+1; indice:=indice+2; end else indice:=indice+1; writeln('ab apareceu ',contador,' vezes'); 11/12

23 - Dado um texto, faça um programa que calcule e mostre no monitor o número de vezes que aparece cada uma das letras do alfabeto nesse texto. PROGRAM freq_car; var i,c,j,l : integer; a : array[1..26] of integer; texto : string; ca : char; write( Escreva um texto: ); readln(texto); l:=texto[0]; for i:=1 to 26 do a[i]:=0; for i:=1 to l do ca:=texto[i]; c:=ord(ca); if ((c >= 65) and (c <= 90)) or ((c>=97) and (c <= 122)) then if c >= 97 then c:=c-32; j:=c-64; a[j]:=a[j]+1; for i:=1 to 26 do writeln(chr(i+64),a[i]); 12/12