Baixe o app para aproveitar ainda mais
Prévia do material em texto
�UFRN-DIMAp DIM0320 – ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES PROF.: AMARO DUARTE Lista de Exercícios para a 3ª unidade 1) Assinale V (verdadeiro) ou F (falso) para as alternativas abaixo. Para as alternativas falsas, sublinhe as palavras ou frases que as tornam falsas. Um subalgoritmo é um algoritmo subordinado a um algoritmo principal e/ou outro subalgoritmo. Subalgoritmos podem ser usados quando se quer que um algoritmo mais complexo seja subdividido em algoritmos mais simples de serem criados. Os parâmetros de um subalgoritmo são os meios pelos quais o algoritmo principal troca informações com o mesmo. Parâmetros formais são parâmetros definidos no subalgoritmo. Parâmetros reais são parâmetros utilizados no algoritmo chamador (algoritmo principal ou subalgoritmo) ao chamar um subalgoritmo. Definir um subalgoritmo significa definir tipo e nome do subalgoritmo, seus parâmetros formais, suas variáveis locais e as instruções que este irá executar. Um pseudocódigo completo estará dividido em: definições dos subalgoritmos (zero, um ou mais subalgoritmos) e algoritmo principal. A execução do algoritmo começa no primeiro subalgoritmo. Quando um parâmetro formal é alterado dentro de um subalgoritmo, diz-se que este parâmetro está por referência, ou seja, o mesmo será uma referência ao parâmetro que será passado no algoritmo chamador (algoritmo principal ou subalgoritmo). Este parâmetro poderá receber, como parâmetro real, valor, variável ou expressão, de mesmo tipo do parâmetro, do algoritmo chamador. Quando um parâmetro formal não é alterado em um subalgoritmo, diz-se que este parâmetro está por valor. Ou seja, o mesmo poderá receber como parâmetro real do algoritmo chamador, um valor, variável ou expressão do seu mesmo tipo. Um subalgoritmo sempre será executado direta ou indiretamente dentro de um algoritmo. Portanto, não é necessária nenhuma chamada ao mesmo no algoritmo principal. Um subalgoritmo só pode estar subordinado, apenas, a um algoritmo principal. Um subalgoritmo só poderá ser usado se o mesmo for definido antes do algoritmo principal. Variáveis locais são variáveis criadas dentro de um subalgoritmo. Estas variáveis podem ser usadas, também, pelo algoritmo principal. Funções são subalgoritmos que resultam em um valor. Ou seja, uma função pode ser vista como um operador. Uma função pode ter seu valor atribuído a uma variável, impresso com um comando escreva, fazer parte de uma expressão de tipo compatível, ser valor inicial e/ou final de um laço para-faça ou mesmo ter seu valor testado em uma expressão relacional. Uma função pode ser definida com zero, um ou mais parâmetros formais. É possível, dentro do algoritmo principal, criar uma expressão composta por funções, e atribuir a mesma a uma variável, desde que as funções estejam definidas antes do algoritmo principal e retornem valores de tipos compatíveis com a variável a ser atribuída. O comando retorne é o comando responsável por fazer uma função resultar um valor. Este comando pode ser usado, também, em procedimentos e no algoritmo principal. O tipo do valor que a função irá retornar será de mesmo tipo do valor, variável ou expressão contida no comando retorne. A execução de uma função deve sempre terminar em um comando retorne. Procedimentos são subalgoritmos que executam uma determinada seqüência de comandos. Um procedimento pode ser visto, portanto, como um comando. Procedimentos podem retornar valores da mesma forma que funções e, portanto, pode ser usado em expressões. Procedimentos só podem retornar valores através de seus parâmetros formais. Neste caso, diz-se que estes mesmos parâmetros serão por referência. É possível criar novos comandos de leitura de variáveis a partir de procedimentos. Neste caso, não é necessário haver nenhum comando leia na seqüência de comandos do procedimento. Se for criado um novo comando de leitura de variáveis (ou mesmo de matrizes) a partir de procedimentos, os parâmetros formais que receberão as variáveis (ou matrizes) a serem lidas serão por referência. 2) Escreva a saída para os seguintes algoritmos: a) Os valores lidos são a=3, b=4 função quad(num) real: num, q início q <- num*num retorne(q) fim função raiz_q(num) real: num, rq início rq <- num^(1/2) retorne(num) fim algoritmo questao2_a real: a, b, c início repita escreva("Digite valores para a e b:") leia(a,b) até(a>0 .e. b>0) c <- raiz_q(quad(a)+quad(b)) escreva("c = ",c) fim b) Os valores lidos são x1 = 9, y1 = 18, x2 = 6 e y2 = 14 função quad(num) real: num, q início q <- num*num retorne(q) fim função raiz_q(num) real: num, rq início rq <- num^(1/2) retorne(num) fim função inclinacao(xi, yi, xf, yf) real: xi, xf, yi, yf, inc inicio escreva("Calculando inclinação da reta.") inc <- (yi-yf)/(xi-xf) escreva("Cálculo da inclinação concluído.") retorne(inc) fim funcao intercepta(xi, yi, xf, yf) real: xi, yi, xf, yf, intercep inicio escreva("Iniciando cálculo da interceptação.") intercep <- yi+inclinacao(xi,yi,xf,yf)*xi escreva("Cálculo da interceptação concluído.") retorne(intercep) fim algoritmo questao2_a real: x1, x2, y1, y2, d, m, b início escreva("Digite x1 e y1:") leia(x1,y1) escreva("Digite x2 e y2:") leia(x2,y2) d <- raiz_q(quad(x2-x1)+quad(y2-y1)) escreva("d = ",d) m <- inclinacao(x1,y1,x2,y2) b <- intecepta(x1,y1,x2,y2) escreva("reta: y=",m,".x+",b) fim c) Os valores lidos são m = 5, p = 4 função fatorial(x) inteiro: x, f, i início f <- 1 para i de 2 até x faça f <- f*i fim_para retorne(f) fim função combinação(n,p) inteiro: n, p, comb inicio comb <- fatorial(n)/(fatorial(n-p)*fatorial(p)) retorne(comb) fim algoritmo questao2_c inteiro: m, p início escreva("Digite dois números para obter as combinações: ") repita Escreva("valores não negativos: ") Leia(m,p) até(m >= 0 .e. p >= 0 .e. m >= p) escreva("Número de combinações = ", combinacao(m,p)) fim d) O valor lido é a = 2 funcao f(x) inteiro: x inicio escreva("Calculando f(",x,").") retorne(x^2+2*x+4) fim funcao g(x) inteiro: x inicio escreva("Calculando g(",x,").") retorne(2*x+3) fim algoritmo questao2_d inteiro: a início escreva("f(g(1))=",f(g(1)) ) escreva("g(f(1))=",g(f(1)) ) escreva("f(g(1)+3)=", f(g(1)+3) ) escreva("Digite um valor inteiro para a:") leia(a) escreva("f(g(",a,"))=",f(g(a)) ) escreva("g(f(",a,"))=",g(f(a)) ) escreva("f(",a,"+f(",a,"+2))=", f(a+f(a+2)) ) escreva("f(",a,"*g(",a,"))=",f(a*g(a)) ) fim e) Os valores lidos para a e b são, respectivamente, 3 e 5. funcao f(x) inteiro: x inicio escreva("Calculando f(",x,").") retorne(x^2+2*x+4) fim funcao g(x) inteiro: x inicio escreva("Calculando g(",x,").") retorne(2*x+3) fim funcao soma(x,y) inteiro: x,y inicio escreva("Somando", x," com ", y,".") retorne(x+y) fim funcao multiplica(x,y) inteiro: x,y inicio escreva("Multiplicando", x," por ", y,".") retorne(x*y) fim algoritmo questao2_e inteiro: a,b início escreva("Digite valores inteiros para a e b:") leia(a,b) escreva("f(a)+b = ", soma(f(a),b) ) escreva("a*g(b) = ", multiplica(a,g(b)) ) escreva("2*(b+f(g(a))) = ", multiplica(2, soma(b, f(g(a)))) ) fim f) Os valores lidos são x = 15, y = 11 procedimento retangulo(lado1, lado2, perim, area) real: lado1, lado2, perim, area início perim <- 2*(lado1 + lado2) area <- lado1 * lado2 fim algoritmo questao2_f real: x,y,p,a início repita escreva("Digite dois números: ") leia(x,y) até(x > 0.e. y > 0) retangulo(x,y,p,a) escreva("Perímetro = ",p) escreva("Área = ", a) fim g) Os valores lidos para n serão 30, 25 e 5, nesta ordem. Em seguida, será lido V= [2 5 8 1 10] procedimento leia_tam_vetor(tam, tam_max) inteiro: tam, tam_max inicio repita leia(tam) se (tam>tam_max) então escreva("O tamanho deve ser menor ou igual a ",tam_max,":") fim_se até(tam <= tam_max) fim procedimento leia_vetor_real(vet,num_elem) real: vet[20] inteiro: num_elem, i início para i de 1 até num_elem faça escreva(i,"º elemento:") leia(vet[i]) fim_para fim função somatorio(vet, ini, fim) real: vet[20], s inteiro: ini, fim, i início escreva("Calculando somatório dos elementos do vetor...") s <- 0.0 para i de ini até fim faça s <- s+vet[i] fim_para retorne(s) fim algoritmo questao2_g real: V[20] inteiro: n início escreva("Quantos elementos?") leia_tam_vetor(n,20) escreva("Digite os elementos do vetor V:") leia_vetor_real(V,n) escreva(o somatório vale ", somatorio(V,1,n)) fim h) Os valores para ini são -1, 0 e 26, nesta ordem. O valor de final é 29. procedimento leia_num_positivo(n) inteiro: n inicio repita leia(n) se(n<=0) escreva("O número deve ser positivo:") fim_se até(n>0) fim função soma_int(x, n) inteiro: x[30], n, s, i início escreva("Executando a função soma_int().") s <- 0 Para i de 1 até n faça s <- s + x[i] fim_para retorne(s) fim procedimento divisores(k, v, n) inteiro: k, v[30], n, i início escreva("Obtendo divisores de ",k,":") n <- 0 para i de 1 até k\2 faça se(k-k\i*i = 0)então n <- n + 1 v[n] <- i escreva(v[n]) fim_se fim_para fim algoritmo Perfeito inteiro: ini, final, per, V[30], q início escreva("Digite um valor inicial positivo:") leia_num_positivo(ini) escreva("Digite um valor final positivo:") leia_num_positivo(final) para per de ini até final faça divisores(per, V, q) se(per = soma_int(V, q))então escreva(per, "é um número perfeito.") fim_se fim_para fim Subalgoritmos com parâmetros simples Obs.: As questões a seguir seguem o seguinte esquema: primeiro, elas pedem os subalgoritmos, para depois pedir o algoritmo principal. Quando for resolver estas questões, leve em conta que todos os subalgoritmos, mais o algoritmo principal, são uma coisa só (um só algoritmo). Portanto, não faça algo do tipo "a) função func(...". Restrinja-se, apenas, a definir os subalgoritmos e fazer o algoritmo principal da forma que é pedida, na ordem pedida. Não esquecer que AS REGRAS DE INTERFACE DE USUÁRIO CONTINUAM VALENDO. 3) Nesta questão, faça, na ordem, o que pede os itens a seguir: a) Defina uma função para calcular a média aritmética de 3 números reais. b) Faça um algoritmo principal que leia 3 números reais e utilize a função do item a para calcular a média aritmética dos mesmos. 4) Faça, em ordem, o que pede os itens a seguir: a) Defina a seguinte função: onde x é real e f(x) resulta valor real. b) Defina a seguinte função: onde x é real e g(x) resulta valor real. c) Crie um algoritmo principal que exiba, na ordem, os valores de: f(-1) f(2) g(2) f(g(0)) g(f(-2)) f(f(1)+g(2)) g(f(2).g(2)) ler o valor de a e exibir os valor de f(g(a)) e g(f(a)). 5) Faça, em ordem, o que pede os itens a seguir: a) Reaproveite a função fatorial da questão 2 item c (a função fatorial calcula x!). b) Crie uma função que calcule o arranjo de n elementos agrupados de p em p, que é dado pela fórmula onde n e p serão parâmetros da função. c) Faça um algoritmo principal que utilize a função do arranjo para calcular , e . 6) Faça, em ordem, o que se pede a seguir: a) Reaproveite a função fatorial da questão 2 item c (a função fatorial calcula x!). b) A função seno pode ser calculada através da seguinte série: Para qualquer valor real de x. Defina uma função chamada sen que receba como parâmetro um valor real para x e calcule um valor aproximado de sen(x) usando a seguinte série finita: Para o cálculo de , utilize a função fatorial. c) A função cosseno pode ser calculada através da seguinte série: Para qualquer valor real de x. Defina uma função chamada cos que receba como parâmetro um valor real para x e calcule um valor aproximado de cos(x) usando a seguinte série finita: Para o cálculo de , utilize a função fatorial. d) As funções sen e cos, definidas nos itens anteriores, tratam o valor de x como sendo em radianos. Defina uma função chamada converte_graus_rad, que receba como parâmetro um valor real (representando um ângulo em graus), e retorne o valor do ângulo em radianos. Para converter o valor de um ângulo de graus para radianos, usa-se a seguinte fórmula: e) Faça um algoritmo principal que leia um valor real para a (assuma que o valor lido será em graus), converta o valor de a para radianos, usando a função converte_graus_rad, e calcule os valores de , e . 7) Faça o que se pede a seguir: a) Reaproveite todas as funções da questão 6. b) defina uma função chamada tg que recebe como parâmetro um valor real para x e calcule a tangente de x ( ). A tangente de x é definida como: c) Faça um algoritmo principal que leia um valor de a em que (assuma que a esteja em graus), converta o valor de a para radianos (com a função converte_graus_rad) e calcule o valor de . 8) Faça o que se pede a seguir: a) Reaproveite todas as funções da questão 6. b) defina uma função chamada cotg que recebe como parâmetro um valor real para x e calcule a cotangente de x ( ). A cotangente de x é definida como: c) Faça um algoritmo principal que leia um valor de a em que e (assuma que a esteja em graus), converta o valor de a para radianos (com a função converte_graus_rad) e calcule o valor de . 9) Os dados a seguir devem ser usados dentro das funções (sem as unidades): Faça o que se pede, em ordem: Defina uma função chamada posicao, que recebe como parâmetro um valor real para t e retorna o valor da posição em função do tempo, a partir da fórmula . Defina uma função chamada velocidade, que recebe como parâmetro um valor real para t e retorna o valor da velocidade em função do tempo, a partir da fórmula . Faça um algoritmo que leia um valor maior ou igual a zero para o tempo t e calcule a posição e a velocidade nos tempos t, t+2 e t+5, usando as funções posição e velocidade. 10) Repita o algoritmo da questão 9, fazendo as seguintes mudanças: Na função posicao, os parâmetros formais serão e t. Na função velocidade, os parâmetros formais serão e t. No algoritmo principal, ler um valor maior ou igual a zero para o tempo t e exiba a posição e a velocidade nos tempos t, t+2 e t+5, usando as funções definidas, só que desta vez, os valores dados na questão 8 para devem ser passados como parâmetros reais nas chamadas das funções posicao e velocidade. 11) Para o algoritmo desta questão, faça o que se pede: Defina um procedimento chamado ler_nota, para ler um valor real maior ou igual a zero e menor ou igual a 10. Defina uma função para calcular a média parcial da UFRN. A função deve ter 3 parâmetros formais. Defina uma função para calcular a média final da UFRN. A função deve ter 2 parâmetros formais. Faça um algoritmo principal para ler as 3 primeiras notas, usando o procedimento ler_nota, e exibir o valor da média usando a função para calcular a média parcial. Em seguida, diga se o aluno foi aprovado, está em 4ª prova ou foi reprovado. Se estiver em 4ª prova, faça o algoritmo ler a 4ª nota usando o procedimento ler_nota, calcular e exibir a média final e dizer se o alunofoi aprovado ou reprovado em 4ª prova. 12) Faça o que se pede a seguir: Defina um procedimento chamado ler_real, para ler um número real maior ou igual a zero. Defina uma função chamada area_retangulo, que recebe como parâmetros 2 reais representando os lados do retângulo e retorna o valor da área do retângulo. Defina uma função chamada perimetro_ret, que recebe como parâmetros 2 reais representando os lados do retângulo e retorna o perímetro do mesmo. Faça um algoritmo principal que leia os lados do retângulo com o procedimento ler_real, calcule a área do retângulo com a função area_retangulo, e o perímetro, com a função perimetro_ret. 13) Faça o que se pede a seguir: Reaproveite o procedimento ler_real definido na questão 12. Defina uma função chamada area_circulo, que recebe como parâmetro um valor real para o raio r do círculo e retorna a área do círculo ( ). Defina uma função chamada perimetro_circulo, que recebe que recebe como parâmetro um valor real r para o raio do círculo e retorna o perímetro do círculo ( ). Faça um algoritmo principal que leia o raio do círculo com o procedimento ler_real, calcule a área do círculo com a função area_circulo, e o perímetro, com a função perimetro_circulo. 14) Faça o que se pede a seguir: Reaproveite o procedimento ler_real definido na questão 12. Defina uma função chamada triangulo_valido, que recebe como parâmetros 3 valores reais e retorna o valor lógico .V., se os valores dos parâmetros formarem um triangulo válido, ou .F. , caso contrário. Os três valores só formam um triângulo válido se os mesmos seguirem a seguinte regra: a soma de 2 dos valores deve ser maior que o terceiro (a+b > c, b+c > a e a+c > b). Defina uma função chamada triangulo_ret, que recebe como parâmetros os 3 lados do triângulo e retorna .V., se os lados formam um triângulo retângulo, ou .F., caso contrário. Um triângulo é retângulo se os lados obedecem ao teorema de Pitágoras ( , ou ). Defina uma função chamada triangulo_equi, que recebe como parâmetros os 3 lados do triângulo, e retorna .V. se o triângulo for equilátero, ou .F., caso contrário. Um triângulo é equilátero se os 3 lados forem iguais. Defina uma função chamada triangulo_iso, que recebe como parâmetros os 3 lados do triângulo, e retorna .V. se o triângulo for isósceles, ou .F., caso contrário. Um triângulo será isósceles se ele não for equilátero e apenas 2 dos lados do triângulo forem iguais. Defina uma função chamada triangulo_esc, que recebe como parâmetros os 3 lados do triângulo, e retorna .V. se o triângulo for escaleno, ou .F., caso contrário. Um triângulo será escaleno se ele não for equilátero e nem isósceles. (dica: utilize as funções triangulo_equi e triangulo_iso no teste) Defina uma função chamada perimetro_tri que recebe 3 parâmetros reais e retorna o perímetro de um triângulo. Defina uma função chamada area_tri que receba os lados do triângulo como parâmetro e calcule a área do triângulo, dada pela fórmula: , Onde p é o semi-perímetro do triângulo, dado por: neste caso, use a função perímetro_tri para calcular o valor de p. Faça um algoritmo principal que leia os lados do triângulo com o procedimento ler_real, e, utilizando a função triangulo_valido, testar se os lados lidos formam um triângulo válido. Se sim, utilizar as funções triangulo_ret, triangulo_equi, triangulo_iso e triangulo_esc, para dizer o tipo do triângulo (retângulo ou não, equilátero, isósceles ou escaleno), e as funções area_tri e perimetro_tri para calcular área e perímetro do triângulo. Caso a função triangulo_valido dê .F. , diga que os lados não formam um triângulo válido. 15) Utilizando apenas os subalgoritmos definidos nas questões 12 a 14, faça algoritmos para ler os dados pedidos com o procedimento ler_real e calcular as áreas totais e os perímetros totais das figuras a seguir: a) Ler c e r. d) Ler c e h. b) Ler c e r. e) Ler c, h. c) ler r. Subalgoritmos com vetores e matrizes Obs.: Ao declarar vetores, certifique-se que os vetores tanto dos subalgoritmos como do algoritmo principal possuam os mesmos tamanhos. 16) Reaproveite todos os subalgoritmos da questão 2 item g e utilize-os no algoritmo principal para ler um valor para n, e n elementos para um vetor V, e calcular a média aritmética dos elementos de V. 17) Faça um algoritmo com os seguintes subalgoritmos: Procedimento leia_tam_vetor da questão 2 item g. Procedimento leia_vetor_real da questão 2 item g. Um procedimento chamado ordem_crescente, que ordena (e não imprime) um vetor de números reais em ordem crescente. Um procedimento chamado ordem_decrescente, que ordena (e não imprime) um vetor de números reais em ordem decrescente. Um procedimento imprime_vetor_real, que recebe como parâmetros um vetor real, índice do primeiro elemento a ser impresso (ini), o índice do último elemento (final), e imprime elementos do vetor do índice ini ao índice final. Se ini for maior que final, faça com que os índices do vetor variem em ordem decrescente. O algoritmo principal deve ler o valor de n com o procedimento leia_tam_vetor, e ler n elementos reais para um vetor V, usando o procedimento leia_vetor_real. O algoritmo deverá exibir os elementos do vetor na ordem direta (na mesma ordem em que foram lidos), na ordem inversa, em ordem crescente e em ordem decrescente. Utilize, apenas, os procedimentos indicados nesta questão no algoritmo principal, e comandos escreva, para indicar o que está sendo lido ou impresso. 18) O algoritmo desta questão deverá simular a construção de conjuntos de elementos não repetidos. Para isso, faça o que se pede: Defina um procedimento chamado leia_tam_conjunto, que leia um valor maior ou igual a zero para o tamanho de um conjunto. Obs.: o tamanho lido por este procedimento será, na verdade, a quantidade de elementos a serem lidos para um vetor. Defina uma função chamada existe_elemento, que receberá como parâmetros um valor real, um vetor de reais e a quantidade de elementos que o vetor possui. A função retorna .V., se o valor real está contido no vetor, ou .F., caso contrário. Observe que, se o vetor estiver vazio, o parâmetro que conterá a quantidade de elementos do vetor será zero. Neste caso, a função deve, também retornar .F. . Defina um procedimento chamado leia_conjunto, que recebe como parâmetros um vetor de números reais, e a quantidade de elementos a serem lidos. Se a quantidade de elementos a serem lidos for maior que zero, este procedimento, por sua vez, irá ler um valor real, verificar se o valor lido está contido no vetor, usando a função existe_elemento, e se ela der .F., o elemento será inserido no vetor. Caso contrário, avisar que o valor já existe no vetor. Reaproveite o procedimento ordem_crescente da questão 17 item d. Reaproveite o procedimento imprime_vetor_real da questão 17 item e. Faça um algoritmo principal que leia o valor de n com o procedimento leia_tam_vetor, e ler n elementos reais para um vetor V, usando o procedimento leia_conjunto. O algoritmo deverá, então, exibir os elementos do vetor em ordem crescente. 19) Reutilize todos os subalgoritmos da questão 16 e defina procedimentos para implementar as seguintes operações com conjuntos: (união de A com B, ou seja, elementos (não repetidos) que estão contidos em A ou em B.) (interseção de A com B, ou seja, elementos comuns que estão contidos, ao mesmo tempo, em A e em B). (elementos de A que não estão contidos em B) Em seguida, faça com que o algoritmo principal leia valores para m e n, usando o procedimento leia_tam_vetor, m elementos para um vetorX e n elementos para um vetor Y, usando o procedimento leia_conjunto. Em seguida, exiba, em ordem crescente, os vetores X e Y, a união de X com Y, a interseção de X com Y, os elementos de X que não estão em Y e os elementos de Y que não estão em X. Se algum conjunto a ser exibido for vazio, faça o algoritmo avisar tal fato no momento da exibição. Subalgoritmos com matrizes Obs.: Ao declarar matrizes, certifique-se que as matrizes tanto dos subalgoritmos como do algoritmo principal sejam quadradas e possuam os mesmos tamanhos para linhas e colunas. 20) Crie os seguintes subalgoritmos: Um procedimento chamado leia2tamanhos para ler 2 valores inteiros positivos, onde esses valores serão quantidade de linha e coluna de uma matriz. Um procedimento chamado leia_matriz, para ler uma matriz qualquer. Os parâmetros serão uma matriz, a quantidade de linhas e a quantidade de colunas da mesma. Um procedimento chamado coluna_matriz, que recebe como parâmetros uma matriz, a quantidade de linhas e de colunas da mesma, um vetor e um índice de coluna para a matriz passada como parâmetro. O procedimento deve, então, atribuir, aos elementos do vetor, os elementos da coluna escolhida da matriz. Um procedimento imprime_vetor, que recebe como parâmetros um vetor e o tamanho do mesmo, e imprime os elementos do mesmo vetor. Em seguida, faça um algoritmo que leia valores para m e n, usando o procedimento leia2tamanhos, uma matriz Am x n, usando o procedimento leia_matriz, um valor c (maior ou igual a 1 e menor ou igual a n) que indique uma coluna da matriz A. Em seguida, gere um vetor V que contenha o mesmo conteúdo da coluna c da matriz A, utilizando o procedimento coluna_matriz, e imprima o vetor V, com o procedimento imprime_vetor. 21) Para o algoritmo desta questão, proceda da seguinte forma: Reaproveite os procedimentos dos itens a, b e d da questão 20. Defina um procedimento chamado linha_matriz, que recebe como parâmetros uma matriz, a quantidade de linhas e de colunas da mesma, um vetor e um índice de linha para a matriz passada como parâmetro. O procedimento deve, então, atribuir, aos elementos do vetor, os elementos da linha escolhida da matriz. Faça um algoritmo principal que leia valores para m e n, usando o procedimento leia2tamanhos, uma matriz Am x n, usando o procedimento leia_matriz, um valor lin (maior ou igual a um e menor ou igual a m) que indique uma linha da matriz A. Em seguida, gere um vetor V que contenha o mesmo conteúdo da linha lin da matriz A, utilizando o procedimento linha_matriz, e imprima o vetor V, com o procedimento imprime_vetor. 22) Para o algoritmo desta questão, faça o que se pede: Crie um procedimento chamado leia3tamanhos, que lê 3 valores para os tamanhos de uma matriz. Leve em conta que, neste procedimento, estaremos lendo os tamanhos para 2 matrizes envolvidas em uma multiplicação. Reaproveite o procedimento leia_matriz da questão 18. Faça um procedimento chamado imprima_matriz, que receba uma matriz e a quantidade de linhas de de colunas para ela, e imprima seus elementos. Procure fazer com que o procedimento, ao exibir um elemento, diga a linha e a coluna a que ele pertence. Faça um procedimento chamado mult_escalar_matriz, que receba como parâmetros 2 matrizes de mesmo tamanho (uma será o resultado da operação e outra, a matriz a ser operada), a quantidade de linhas e de colunas para elas (2 parâmetros bastam, já que serão 2 matrizes de mesmo tamanho), e um escalar real. O procedimento, então, deve multiplicar o escalar pelos elementos da matriz. Ou seja, o procedimento deve realizar a seguinte operação: Faça um procedimento chamado matriz_transposta, que recebe como parâmetros 2 matrizes (uma será o resultado da operação e outra, a matriz a ser operada), e a quantidade de linhas e de colunas da matriz a ser operada. O procedimento deve, então, gerar a transposta de uma matriz, ou seja: onde as colunas de A serão as linhas da transposta e vice-versa. Faça um procedimento chamado soma_matrizes, que receba 3 matrizes de mesmo tamanho (uma para o resultado e 2 como operandos), os tamanhos para as mesmas (2 parâmetros apenas) e calcule a soma de 2 matrizes, ou seja: Faça um procedimento chamado mult_matrizes, que receba 3 matrizes de mesmo tamanho (uma para o resultado e 2 como operandos), os tamanhos para as mesmas (3 parâmetros) e calcule o produto de 2 matrizes. A fórmula de recorrência para os elementos de R é Utilizando todos os procedimentos acima definidos, faça um algoritmo principal que leia os tamanhos m,n e p, as matrizes A, B e C, e os coeficientes reais t e u, e calcule a seguinte expressão: 23) Reaproveite os procedimentos da questão 22 (apenas os procedimentos que forem necessários) e faça algoritmos para ler os valores m, n e p, as matrizes A, B, C e D (com as dimensões dadas nas expressões de cada item) e calcular as seguintes matrizes:� , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. onde t e u são valores reais, a serem lidos pelo algoritmo. onde e são matrizes transpostas de A, B e D, e D é uma matriz m por n. , onde e são matrizes transpostas de A, B e C, e C é uma matriz m por n. , onde D será uma matriz n linhas por m colunas , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. , onde t e u são valores reais, a serem lidos pelo algoritmo. onde t e u são valores reais, a serem lidos pelo algoritmo. c c r c c r r r r r r c c c h c c c h _284583940.unknown _360032804.unknown _559622700.unknown _559683184.unknown _559683824.unknown _559684144.unknown _559683504.unknown _559682544.unknown _559682864.unknown _559623020.unknown _559621100.unknown _559622060.unknown _559622380.unknown _559621420.unknown _559621740.unknown _360033444.unknown _559620460.unknown _559620780.unknown _360033124.unknown _290618280.unknown _297684072.unknown _360031524.unknown _360032164.unknown _360032484.unknown _360031844.unknown _360030244.unknown _360030884.unknown _360031204.unknown _360030564.unknown _326364320.unknown _326364640.unknown _326364000.unknown _326361760.unknown _290625196.unknown _290626476.unknown_290656736.unknown _290626156.unknown _290623916.unknown _290624556.unknown _290624236.unknown _290618920.unknown _284585220.unknown _284636232.unknown _284637512.unknown _290616040.unknown _290617960.unknown _284637832.unknown _284636872.unknown _284637192.unknown _284636552.unknown _284635592.unknown _284635912.unknown _284585540.unknown _284584580.unknown _284584900.unknown _284584260.unknown _284529408.unknown _284531968.unknown _284582660.unknown _284583300.unknown _284583620.unknown _284582980.unknown _284582020.unknown _284582340.unknown _284532288.unknown _284530688.unknown _284531328.unknown _284531648.unknown _284531008.unknown _284530048.unknown _284530368.unknown _284529728.unknown _235471004.unknown _275872532.unknown _284345396.unknown _284427320.unknown _284427960.unknown _284428280.unknown _284428600.unknown _284427640.unknown _284426680.unknown _284427000.unknown _284345716.unknown _284426360.unknown _275873300.unknown _284345076.unknown _275872916.unknown _275871380.unknown _275871764.unknown _275872148.unknown _275869844.unknown _275870228.unknown _268158932.unknown _235471388.unknown _224811032.unknown _224812568.unknown _234327528.unknown _234327208.unknown _224811416.unknown _224810264.unknown _224810648.unknown _224809112.unknown _224809880.unknown _196518920.unknown
Compartilhar