Escolar Documentos
Profissional Documentos
Cultura Documentos
DIM320Apostila 2
DIM320Apostila 2
7.3 VETORES
As variveis indexadas que possui apenas um ndice so chamadas de vetores ou variveis compostas unidimensionais. Notao: <nome_varivel>[<ndice>] Exemplo: x[i] a varivel indexada, x o nome do vetor e i o ndice o qual deve ser sempre uma expresso inteira positiva. Exemplos:
a) A[3]: representa o terceiro elemento do vetor A. b) Nome[p]: representa o p-simo elemento do vetor Nome. c) x[2*i + 3*j - 4*k]: a avaliao da expresso entre colchetes, que dever ser um nmero inteiro positivo, dar a posio do elemento no conjunto x.
f)
c)
Para k de 1 at n faa Repita Escreva(Digite um nmero positivo:) Leia ( num[k] ) At ( num[k] >0 ) Fim_para
d) Para i de 1 at n faa Repita Escreva(Digite um nmero positivo:) Leia ( p ) At ( p > 0 ) x[i] p Fim_para
b)
c)
2)
3)
Dados dois vetores com n componentes cada, calcular o produto escalar entre eles.
Algoritmo Produto_escalar Real: x[10], y[10], pesc Inteiro: n,i Incio Repita Escreva (Quantas componentes tem cada vetor? )
Leia ( n ) At ( n>0 .E. n<=10 ) Escreva( Digite os nmeros do primeiro vetor: ) Para i de 1 at n faa Leia ( x[i] ) Fim_para Escreva ( Digite os nmeros do segundo vetor: ) pesc 0 Para i de 1 at n faa Leia ( y[i] ) pesc pesc + x[i]*y[i] Fim_para Escreva (Produto Escalar = , pesc) Fim
4)
Dados vrios nmeros inteiros e positivos imprimi-los separadamente como nmeros pares e nmeros mpares.
Algoritmo Par_mpar Inteiro: x[30], par[30], impar[30], n, k, p, i Incio Repita Escreva (Quantos nmeros?) Leia ( n ) At ( n>0 .E. n<=30 ) Escreva (Digite os, n, nmeros inteiros positivos:) p0 i 0 Para k de 1 at n faa Repita Leia ( x[k] ) At ( x[k] > 0 ) Se ( x[k]/2*2 = x[k] ) ento p p+1 par[p] x[k] seno i i+1 impar[i] x[k] Fim_se Fim_para Escreva(Nmeros pares: ) Para k de 1 at p faa Escreva (par[k]) Fim_para Para k de 1 at i faa Escreva(mpar[k]) Fim_para Fim
5)
Calcular e imprimir o conjunto interseo entre dois conjuntos numricos quaisquer dados.
Algoritmo Interseo Real: a[20], b[20], c[20]
Inteiro: m, n, i, j, k Incio Repita Escreva(Quantos nmeros tem o primeiro conjunto? ) Leia( m ) At( m>0 .E. m<=20 ) Escreva(Digite os nmeros do primeiro conjunto:) Para i de 1 at m faa Leia( a[i] ) Fim_para Repita Escreva(Quantos nmeros tem o segundo conjunto?) Leia ( n ) At( n>0 .E. n<=20 ) Escreva(Digite os nmeros do segundo conjunto:) Para i de 1 at n faa Leia( b[i] ) Fim_para k0 Para i de 1 at m faa Para j de 1 at n faa Se( a[i] = b[j] ) ento k k+1 c[k] a[i] Fim_se Fim_para Fim_para Se ( k=0 ) ento Escreva(Interseo Vazia. ) Seno Escreva(Conjunto Interseo:) Para i de 1 at k faa Escreva( c[i] ) Fim_para Fim_se Fim
6)
Pesquisa seqencial. Pesquisa seqencial ou linear o mtodo para se encontrar um elemento particular num conjunto no_classificado. Vejamos um algoritmo para ler um nmero e verificar se o mesmo se encontra num vetor com n elementos.
Algoritmo Pesquisa_sequencial Real: x[100], num Inteiro: n, i Lgico: achou Incio Repita Escreva(Quantos nmeros?) Leia( n ) At( n>0 .E. n<=100) Escreva(Digite todos os nmeros:)
Para i de 1 at n faa Leia( x[i] ) Fim_para Escreva(Digite o nmero que procura:) Leia (num) achou .F. i1 Enquanto ( i <= n .E. .No. achou )faa Se( x[i] = num) ento achou .V. seno i i+1 Fim_se Fim_enquanto Se( achou ) ento Escreva(Nmero encontrado. ) Seno Escreva(Nmero no encontrado.) Fim_se Fim
7)
Pesquisa binria. Pesquisa binria semelhante pesquisa seqencial quanto ao objetivo, sendo que os elementos do vetor esto previamente classificados segundo algum critrio. Vejamos um algoritmo, supondo que os nmeros do vetor esto classificados na ordem crescente.
Algoritmo Pesquisa_binria Real: x[100], num Inteiro: n, i, meio, alto, baixo Lgico: achou Incio Repita Escreva(Quantos nmeros?) Leia( n ) At ( n>0 .E. n<=100 ) Escreva(Digite todos os nmeros:) Para i de 1 at n faa Leia ( x[i] ) Fim_para Escreva (Digite o nmero que procura: ) Leia( num ) alto n baixo 1 achou .F. Enquanto( baixo<=alto .E. .No. achou ) faa meio (baixo + alto)/2 Se( num < x[meio] )ento alto meio 1 seno Se( num > x[meio] ) ento baixo meio + 1
seno achou .V. Fim_se Fim_se Fim_enquanto Se( achou ) ento Escreva(Nmero encontrado. ) Seno Escreva(Nmero no encontrado. ) Fim_se Fim
8)
Classificao na ordem crescente. Colocar na ordem crescente n nmeros quaisquer dados. Vamos utilizar o algoritmo conhecido como mtodo da bolha.
Algoritmo Ordem_crescente Real: x[100], aux Inteiro: n, i, j Incio Repita Escreva(Quantos nmeros?) Leia( n ) At( n>0 .E. n<=100 ) Escreva(Digite os nmeros:) Para i de 1 at n faa Leia ( x[i] ) Fim_para Para j de n at 2 passo 1 faa Para i de 1 at j 1 faa Se( x[i] > x[i+1] ) ento aux x[i] x[i] x[i+1] x[i+1] aux Fim_se Fim_para Fim_para Escreva(Vetor ordenado: ) Para i de 1 at n faa Escreva ( x[i] ) Fim_para Fim
Onde A.B o produto escalar entre os vetores A e B, mdulo do vetor A, dado por |A| = A.A . 3) 4) 5) 6) Calcular a mdia aritmtica de n nmeros reais dados. Calcular o n-simo termo da seqncia de Fibonacci.
e |A| o
Leia n nmeros maiores que 1, e imprima-os, separadamente, como primos e no-primos. Dado um vetor A com n nmeros reais, obter um outro vetor B, tambm com n nmeros, da seguinte forma: B[1] = 2*A[1] B[2] = 3*A[1] + 2*A[2] B[3] = 4*A[1] + 3*A[2] + 2*A[3] . . ( ...e assim por diante,) .
7)
Desvio padro =
( ( x[i] M ) ) / ( n 1 )
2
i=1
Onde M a mdia dos n nmeros dados. 8) 9) 10) Leia um conjunto com n nmeros e informe se existe algum elemento repetido no conjunto. Leia n nmeros quaisquer e imprima-os sem repeties. Dado um nmero inteiro positivo, do sistema decimal, obtenha o seu valor correspondente no sistema binrio.
7.4 MATRIZES
Os vetores, ou variveis compostas unidimensionais, tm como principal caracterstica a necessidade de apenas um ndice para endereamento. Uma estrutura que precise de mais de um ndice, como no caso de matrizes, ser denominada estrutura composta multidimensional. As variveis compostas multidimensionais, mais utilizadas so as bidimensionais, ou matrizes, devido sua relao direta com muitas aplicaes. A aplicao com as demais variveis indexadas, isto , com trs ndices, quatro ndices, etc., se faz por analogia a esta.
10
Exemplos:
a) b) x[2,3] : elemento de uma matriz (varivel indexada bidimensional) da segunda linha e terceira coluna (posio na matriz). mat[i+1,j-1] : os ndices podem ser expresses desde que sejam inteiras.
11
Fim_para Fim_para c) Para i de 1 at m faa Para j de 1 at n faa Se ( i > j ) ento a[i,j] 2*i + 3*j seno Se ( i = j ) ento a[i,j] i**2 seno a[i,j] 5*i**3 2*j**2 Fim_se Fim_se Fim_para Fim_para
b)
b)
12
Fim_para Fim_para
2)
Dada uma matriz quadrada de ordem n>3, calcular: a) a soma dos elementos da primeira linha; b) a soma dos elementos da terceira coluna; c) a soma dos elementos da diagonal principal; d) a soma dos elementos da diagonal secundria; e) a soma de todos os elementos da matriz.
Algoritmo Clculos_matriciais Real: mat[15,15], sa, sb, sc, sd, se Inteiro: n, i, j Incio Repita Escreva(Digite a ordem da matriz >3:) Leia ( n ) At ( n>3 .E. n<=15 ) Escreva(Digite os elementos da matriz por linha:) Para i de 1 at n faa Para j de 1 at n faa Leia( mat[i,j] ) Fim_para Fim_para sa 0 sb 0
13
sc 0 sd 0 se 0 Para i de 1 at n faa sa sa + mat[1,i] sb sb + mat[i,3] sc sc + mat[i,i] sd sd + mat[i,n i + 1] Para j de 1 at n faa se se + mat[i,j] Fim_para Fim_para Escreva(sa=,sa, sb=,sb, sc=,sc, sd=,sd, se=, se) Fim
3)
Dada uma matriz quadrada de ordem n, calcular e imprimir a soma dessa matriz com a sua transposta.
Algoritmo Soma_transposta Real: x[10,10], y[10,10] Inteiro: n, i, j Incio Repita Escreva(Digite a ordem da matriz <=10) Leia ( n ) At ( n>0 .E. n<=10) Escreva(Digite os nmeros da matriz:) Para i de 1 at n faa Para j de 1 at n faa Leia( x[i,j] ) Fim_para Fim_para Para i de 1 at n faa Para j de 1 at n faa y[i,j] x[i,j] + x[j,i] Fim_para Fim_para Escreva(Matriz resultante:) Para i de 1 at n faa Para j de 1 at n faa Escreva( y[i,j] ) Fim_para Fim_para Fim
4)
Dada uma matriz A qualquer de nmeros inteiros positivos, gerar uma matriz B tal que: B[i,j] = 0, se A[i,j] par e B[i,j] = 1, se A[i,j] mpar.
Algoritmo Matriz_B Inteiro: A[10,10], B[10,10], m, n, i, j Incio Repita Escreva(Digite o nmero de linhas e o nmero de colunas <=10:)
14
Leia ( m, n ) At( m>0 .E. m<=10 .E. n>0 .E. n<=10 ) Escreva(Digite os nmeros da matriz de inteiros positivos: ) Para i de 1 at m faa Para j de 1 at n faa Repita Leia ( A[i,j] ) At ( A[i,j] > 0 ) Se ( A[i,j]/2*2 = A[i,j] ) ento B[i,j] 0 seno B[i,j] 1 Fim_se Fim_para Fim_para Escreva(Matriz pedida:) Para i de 1 at m faa Paraj de 1 at n faa Escreva( B[i,j] ) Fim_para Fim_para Fim
5)
Obtenha o produto entre duas matrizes conformes. Obs. Dadas duas matrizes de tipos possveis de se efetuar o produto entre elas, por exemplo a matriz A do tipo m por n, e a matriz B do tipo n por p, ento obteremos uma outra matriz C do tipo m por p.
Algoritmo Produto_matricial Real: a[10,10], b[10,10], c[10,10] Inteiro: m, n, p, i, j, k Incio Repita Escreva(Digite o nmero de linhas e o nmero de colunas da primeira matriz, e tambm o nmero de colunas da segunda matriz: ) Leia ( m, n, p ) At(m>0 .E. m<=10 .E. n>0 .E. n<=10 .E. p>0 .E. p<=10) Escreva(Digite os nmeros da primeira matriz: ) Para i de 1 at m faa Para j de 1 at n faa Leia ( a[i,j] ) Fim_para Fim_para Escreva(Digite os nmeros da segunda matriz: ) Para i de 1 at n faa Para j de 1 at p faa Leia ( b[i,j] ) Fim_para Fim_para Para i de 1 at m faa Para k de 1 at p faa c[i,k] 0 Para j de 1 at n faa c[i,k] c[i,k] + a[i,j]*b[j,k]
15
Fim_para Fim_para Fiom_para Escreva(Matriz Produto: ) Para i de 1 at m faa Para j de 1 at p faa Escreva( c[i,j] ) Fim_para Fim_para Fim
Calcular a soma dos elementos de uma matriz numrica quadrada qualquer dada, que esto acima da diagonal principal. Obtenha e imprima um vetor que seja a soma dos elementos de cada coluna de uma matriz numrica qualquer dada. Verificar se uma matriz quadrada dada ou no simtrica. Gerar e imprimir a matriz quadrada de ordem n abaixo.
1 2 3 . . . n n-1 1 3 . . . n n-2 n-2 1 . . . n ... ... ... ... ... ... ... 1 1 1 . . . 1
6)
A matriz abaixo, quadrada 4x4, foi obtida de acordo com uma determinada definio para seus elementos. Faa um algoritmo que leia um nmero inteiro positivo n e imprima essa matriz com n linhas e n colunas. 3 5 7 9 4 5 8 10 5 6 7 11 6 7 8 9
16
nome e endereco podem armazenar at 40 caracteres. nomes e cidades so conjuntos (vetores) com, no mximo, 50 cadeias de caracteres, contendo, no mximo, 20 caracteres cada cadeia.
17
Como em um vetor, todos os caracteres de uma cadeia so armazenados em unidades consecutivas de armazenamento de caracteres (1 byte para cada caractere). O nmero de caracteres (ou de unidades de armazenamento) de uma cadeia o comprimento da cadeia, e a cada caractere corresponde um nmero (posio) dentro da cadeia (como o ndice nos vetores).
AEIOU E
Sada: ABCDEHIJKL
18
2)
3)
4)
19
1) 2) 3) 4)
Converta uma letra maiscula em letra minscula. Faa um algoritmo para converter uma cadeia de caracteres de letras maisculas em letras minsculas. Dado o nome completo de uma pessoa imprimir apenas o primeiro nome. Dado o nome completo de uma pessoa imprimir apenas as iniciais seguidas cada uma de ponto e espao. Dada uma cadeia de caracteres, inserir um caractere dado numa posio da cadeia tambm dada e imprimir a nova cadeia. Dada uma cadeia de caracteres, eliminar o caractere de uma posio dada nessa cadeia e imprimir a nova cadeia. Dado um texto com, no mximo, 80 caracteres, diga quantas consoantes existem no texto. Dado um texto com, no mximo, 80 caracteres, diga quantas vogais existem no texto. Calcular o custo de um telegrama, onde os 30 primeiros caracteres custam 9 centavos cada, os demais, a partir da, custam 6 centavos cada e os espaos em branco no so cobrados. Dado um nmero inteiro positivo do sistema binrio, converte-lo no nmero correspondente do sistema decimal.
5)
6) 7) 8) 9)
10)
20