MATRIZES 1) Faça um programa em Fortran que recebe como parâmetro uma matriz A (nxn) de números reais. Esse programa deve informar (a) a soma dos elementos da coluna “n” (b) a soma dos elementos da diagonal principal da matriz e (c) a soma dos elementos acima da diagonal principal (d) o número de células da matriz que têm valor menor que a média dos valores das células da matriz, program numero_6 integer i,j,n,soma,cont,A(100,100) real media print *,'entre com a dimensao da Matriz A (nxn)' print *,'n = ' read *, n if (n .gt. 100) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, n, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do soma = 0 do i=1, n, 1 soma = soma + A(i,n) end do print *,'Soma dos elementos da coluna n de A = ',soma soma = 0 do i=1, n, 1 soma = soma + A(i,i) end do print *,'Soma da diagonal principal = ',soma soma = 0 do i=1, n, 1 do j=1, n, 1 if (j .gt. i) then soma = soma + A(i,j) endif end do end do print *,'Soma acima da diagonal principal = ',soma soma = 0 do i=1, n, 1 do j=1, n, 1 soma = soma + A(i,j) end do end do media = float(soma) / float(n*n) print *,'media = ',media cont = 0 do i=1, n, 1 do j=1, n, 1 if (A(i,j) .lt. media) then cont = cont + 1 endif end do end do print *,'menores que media = ',cont print *,'matriz A' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', A(i,j),' ' end do print '(a1)',' ' end do end 2) Faça um programa em Fortran que receba uma matriz A (nx m) e diga se esta matriz é simétrica program numero_7 integer i,j,n,m,A(100,100) print *,'entre com a dimensao da Matriz A (nxm)' print *,'n = ' read *, n print *,'m = ' read *, m if ((n .gt. 100) .OR. (m .gt. 100)) then print *,'dimensao maior que o maximo' stop endif if (n .ne. m) then print *,'matriz nao simetrica' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, m, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do do i=1, n, 1 do j=1, m, 1 if (A(i,j) .ne. A(j,i)) then print *,'matriz nao simetrica' stop endif end do end do print *,'matriz simetrica' end 3) Faça um programa em Fortran que receba uma matriz A (nxn) e calcule e escreva o menor elemento e a sua posição (índices) de sua área hachurada. A Figura a) fornece um exemplo de uma matriz A (12x12) program numero_8 integer i,j,n,menor,i_m,j_m,A(100,100) print *,'entre com a dimensao da Matriz A (nxn)' print *,'n = ' read *, n if (n .gt. 100) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, n, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do menor = A(1,n) ! Elemento inicial do i=1, n, 1 do j=1, n, 1 if (i .ge. n+1-j) then if (A(i,j) .le. menor) then menor = A(i,j) i_m = i j_m = j endif endif end do end do print *, 'menor elemento = ',menor print *, 'i = ',i_m,' j = ',j_m end 4) Faça um programa em Fortran que receba uma matriz A (nx m) e divida cada um dos “n” elementos de cada uma das “m” colunas pelo maior elemento em módulo daquela coluna. Imprima a matriz modificada program numero_9 integer i,j,n,m real maior,A(100,100) print *,'entre com a dimensao da Matriz A (nxm)' print *,'n = ' read *, n print *,'m = ' read *, m if ((n .gt. 100) .OR. (m .gt. 100)) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, m, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do do j=1, m, 1 maior = ABS(A(1,j)) ! Elemento Inicial do i=1, n, 1 if (ABS(A(i,j)) .gt. maior) then maior = ABS(A(i,j)) endif end do do i=1, n, 1 ! Divide coluna A(i,j) = A(i,j) / maior end do end do print *,'matriz A modificada' do i=1, n, 1 do j=1, m, 1 print '(f10.6,a2,$)', A(i,j),' ' end do print '(a1)',' ' end do end 5) Faça um programa em Fortran que receba duas matrizes A (nx n) e B (nxn) e (a) imprime as matrizes A e B, (b) imprima a soma das matrizes (A+B), (c) imprime a diferença das matrizes (A-B) (d) imprima a multiplicação das matrizes (AxB) (e) imprima a transposta de A program numero_10 integer i,j,k,n,A(100,100),B(100,100),C(100,100) print *,'entre com a dimensao das Matrizes' print *,'n = ' read *, n if (n .gt. 100) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, n, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do print *,'entre com os elementos de B' do i=1, n, 1 do j=1, n, 1 print '(a12,i3,a1,i3,a4,$)','elemento B(',i,',',j,') = ' read *, B(i,j) end do end do print *,'matriz A' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', A(i,j),' ' end do print '(a1)',' ' end do print *,'matriz B' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', B(i,j),' ' end do print '(a1)',' ' end do print *,'A + B' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', A(i,j)+B(i,j),' ' end do print '(a1)',' ' end do print *,'A - B' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', A(i,j) - B(i,j),' ' end do print '(a1)',' ' end do do i = 1,n,1 do j = 1,n,1 C(i,j) = 0 do k = 1, n, 1 C(i,j) = C(i,j) + A(i,k) * B(k,j) end do end do end do print *,'AxB' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', C(i,j),' ' end do print '(a1)',' ' end do print *,'A^T' do i=1, n, 1 do j=1, n, 1 print '(i3,a2,$)', A(j,i),' ' end do print '(a1)',' ' end do end 6) Faça um programa em Fortran que receba uma matriz A (nxn) e calcule e escreva a média dos elementos da sua área hachurada. A Figura b) fornece um exemplo de uma matriz A (12x12) program numero_11 integer i,j,n,cont,A(100,100) real media print *,'entre com a dimensao da Matriz A (nxn)' print *,'n = ' read *, n if (n .gt. 100) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, n, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do ! DP = Diagonal Principal ! DS = Diagonal Secundaria cont = 0 media = 0 do i=1, n, 1 do j=1, n, 1 if (i .lt. j) then ! acima da DP if (i .lt. n+1-j) then ! acima da DS media = media + A(i,j) cont = cont + 1 endif endif if (i .gt. j) then ! abaixo da DP if (i .gt. n+1-j) then ! abaixo da DS media = media + A(i,j) cont = cont + 1 endif endif end do end do print *, 'media = ', media / cont end 7) Faça um programa em Fortran que receba uma matriz A (nxm) e ordene os elementos de cada linha da matriz. Imprimir o resultado program numero_12 integer i,j,k,n,m,temp,A(100,100) print *,'entre com as dimensoes do vetor A(nxm)' print *,'n = ' read *, n print *,'m = ' read *, m if ((n .gt. 100) .OR. (m .gt. 100)) then print *,'dimensao maior que o maximo' stop endif print *,'entre com os elementos de A' do i=1, n, 1 do j=1, m, 1 print '(a12,i3,a1,i3,a4,$)','elemento A(',i,',',j,') = ' read *, A(i,j) end do end do print *,'matriz A' do i=1, n, 1 do j=1, m, 1 print '(i3,a2,$)', A(i,j),' ' end do print '(a1)',' ' end do do k=1, n, 1 do i=1, m, 1 do j=1, m-1, 1 if (A(k,j) .gt. A(k,j+1)) then temp = A(k,j) A(k,j) = A(k,j+1) A(k,j+1) = temp; end if end do end do end do print *,'matriz A com linhas ordenadas' do i=1, n, 1 do j=1, m, 1 print '(i3,a2,$)', A(i,j),' ' end do print '(a1)',' ' end do end