Você está na página 1de 8

Universidade Federal do ABC Disciplina: Processamento da Informao (BC-0505) Professora: Vera Nagamuta Turma: A e B - Noturno

Gustavo Ponce Iman RA 21032312 Exerccios (Vetores e Matrizes) Para entrega: exerccios 2, 5, 6, 7, 8, 10, 11, 13, 14 at dia 14/05 atravs do Tidia (link Atividades -> Atividade4) Submeter o arquivo (.doc ou .odt) com as respostas (colar a soluo (cdigo) que deve ser feita no Portugol Studio ou VisuAlg).
Lembrando, a sua soluo deve contemplar as seguintes partes (utilize como estratgia de resoluo dos algoritmos, mas no necessrio escrever nas respostas dos exerccios a serem entregues):

SADA: Quais os resultados que o algoritmo dever fornecer ? ENTRADA: Quais os insumos necessrios para se obter a sada? PROCESSAMENTO: Como transformar os insumos na sada?

Vetores
2. Dadas as temperaturas que foram registradas diariamente durante uma semana, deseja-se determinar em quantos dias dessa semana a temperatura esteve acima da mdia. A soluo para esse problema envolve os seguintes passos: (a) obter os valores das temperaturas e armazenar em um vetor; (b) calcular a mdia desses valores; (c) verificar quantos deles so maiores que a mdia. programa { funcao inicio() { inteiro i, n=0, soma=0 real media inteiro temp[7] para(i=0;i<7;i++){ escreva ("Digite a "+(i+1)+" temperatura: ") leia (temp[i]) soma=soma+temp[i] } media = soma/7 escreva ("\n\nmedia da tempeatura foi: "+ (soma/7) ) escreva("\n\nTemperatura acima da media: \n") para(i=0;i<7;i++){ se (temp[i]>media){ escreva ((i+1)+" - "+temp[i]+"\n") } } } }

5. Faa um algoritmo que leia n nmeros inteiros em um vetor e procure por um nmero X, fornecido pelo usurio, no vetor. Se encontrado, a sua posio dentro do vetor deve ser mostrada. Observe que apenas a primeira ocorrncia de X procurada. programa { funcao inicio() {

inteiro n, i, x logico encontrou=falso escreva("digite o numero de vetores: ") leia(n) inteiro numero[n] para(i=0;i<n;i++){ escreva((i+1)," - Digitei o numero: ") leia (numero[i]) } escreva("Digite o valor a procurar: ") leia(x) i=0 enquanto ((encontrou==falso) e (i<n)){ se (x==numero[i]){ encontrou=verdadeiro }senao{i++} } se (encontrou==verdadeiro){ escreva(x," foi encontrado na ",(i+1)," posicao") }senao{ escreva("nao foi encontrado ", x) } } } 6. Escreva algoritmos que armazenem em um vetor de inteiros de dimenso n: (a) Os n primeiros nmeros pares; (b) Os n primeiros nmeros da sequncia de Fibonacci; A sequncia de Fibonacci e dada por: F(n) = 0, se n = 0 F(n) = 1, se n = 1 F(n) = F(n-1) + F(n-2) para o restante dos inteiros positivos (c) Os n primeiros nmeros primos. programa { funcao inicio() { inteiro n, i, x escreva("digite o numero de vetores: ") leia(n) inteiro par[n] inteiro fibo[n] inteiro primos[n] //par x=0 para(i=0;i<n;i++){ par[i]=x x+=2 } escreva ("\nPares: \n") para(i=0;i<n;i++){ escreva(par[i], ", ") } //fibonacci inteiro a=1, b=0, c=0 para(i = 0; i < n; i++){ c=a+b a=b b=c fibo[i]=c } escreva ("\nFibonacci: \n") para(i=0;i<n;i++){

escreva(fibo[i], ", ") } //primo inteiro q, primo i=0 x=1 enquanto (i<n) { primo=0 para (q = 1;q <= x; q++) { se (x%q == 0) { primo++ } } se (primo <= 2){ primos[i]=x i++ } x++ } escreva ("\nPrimos: \n") para(i=0;i<n;i++){ escreva(primos[i], ", ") } } } 7. Construa um algoritmo que simule um jogo de dados onde um dado jogado aleatoriamente 1000 vezes e os valores obtidos em cada jogada so armazenados em um vetor. Depois, conte quantas ocorrncias de cada nmero (1 a 6) foram encontradas e qual a sua porcentagem de ocorrncia. Por exemplo, se o nmero 1 aparecer 160 vezes a sua porcentagem 16%. Para gerar aleatoriamente os valores de 1 a 6, uma maneira utilizar a funo random() da classe Math da seguinte forma: dado[i] = (int) (Math.random() * 6 + 1); onde dado um vetor de inteiros. programa { funcao inicio() { inteiro dado[1000] inteiro num[6]={0,0,0,0,0,0} inteiro i, x para(i=0;i<1000;i++){ dado[i]=sorteia(6)+1 } para(i=0;i<1000;i++){ para(x=0;x<6;x++){ se (dado[i] == (x+1)){ num[x]++ } } } para(i=0;i<6;i++){ escreva ("A porcentagem do Numero ",(i+1)," ", (num[i]/10),"% \n") } } } 8. Dada uma sequncia de n nmeros reais, determinar os nmeros que compem a sequncia e o nmero de vezes que cada um deles ocorre na mesma. Exemplo: n = 8 Sequncia: -1.7, 3.0, 0.0, 1.5, 0.0, -1.7, 2.3, -1.7

Sada: -1.7 ocorre 3 vezes; 3.0 ocorre 1 vez ; 0.0 ocorre 2 vezes ; 1.5 ocorre 1 vez ; 2.3 ocorre 1 vez

programa { funcao inicio() { inteiro n,cont,repetidos,cont2 escreva("Entre com um valor n: ") leia(n) real vetor[n],a=0 para (cont=0;cont<n;cont++) { escreva("Entre com valores para o vetor: ") leia (vetor[cont]) } para(cont=0;cont<n;cont++) { para(cont2=0;cont2<n;cont2++) { se(vetor[cont] == vetor[cont2]) { repetidos++ } } se(repetidos==1) { escreva("O nmero ",vetor[cont]," ocorre ",repetidos," vez.\n") } se(repetidos>1 e a!=vetor[cont]) { escreva("O nmero ",vetor[cont]," ocorre ",repetidos," vezes.\n") a=vetor[cont] } repetidos=0 } } }

Matrizes

10. Escrever um algoritmo que leia uma matriz de inteiros de tamanho 20x30 e encontre o maior e o menor elemento da matriz.

programa { funcao inicio() { inteiro matriz[20][30] inteiro i , j

para(i=0;i<20;i++){ para(j=0;j<30;j++){ escreva ("Digite (", i, ",",j, "): ") leia (matriz[i][j]) } } // maior inteiro maior= -1000000 para(i=0;i<20;i++){ para(j=0;j<30;j++){ se (matriz[i][j]> maior){ maior=matriz[i][j] } } } // menor inteiro menor= 1000000 para(i=0;i<20;i++){ para(j=0;j<30;j++){ se (matriz[i][j]< menor){ menor=matriz[i][j] } } } escreva ("O menor numero eh ", menor, "\n") escreva ("O maior numero eh ", maior) } }
11. Escreva um algoritmo que busque um valor x, digitado pelo usurio, em uma matriz de tamanho mxn, onde m e n so as dimenses da matriz, tambm informadas pelo usurio. Caso o valor x seja encontrado na matriz, imprimir a posio em que o mesmo foi encontrado. Em caso de existirem elementos repetidos na matriz, deve ser impressa apenas a posio em que foi encontrada a primeira ocorrncia do valor x.

programa { funcao inicio() { inteiro m, n, i, j, x escreva("digite M: ") leia(m) escreva("digite N: ") leia(n) inteiro matriz[m][n] para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva ("Digite (", i, ",",j, "): ") leia (matriz[i][j]) } }

escreva("digite X: ") leia(x) logico achou=falso para(i=0;i<m;i++){ para(j=0;j<n;j++){ se(x==matriz[i][j]){ se(achou==falso){ escreva ("O ", x, " foi encontrado em: (",i,",", j, ")") achou=verdadeiro } } } } se (achou==falso){ escreva ("Na o foi achado o valor ", x) } } }
13. Faa um programa para multiplicar duas matrizes inteiras A e B. O programa dever receber as dimenses das matrizes e tratar casos em que as duas matrizes no podem ser multiplicadas.

programa { funcao inicio() { inteiro m, n, i, j, x escreva("digite M: ") leia(m) escreva("digite N: ") leia(n) inteiro A[m][n] inteiro B[m][n] inteiro C[m][n] escreva ("\n Matriz A:\n") para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva ("Digite (", i, ",",j, "): ") leia (A[i][j]) } } escreva ("\n Matriz B:\n") para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva ("Digite (", i, ",",j, "): ") leia (B[i][j]) } } escreva ("\n Matriz C:\n") para(i=0;i<m;i++){ para(j=0;j<n;j++){ C[i][j]=A[i][j]*B[i][j]

} } para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva (" ", C[i][j]) } escreva ("\n") } } }


14. Ler uma matriz A de inteiros de tamanho mxn e verificar se existe alguma linha com todos os elementos zerados na matriz ou no, dando uma mensagem para o usurio. Repita o exerccio para verificar se existe alguma coluna com todos os elementos zerados. Ler as dimenses da matriz (m linhas e n colunas) do usurio. No exemplo abaixo, as linhas 2 e 3 e a coluna 1 possuem apenas 0's.

programa { funcao inicio() { inteiro m, n, i, j, x escreva("digite M: ") leia(m) escreva("digite N: ") leia(n) inteiro matriz[m][n] para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva ("Digite (", i, ",",j, "): ") leia (matriz[i][j]) //matriz[i][j]=sorteia(10) } } para(i=0;i<m;i++){ para(j=0;j<n;j++){ escreva (" ", matriz[i][j]) } escreva ("\n") } escreva ("\nLINHA\n") inteiro zero, linhazero=0 para(i=0;i<m;i++){ zero=0 para(j=0;j<n;j++){ se(matriz[i][j]==0){ zero++ } } se (zero==n){

escreva ("a linha ", i, " estah zerada\n") linhazero++ } } se(linhazero==0){ escreva("nao existe linha zerada\n") } escreva ("\nCOLUNA\n") inteiro colunazero=0 para(j=0;j<n;j++){ zero=0 para(i=0;i<m;i++){ se(matriz[i][j]==0){ zero++ } } se (zero==m){ escreva ("a coluna ", j, " estah zerada\n") colunazero++ } } se(colunazero==0){ escreva("nao existe coluna zerada") } } }