Sie sind auf Seite 1von 63

Ing.

William Chauca Nolasco

UNIVERSIDAD NACIONAL MAYOR DE SAN


MARCOS
FORTRAN 90

1|Página
Ing. William Chauca Nolasco

1.- Se requiere obtener la suma de las cantidades contenidas en un arreglo


de 10 elementos.
program sum_vect
integer,dimension(10)::A
integer::suma=0
print*,"Ingrese 10 elementos al
vector"
read*,(A(i),i=1,10)
!Calculando la suma de
elementos del vector
do i=1,10
suma=suma+A(i)
end do
!Imprimiendo la suma
print*,""
print*,"La suma del vector es=",suma
end program sum_vect

2.- Se tienen los nombres de los N alumnos de una escuela, además de su


promedio general. Realice un algoritmo para capturar esta información, la
cual se debe almacenar en arreglos, un vector para el nombre y otro para el
promedio, después de capturar la información se debe ordenar con base en
su promedio, de mayor a menor, los nombres deben corresponder con los
promedios.

program informacion
character(len=100),dimension(100)::nomb
real,dimension(100)::prom
integer::i,n,m
integer::max,aux1
character(len=100)::aux2
print*,"Ingrese cantidad de alumnos"
read*,n
print*,"Ingrese nombres de los alumnos"
read*,(nomb(i),i=1,n)
print*,"Ingrese promedio de general de los alumnos"
read*,(prom(i),i=1,n)
m=i-1
!Proceso repetitivo

2|Página
Ing. William Chauca Nolasco

do i=1,m-1
max=prom(i)
index=i
!Busqueda del mayor valor e indice respectivo
do j=i+1,m
if(prom(j)>max) then
max=prom(j)
index=j
end if
end do
aux1=prom(i)
aux2=nomb(i)
prom(i)=prom(index)
nomb(i)=nomb(index)
prom(index)=aux1
nomb(index)=aux2
end program informacion

3|Página
Ing. William Chauca Nolasco

3. Cierta empresa quiere controlar la existencia de diez productos, los


cuales se almacenan en un vector A, mientras que los pedidos de los
clientes se almacenan en un vector B. se requiere generar un vector C
con base en los anteriores que represente lo que se requiere comprar
para mantener el stock de inventario, para esto se considera lo
siguiente:
Si los valores correspondientes de los vectores A y B son iguales, se
almacena el mismo valor de A, si el valor de B es mayor que el de A se
almacena el doble de la diferencia entre B y A, si se da el caso de que
A es mayor que B, se almacena B, que indica lo que se requiere
comprar para mantener el stock de inventario.

CODIGO

program problema3
integer::i
integer,dimension(10)::a,b,c
do i=1,10
print*,"ingrese cantidad del producto ",i," en stock"
read*,a(i)
print*,"ingrese cantidad de productos pedidos por el cliente"
read*,b(i)
end do
do i=1,10
if (a(i)==b(i))then
c(i)=a(i)
else
if (b(i)>a(i))then
c(i)=(b(i)-a(i))*2
else
c(i)=b(i)
end if
end if

4|Página
Ing. William Chauca Nolasco

end do
do i=1,10
print*,c(i)
end do
end program problema3

5|Página
Ing. William Chauca Nolasco

4.- Realice un algoritmo que lea un vector de seis elementos e intercambie


las posiciones de sus elementos, de tal forma que el primer elemento pase a
ser el último y el último el primero, el segundo el penúltimo y así
sucesivamente, e imprima ese vector

PROGRAM PROB_4
REAL,DIMENSION(1:6)::A
INTEGER::I
PRINT*,"VALORES DEL VECTOR "

READ*,(A(I),I=1,6)

6|Página
Ing. William Chauca Nolasco

PRINT*,"VECTOR A"
DO I=1,6
PRINT*,A(I)
CALL POSICION(A)
END DO

END PROGRAM PROB_4

SUBROUTINE POSICION(X)
REAL,DIMENSION(1:6)::X
REAL::B
INTEGER::I
PRINT*,"UNA POSICION A LA DERECHA DEL VECTOR"
DO I=1,6
B=X(I)
X(I)=X(6)
X(6)=B
END DO
DO I=1,6
PRINT*,X(I)
END DO
END SUBROUTINE POSICION

5. Programa que pida al ususario por teclado el numero de filas y columnas


de dos matrices A y B (iguales para ambas) y sus componentes. Dimensiona
dinamicamente las matrices.
A continuacion el programa presentara estas opciones:
-Mostrar por monitor la matriz A
-Mostrar por monitor la matriz B
-Mostrar por monitor la transpuesta de la matriz A
-Mostrar por monitor la transpuesta de la matriz B
-Salir

Codigo
program problema_5
implicit none
integer::i,j,m,n

7|Página
Ing. William Chauca Nolasco

real,dimension(100,100)::A,B,TA,TB
print*,"Ingrese filas para A y B"
read*,m
print*,"Ingrese columnas para A y B"
read*,n
print*,"Ingrese datos a la matriz A"
read*,((A(i,j),j=1,n),i=1,n)
print*
print*,"Ingrese datos a la matriz B"
read*,((B(i,j),j=1,n),i=1,n)
print*
do i=1,n
do j=1,m
TA(i,j)=A(j,i)
end do
end do
do i=1,n
do j=1,m
TB(i,j)=B(j,i)
end do
end do
print*,"La transpuesta de la matriz A es"
do i=1,n
print*,(TA(i,j),j=1,m)
end do
print*,"La transpuesta de la matriz B es"
do i=1,n
print*,(TB(i,j),j=1,m)
end do
end program problema_5

8|Página
Ing. William Chauca Nolasco

7.2.- Realice un programa para obtener la matriz transpuesta de cualquier


matriz de orden M x N.
PROGRAM MATRIZ_TRANSPUESTA
INTEGER,DIMENSION(:,:),ALLOCATABLE::A,At
INTEGER::I,J
INTEGER::M,N
PRINT*,"INGRESAR FILAS Y COLUMNAS DE LA MATRIZ"
READ*, M,N
ALLOCATE(A(M,N),At(N,M))
PRINT*,"INGRESAR DATOS DE A"
READ*,((A(I,J),J=1,N),I=1,M)
PRINT*,"LA MATRIZ A "
DO I=1,M
PRINT*,(A(I,J),J=1,N)
END DO
DO I=1,M
DO J=1,N
At(J,I)=A(I,J)
END DO
END DO
PRINT*, "LA TRANSPUESTA DE A"
DO I=1,N
PRINT*,(At(I,J),J=1,M)
END DO
END PROGRAM MATRIZ_TRANSPUESTA

9|Página
Ing. William Chauca Nolasco

8.- Realice un programa el producto de dos matrices de orden M x N y P x Q.


(No usar la función MATMUL.

PROGRAM MATMUL
IMPLICIT NONE
INTEGER,DIMENSION(100,100)::MxN,PxQ,PD
INTEGER::I,J,K
INTEGER::M,N,P,Q
PRINT*,"INGRESAR FILAS Y COLUMNAS DE LA MATRIZ A"
READ*,M,N
PRINT*,"INGRESAR FILAS Y COLUMNAS DE LA MATRIZ A"
READ*,P,Q
IF(N==P)THEN
PRINT*,"INGRESAR DATOS DE LA MATRIZ",M,"x",N
READ*,((MxN(I,J),J=1,N),I=1,M)
PRINT*,"INGRESAR DATOS DE LA MATRIZ",P,"x",Q
READ*,((PxQ(I,J),J=1,Q),I=1,N)
PRINT*,"VECTOR MxN"
DO I=1,M
PRINT*,(MxN(I,J),J=1,N)
END DO
PRINT*,"VECTOR PxQ"
DO I=1,P
PRINT*,(PxQ(I,J),J=1,Q)
END DO
DO I=1,M
DO J=1,Q
PD(I,J)=0
DO K=1,N
PD(I,J)=PD(I,J)+(MxN(I,K)*PxQ(K,J))
END DO
END DO
END DO
PRINT*,"EL PRODUCTO DE MATRICES"
DO I=1,M
PRINT*,(PD(I,J),J=1,Q)
END DO
ELSE
PRINT*,"LAS MATRICES NO SE PUEDEN MULTIPLICAR PORQUE EL NUMERO
DE COLUMNAS DE A ES DIFERENTE AL NUMERO DE FILAS DE B="

10 | P á g i n a
Ing. William Chauca Nolasco

END IF
END PROGRAM MATMUL

9.- Realice un programa que lea un arreglo de M filas y N columnas y que


calcule la suma de los elementos de la diagonal principal.

PROGRAM DIAGONAL_PRINCIPAL
IMPLICIT NONE
INTEGER::M,N
INTEGER,DIMENSION(100,100)::MT
INTEGER::SU
INTEGER::I,J
PRINT*,"INGRESAR NUMERO DE FILAS Y COLUMNAS DE LA MATRIZ"
READ*,M,N
IF(M==N)THEN
PRINT*,"INGRESAR DATOS DE LA MATRIZ",M,"x",N
READ*,((MT(I,J),J=1,N),I=1,M)
PRINT*,"MATRIZ INGRESADA"
DO I=1,M
PRINT*,(MT(I,J),J=1,N)
END DO
SU=0
DO I=1,M
DO J=1,N
IF(I==J)THEN
SU=SU+MT(I,J)
END IF
END DO
END DO
PRINT*,"LA SUMA DE LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL ES:",SU
ELSE
PRINT*,"NO SE PUEDE OPERAR PORQUE LA MATRIZ INGRESADA NO ES
CUADRADA"
END IF
END PROGRAM DIAGONAL_PRINCIPAL
10.- Realice un programa para obtener una matriz como el resultado de la
resta de dos matrices de orden M x N.

PROGRAM RESTA_DE_MATRICES

11 | P á g i n a
Ing. William Chauca Nolasco

INTEGER::I,J
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MT1,MT2,RESTA
PRINT*,"INGRESAR FILAS Y COLUMNAS DE MATRICES A RESTAR"
READ*,M,N
ALLOCATE(MT1(M,N),MT2(M,N),RESTA(M,N))
PRINT*,"INGRESAR ELEMENTOS DE PRIMERA MATRIZ"
READ*,((MT1(I,J),J=1,N),I=1,M)
PRINT*,"INGRESAR ELEMENTOS DE SEGUNDA MATRIZ"
READ*,((MT2(I,J),J=1,N),I=1,M)
PRINT*,"MATRIZ 1"
DO I=1,M
PRINT*,(MT1(I,J),J=1,N)
END DO
PRINT*,"MATRIZ 2"
DO I=1,M
PRINT*,(MT2(I,J),J=1,N)
END DO
DO I=1,M
DO J=1,N
RESTA(I,J)=MT1(I,J)-MT2(I,J)
END DO
END DO
PRINT*,"LA RESTA DE MATRICES ES="
DO I=1,M
PRINT*,(RESTA(I,J),J=1,N)
END DO
END PROGRAM RESTA_DE_MATRICES

11.- Realice un programa para determinar si una matriz es de tipo diagonal:


es una matriz cuadrada en la cual todos sus elementos son cero, excepto los
electos de la diagonal principal.

12 | P á g i n a
Ing. William Chauca Nolasco

PROGRAM MATRIZ_CUADRADA
IMPLICIT NONE
INTEGER::N,I,J,C
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MATRIZ
PRINT*,"INGRESAR ORDEN DE LA MATRIZ"
READ*,N
ALLOCATE(MATRIZ(N,N))
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ"
READ*,((MATRIZ(I,J),J=1,N),I=1,N)
PRINT*,"MATRIZ"
DO I=1,N
PRINT*,(MATRIZ(I,J),J=1,N)
END DO
C=0
DO I=1,N
DO J=1,N
IF(I/=J .AND. MATRIZ(I,J)==0 )THEN
C=C+1
IF(C==N*(N-1))THEN
PRINT*,"LA MATRIZ ES DE TIPO DIAGONAL"
END IF
END IF
END DO
END DO
END PROGRAM MATRIZ_CUADRADA

12.- Realice un programa que lea los nombres y las edades de diez alumnos,
y que los datos se almacenen en dos vectores, y con base en esto se
determine el nombre del alumno con la edad mayor del arreglo.

PROGRAM NOMBRES_Y_EDADES
IMPLICIT NONE
INTEGER::I,M
CHARACTER(LEN=15)::NOM_M
CHARACTER(LEN=15),DIMENSION(10)::NOM
INTEGER,DIMENSION(10)::E
PRINT*,"INGRESAR EL NOMBRE Y SU EDAD "
DO I=1,10
READ*, NOM(I),E(I)
END DO

13 | P á g i n a
Ing. William Chauca Nolasco

M=E(1)
DO I=1,10
IF (E(I)>M)THEN
M=E(I)
NOM_M=NOM(I)
END IF
END DO
PRINT*,"EL NOMBRE DEL ALUMNO DE MAYOR EDAD=",NOM_M
PRINT*,"SU EDAD ES=",M
END PROGRAM NOMBRES_Y_EDADES

13.- Realice un programa que lea un vector y a partir de él forme un segundo


vector, de tal forma que el primer elemento pase a ser el segundo, el
segundo pase a ser el tercero, el último pase a ser el primero, y así
sucesivamente.

PROGRAM VECTORES
INTEGER::N,I
INTEGER,ALLOCATABLE,DIMENSION(:)::V1,V2
PRINT*,"INGRESAR TAMANO DE LOS VECTORES"
READ*,N
ALLOCATE(V1(N),V2(N))
PRINT*,"INGRESAR ELEMENTOS DE VECTOR 1"
READ*,(V1(I),I=1,N)
PRINT*,"VECTOR 1"
!1,2,3,4,5
PRINT*,(V1(I),I=1,N)
DO I=1,N
V2(I+1)=V1(I)
END DO
PRINT*,"VECTOR 2"
PRINT*,(V2(I),I=1,N)
END PROGRAM VECTORES

14.- Se tiene un arreglo de 15 filas y 12 columnas. Realice un programa que


permita leer el arreglo y que calcule y presente los resultados siguientes: El

14 | P á g i n a
Ing. William Chauca Nolasco

menor elemento del arreglo; la suma de los elementos de las cinco primeras
filas del arreglo; y el total de elementos negativos en las columnas de la
quinta a la nueve.

PROGRAM FILAS_Y_COLUMNAS
IMPLICIT NONE
INTEGER::I,J,C,MEN,SU
INTEGER,DIMENSION(15,12)::MT
PRINT*,"INGRESAR ELEMENTOS DEL ARREGLO"
READ*,((MT(I,J),J=1,12),I=1,15)
PRINT*,"MATRIZ"
DO I=1,15
PRINT*,(MT(I,J),J=1,12)
END DO
MEN=MT(1,1)
DO I=1,15
DO J=1,12
IF (MT(I,J)<MEN)THEN
MEN=MT(I,J)
END IF
END DO
END DO
PRINT*,"EL MENOR ELEMENTO DEL ARREGLO",MEN
!SUMA DE LOS ELEMENTOS DE LAS CINCO PRIMERAS FILAS
SU=0
DO I=1,5
DO J=1,12
SU=SU+MT(I,J)
END DO
END DO
PRINT*,"LA SUMA DE TODOS LOS ELEMENTOS DE LAS 5 PRIMERAS FILAS
ES:",SU
!TOTAL DE ELEMENTOS NEGATIVOS EN LAS COLUMNAS DE LA QUINTA A LA
NUEVE.
C=0
DO I=1,15
DO J=5,9
IF(MT(I,J)<0)THEN
C=C+1
END IF

15 | P á g i n a
Ing. William Chauca Nolasco

END DO
END DO
PRINT*,"CANTIDAD DE ELEMENTOS NEGATIVOS DE LA COLUMNA 5 A LA
9=",C
END PROGRAM FILAS_Y_COLUMNAS

15.- Realice un programa que lea dos vectores de cien elementos y que
calcule la suma de éstos guardando su resultado en otro vector, el cual se
debe presentar en forma impresa.

PROGRAM ELEMENTOS
IMPLICIT NONE
INTEGER::I
INTEGER,DIMENSION(100)::A,B,C
PRINT*,"ELEMENTOS DE VECTOR A"
READ*,(A(I),I=1,100)
PRINT*
PRINT*,"ELEMENTOS DE VECTOR B"
READ*,(B(I),I=1,100)
PRINT*
PRINT*,"VECTOR A"
PRINT*,(A(I),I=1,100)
PRINT*
PRINT*,"VECTOR B"
PRINT*,(B(I),I=1,100)
PRINT*
PRINT*,"SUMA DE VECTORES"
DO I=1,100
C(I)=A(I)+B(I)
END DO
PRINT*
PRINT*,(C(I),I=1,100)
END PROGRAM ELEMENTOS

16.- Se tienen dos matrices cuadradas (de 12 filas y 12 columnas cada una).
Realice un programa que lea los arreglos y que determine si la diagonal
principal de la primera es igual a la diagonal principal de la segunda.
(Diagonal principal es donde los subíndices I, J son iguales).

16 | P á g i n a
Ing. William Chauca Nolasco

PROGRAM MATRICES_CUADRADAS
IMPLICIT NONE
INTEGER,DIMENSION(12,12)::MT1,MT2
INTEGER,DIMENSION(12)::V1,V2
INTEGER::I,J,C
PRINT*,"INGRESAR DATOS DE LA MATRIZ 1"
READ*,((MT1(I,J),J=1,12),I=1,12)
PRINT*,"INGRESAR DATOS DE LA MATRIZ 2"
READ*,((MT2(I,J),J=1,12),I=1,12)
PRINT*,"MATRIZ 1"
DO I=1,12
PRINT*,(MT1(I,J),J=1,12)
END DO
PRINT*,"MATRIZ 2"
DO I=1,12
PRINT*,(MT2(I,J),J=1,12)
END DO
!DIAGONAL PRINCIPAL PARA MATRIZ 1
DO I=1,12
DO J=1,12
IF (I==J)THEN
V1(I)=MT1(I,J)
END IF
END DO
END DO
PRINT*,"VECTOR GUARDA ELEMENTOS DE LA DIAGONAL DEL VECTOR 1"
PRINT*,(V1(I),I=1,12)
!DIAGONAL PRINCIPAL PARA MATRIZ 2
DO I=1,12
DO J=1,12
IF(I==J)THEN
V2(I)=MT2(I,J)
END IF
END DO
END DO
PRINT*,"VECTOR GUARDA ELEMENTOS DE LA DIAGONAL DEL VECTOR 1"
PRINT*,(V2(I),I=1,12)
C=0
DO I=1,12

17 | P á g i n a
Ing. William Chauca Nolasco

IF (V1(I)==V2(I))THEN
C=C+1
IF (C==12)THEN
PRINT*,"LAS DIAGONALES DE LAS MATRICES SON IGUALES"
END IF
END IF
END DO
END PROGRAM MATRICES_CUADRADAS

18 | P á g i n a
Ing. William Chauca Nolasco

17.- Se tiene una matriz de 12 filas por 19 columnas y se desea un programa


para encontrar todos sus elementos negativos y para que les cambie ese
valor negativo por un cero. Realice un programa para tal fin.

PROGRAM CAMBIO_DE_NEGATIVO_A_CERO
IMPLICIT NONE
INTEGER::I,J
INTEGER,DIMENSION(12,19)::MATRIZ
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ 12X19"
READ*,((MATRIZ(I,J),J=1,19),I=1,12)
PRINT*,"MATRIZ"
DO I=1,12
PRINT*,(MATRIZ(I,J),J=1,19)
END DO
DO I=1,12
DO J=1,19
IF(MATRIZ(I,J)<0)THEN
MATRIZ(I,J)=0
END IF
END DO
END DO
PRINT*,"MATRIZ CON ELEMENTOS NEGATIVOS CONVERTIDOS A CERO"
DO I=1,12
PRINT*,(MATRIZ(I,J),J=1,19)
END DO
END PROGRAM CAMBIO_DE_NEGATIVO_A_CERO

18.- Se tiene en un arreglo cien elementos representando calificaciones de


los estudiantes de una escuela. Realice un programa que lea el arreglo y
calcule la calificación promedio del grupo, además, que cuente los
estudiantes que obtuvieron calificaciones arriba del promedio del grupo.

19 | P á g i n a
Ing. William Chauca Nolasco

PROGRAM CALIFICACION_PROMEDIO
IMPLICIT NONE
INTEGER,DIMENSION(100)::CL
REAL::PROM,SU
INTEGER::I,C
PRINT*,"INGRESAR CALIFICACIONES DE LOS ESTUDIANTES"
READ*,(CL(I),I=1,100)
PRINT*,"VECTOR CALIFICACIONES"
PRINT*,(CL(I),I=1,100)
SU=0
DO I=1,100
SU=SU+CL(I)
END DO
PROM=SU/100.
PRINT*
PRINT*,"CALIFICACION PROMEDIO",PROM
PRINT*
C=0
DO I=1,100
IF (CL(I)>PROM)THEN
C=C+1
END IF
END DO
PRINT*,"ESTUDIANTES QUE OBTUVIERON CALIFICACIONES ARRIBA DEL
PROMEDIO=",C
END PROGRAM CALIFICACION_PROMEDIO

19.- Realice un programa que lea un vector de cien elementos y que calcule
su magnitud.

PROGRAM MAGNITUD
INTEGER::I
REAL::M,SUR2
REAL,DIMENSION(100)::V
PRINT*,"INGRESAR ELEMENTOS DEL VECTOR"
READ*,(V(I),I=1,100)
PRINT*,"VECTOR "
PRINT*,(V(I),I=1,100)
SUR2=0
DO I=1,100

20 | P á g i n a
Ing. William Chauca Nolasco

SUR2=SUR2+V(I)**2
END DO
M=SQRT(SUR2)
PRINT*,"LA MAGNITUD DEL VECTOR ES=",M
END PROGRAM MAGNITUD

20.- Realice un programa que lea una matriz de cinco filas y seis columnas y
que cuente los elementos negativos que contiene, así como también
cuántos elementos de la diagonal principal son igual a cero.

PROGRAM DIAGONAL_PRINCIPAL
IMPLICIT NONE
INTEGER::I,J,C,N
INTEGER,DIMENSION(5,6)::MT
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ 5x6"
READ*,((MT(I,J),J=1,6),I=1,5)
PRINT*,"MATRIZ"
DO I=1,5
PRINT*,(MT(I,J),J=1,6)
END DO
N=0
C=0
DO I=1,5
DO J=1,6
IF(MT(I,J)<0)THEN
C=C+1
END IF
IF(I==J .AND. MT(I,J)==0)THEN
N=N+1
END IF
END DO
END DO
PRINT*,"CANTIDAD DE NEGATIVOS=",C
PRINT*,"ELEMENTOS DIAGONAL PRINCIPAL IGUALES A CERO=",N
END PROGRAM DIAGONAL_PRINCIPAL

21 | P á g i n a
Ing. William Chauca Nolasco

21.- Realice un programa que calcule el producto de dos vectores. Uno de


ellos es de una fila con diez elementos y el otro con una columna de diez
elementos.

PROGRAM PRODUCTO_DE_DOS_VECTORES
IMPLICIT NONE
INTEGER::I,PD
INTEGER,DIMENSION(10)::V1,V2
PRINT*,"INGRESAR ELEMENTOS DEL PRIMER VECTOR"
READ*,(V1(I),I=1,10)
PRINT*,"INGRESAR ELEMENTOS DEL SEGUNDO VECTOR"
READ*,(V2(I),I=1,10)
PRINT*,"VECTOR 1"
PRINT*,(V1(I),I=1,10)
PRINT*,"VECTOR 2"
PRINT*,(V2(I),I=1,10)
PD=DOT_PRODUCT(V1,V2)
PRINT*,"EL PRODUCTO DE LOS DOS VECTORES ES=",PD
END PROGRAM PRODUCTO_DE_DOS_VECTORES

23.- Se tiene un arreglo de seis filas y ocho columnas y se sabe que se tiene
un elemento negativo. Realice un programa que indique la posición que ese
elemento ocupa en el arreglo (en la fila y la columna en la que se encuentra
ese elemento).

PROGRAM POSICION_DE_ELEMENTOS
IMPLICIT NONE
INTEGER::I,J,FILA,COLUMNA,NG

22 | P á g i n a
Ing. William Chauca Nolasco

INTEGER,DIMENSION(6,8)::MT
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ 6x8"
READ*,((MT(I,J),J=1,8),I=1,6)
PRINT*,"MATRIZ"
DO I=1,6
PRINT*,(MT(I,J),J=1,8)
END DO
NG=MT(1,1)
DO I=1,6
DO J=1,8
IF (MT(I,J)<=NG) THEN
NG=MT(I,J)
FILA=I
COLUMNA=J
END IF
END DO
END DO
PRINT*,"FILA QUE OCUPA EL NEGATIVO=",FILA
PRINT*," COLUMNA QUE OCUPA EL NEGATIVO=",COLUMNA
END PROGRAM POSICION_DE_ELEMENTOS

24.- Realice un programa que lea una matriz de C columnas y R renglones. A


partir de ella genere dos vectores que contengan la suma de sus renglones y
la suma de sus columnas.

PROGRAM SUMA_DE_REGLONES_Y_COLUMNAS
IMPLICIT NONE
INTEGER::I,J,SU_FIL,SU_COL,F,C
INTEGER,DIMENSION(100)::FIL,COL
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MT
PRINT*,"INGRESAR NUMERO DE FILAS Y COLUMNAS DE LA MATRIZ"
READ*,F,C
ALLOCATE(MT(F,C))
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ"
READ*,((MT(I,J),J=1,C),I=1,F)
PRINT*,"MATRIZ"
DO I=1,F
PRINT*,(MT(I,J),J=1,C)
END DO
!PARA SUMA DE FILAS

23 | P á g i n a
Ing. William Chauca Nolasco

DO I=1,F
SU_FIL=0
DO J=1,C
SU_FIL=SU_FIL+MT(I,J)
END DO
FIL(I)=SU_FIL
END DO
PRINT*,"VECTOR QUE SUMA FILAS DE MATRIZ"
PRINT*,(FIL(I),I=1,F)

!PARA COLUMNAS
DO I=1,C
SU_COL=0
DO J=1,F
SU_COL=SU_COL+MT(J,I)
END DO
COL(I)=SU_COL
END DO
PRINT*,"VECTOR QUE SUMA COLUMNAS DE MATRIZ"
PRINT*,(COL(I),I=1,C)
END PROGRAM SUMA_DE_REGLONES_Y_COLUMNAS

24 | P á g i n a
Ing. William Chauca Nolasco

25.- Realice un programa que calcule el valor que se obtiene al multiplicar


entre sí los elementos de la diagonal principal de una matriz de 5 por 5
elementos.

PROGRAM PROBLEMA_25
IMPLICIT NONE
INTEGER,DIMENSION(5,5)::MATRIZ
INTEGER::PRODUCTO
INTEGER::I,J
PRINT*,"INGRESE ELEMENTOS DE LA MATRIZ DE ORDEN 5"
READ*,((MATRIZ(I,J),J=1,5),I=1,5)
PRINT*,"MATRIZ INGRESADA"
DO I=1,5
PRINT*,(MATRIZ(I,J),J=1,5)
END DO
!CALCULANDO DIAGONAL PRINCIPAL
!1,2,3,4
PRODUCTO=1
DO I=1,5
DO J=1,5
IF(I==J)THEN
PRODUCTO=PRODUCTO*MATRIZ(I,J)
END IF
END DO
END DO
PRINT*,"EL PRODUCTO DE LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL
ES:",PRODUCTO
END PROGRAM PROBLEMA_25

26.- Realice un programa que a partir de la matriz del problema anterior


encuentre cuántos elementos tienen valor par y cuántos valores impares.
PROGRAM PROBLEMA_26
IMPLICIT NONE
INTEGER,DIMENSION(5,5)::MATRIZ
INTEGER::I,J,SUMAPAR,SUMAIMPAR
PRINT*,"INGRESE ELEMENTOS DE LA MATRIZ DE ORDEN 5"
READ*,((MATRIZ(I,J),J=1,5),I=1,5)
PRINT*,"MATRIZ INGRESADA"
DO I=1,5
PRINT*,(MATRIZ(I,J),J=1,5)

25 | P á g i n a
Ing. William Chauca Nolasco

END DO
SUMAPAR=0
SUMAIMPAR=0
DO I=1,5
DO J=1,5
IF (MOD(MATRIZ(I,J),2)==0) THEN
SUMAPAR=SUMAPAR+MATRIZ(I,J)
ELSE IF (MOD(MATRIZ(I,J),2)/=0) THEN
SUMAIMPAR=SUMAIMPAR+MATRIZ(I,J)
END IF
END DO
END DO
PRINT*
PRINT*,"LA SUMA DE LOS NUMEROS PARES
",SUMAPAR
PRINT*
PRINT*,"LA SUMA DE LOS NUMEROS
IMPARES ",SUMAIMPAR
END PROGRAM PROBLEMA_26

27.- Elaborar un programa que permita visualizar el nombre de los doce


meses del año y el número total de días de cada mes. Utilizar valores de
inicialización para los vectores correspondientes.

PROGRAM PROBLEMA_27
CHARACTER(LEN=15),DIMENSION(12)::MES
INTEGER,DIMENSION(12,1)::DIAS
MES=(/"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","A
GOSTO","SETIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"/)
DIAS=RESHAPE((/31,28,31,30,31,30,31,31,30,31,30,31/),(/12,1/))
PRINT 200
200 FORMAT(3X,"MES",18X,"DIAS")
DO I=1,12
26 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,MES(I),(DIAS(I,J),J=1,1)
END DO
END PROGRAM PROBLEMA_27

28.- Elaborar un programa que permita el ingreso de 5 números enteros en


un vector 11 22 33 44 55, y visualize los siguientes elementos tal como se
muestra; (Usar tripletas).

PROGRAM PROBLEMA_28
!22 33 44
!33 44 55
!11 22 33
!11 33 55
!22 44 55
INTEGER,DIMENSION(5)::V=(/11,22,33,44,55/)
INTEGER,DIMENSION(3)::FILA1,FILA2,FILA3,FILA4,FILA5=(/2,4,5/)!FILA5
ESPESCIFICA LOS INDICES DE V
FILA1=V(2:4)
FILA2=V(3:5)
FILA3=V(1:3)
FILA4=V(1:5:2)
FILA5=V(FILA5)
PRINT*,FILA1
PRINT*,FILA2
PRINT*,FILA3
PRINT*,FILA4
PRINT*,FILA5
END PROGRAM PROBLEMA_28

29.- Elaborar un programa que inicialice una matriz A (3x4) con los siguientes
valores que se muestran y se obtenga la transpuesta de dicha matriz.

27 | P á g i n a
Ing. William Chauca Nolasco

PROGRAM PROBLEMA_29
IMPLICIT NONE
INTEGER,DIMENSION(2,4)::MAT_A=RESHAPE((/1,5,2,6,3,7,4,8/),(/2,4/))
INTEGER,DIMENSION(4,2)::MATRIZ_T
INTEGER::I,J
PRINT*,"MATRIZ A"
DO I=1,2
PRINT*,(MAT_A(I,J),J=1,4)
END DO
DO I=1,2
DO J=1,4
MATRIZ_T(J,I)=MAT_A(I,J)
END DO
END DO
PRINT*, "LA TRANSPUESTA DE A ES"
DO I=1,4
PRINT*,(MATRIZ_T(I,J),J=1,2)
END DO
END PROGRAM PROBLEMA_23

30.- Calcule la magnitud de un vector cuyas componentes son: 3 4 y 5,


utilizar la lectura explicita para ingresar dichos valores.

PROGRAM PROBLEMA_30
IMPLICIT NONE
INTEGER::I
INTEGER,DIMENSION(3)::A
REAL::MAG
PRINT*,"INGRESAR VALORES 3, 4 Y 5"
DO I=1,3
READ*,A(I)
END DO
PRINT*,"VECTOR A"
PRINT*,(A(I),I=1,3)
MAG=0
DO I=1,3
MAG=MAG+A(I)**2
END DO
MAG=SQRT(MAG)

28 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,"LA MAGNITUD DEL VECTOR ES=”, MAG


END PROGRAM PROBLEMA_30

31.- Desarrolle un programa utilizando la función MATMUL que calcule el


producto de dos matrices A (M, N) y B (P, Q), donde N debe ser igual a P; en
caso contrario las matrices no son multiplicadas.

PROGRAM PROBLEMA_31
INTEGER,DIMENSION(100,100)::MXN,PXQ,PROD
INTEGER::I,J
INTEGER::M,N,P,Q
PRINT*,"INGRESE FILAS Y COLUMNAS DE LA MATRIZ A"
READ*,M,N
PRINT*,"INGRESE FILAS Y COLUMNAS DE LA MATRIZ B"
READ*,P,Q
IF(N==P)THEN
PRINT*,"INGRESE DATOS DE LA MATRIZ ",M,"X",N
READ*,((MXN(I,J),J=1,N),I=1,M)
PRINT*,"INGRESE DATOS DE LA MATRIZ ",P,"X",Q
READ*,((PXQ(I,J),J=1,Q),I=1,N)
PRINT*,"VECTOR MXN"
DO I=1,M
PRINT*,(MXN(I,J),J=1,N)
END DO
PRINT*,"VECTOR PXQ"
DO I=1,P
PRINT*,(PXQ(I,J),J=1,Q)
END DO
!PRODUCTO DE 2 MATRICES
PROD=MATMUL(MXN,PXQ)
PRINT*,"EL PRODUCTO DE MATRICES ES:"
DO I=1,M
PRINT*,(PROD(I,J),J=1,Q)
END DO
ELSE
PRINT*,"ESTAS MATRICES NO SE PUEDEN MULTIPLICAR "
PRINT*,"DEBIDO A QUE EL NUMERO DE COLUMNAS DE LA"
PRINT*,"MATRIZ A ES DIFERENTE AL NUMERO DE FILAS"
PRINT*,"DE LA MATRIZ B, !VUELVA A INTENTARLO! "
END IF

29 | P á g i n a
Ing. William Chauca Nolasco

END PROGRAM PROBLEMA_31

32.- Desarrolle un programa que calcule la determinante de una matriz


cuadrada de orden mayor o igual que tres.

PROGRAM PROBLEMA_32
INTEGER::I,J,K,L,N
REAL,ALLOCATABLE,DIMENSION(:,:)::MATRIZ
real::DET
PRINT*,"INGRESAR ORDEN DE LA MATRIZ :"
READ*,N
M=N-1
ALLOCATE(MATRIZ(N,N))
IF(N>=3) THEN
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ"
READ*,((MATRIZ(I,J),J=1,N),I=1,N) !1,2,3,4,5,3,4,5,6
DO I=1,N
PRINT*,(MATRIZ(I,J),J=1,N)
END DO
!HALLANDO DETERMINANTE
DET=MATRIZ(1,1)
DO K=1,M
L=K+1
DO I=L,N
DO J=L,N
MATRIZ(I,J)=(MATRIZ(K,K)*MATRIZ(I,J)-
MATRIZ(K,J)*MATRIZ(I,K))/MATRIZ(K,K)
END DO
END DO
DET=DET*MATRIZ(K+1,K+1)
END DO
PRINT*,"DETERMINANTE DE LA MATRIZ"
PRINT*,DET
ELSE
PRINT*,"NO SE PUEDE REALIZAR LA OPERACION PORQUE O NO ES MATRIZ
CUADRARA O NO ES DE ORDEN MAYOR A 3"
END IF
END PROGRAM PROBLEMA_32

30 | P á g i n a
Ing. William Chauca Nolasco

33.- Desarrolle un programa que permita el ingreso de un vector con los


siguientes datos: 5 6 2 1 9 y visualice en orden ascendente los valores del
vector.

PROGRAM PROBLEMA_33
IMPLICIT NONE
REAL::TEMPORAL
REAL,DIMENSION(50)::X
INTEGER::N,I,J
PRINT*,"NUMERO DE DATOS A LEER"
READ*,N
DO I=1,N
PRINT*,"ELEMENTO",I
READ*,X(I)
END DO
DO I=1,N
DO J=N,I,-1
IF(X(J-1)>X(J)) THEN

31 | P á g i n a
Ing. William Chauca Nolasco

TEMPORAL=X(J-1)
X(J-1)=X(J)
X(J)=TEMPORAL
END IF
END DO
END DO
PRINT*,"ELEMENTOS ORDENADOS"
DO I=1,N
PRINT*,"ELEMENTO",I,"=",X(I)
END DO
END PROGRAM PROBLEMA_33

34.- Elaborar un programa que visualice los elementos de un arreglo, desde


el índice mayor al índice menor.

PROGRAM PROBLEMA_34
INTEGER,DIMENSION(5)::V
!LECTURA EXPLICITA
PRINT*,"INGRESE VALORES DEL VECTOR"
DO I=1,5
READ*,V(I)
END DO
DO I=5,1,-1
PRINT*,V(I)
END DO
END PROGRAM PROBLEMA_34

35.- Supóngase que se dan cuatro pruebas a un curso de 3 estudiantes,


elaborar un programa que muestre el promedio de las cuatro notas de cada
estudiante.

PROGRAM PROBLEMA_35
REAL,DIMENSION(4)::NOTAS1,NOTAS2,NOTAS3
S1=0
S2=0
S3=0
!INGRESANDO VALORES PARA LAS NOTAS DE LOS 3 ALUMNOS

PRINT*, "INGRESE NOTAS DEL PRIMER ALUMNO"

32 | P á g i n a
Ing. William Chauca Nolasco

DO I=1,4
READ*, NOTAS1(I)
END DO

PRINT*, "INGRESE NOTAS DEL SEGUNDO ALUMNO"


DO I=1,4
READ*, NOTAS2(I)
END DO

PRINT*, "INGRESE NOTAS DEL TERCER ALUMNO"


DO I=1,4
READ*, NOTAS3(I)
END DO
DO I=1,4
S1=S1+NOTAS1(I)
S2=S2+NOTAS2(I)
S3=S3+NOTAS3(I)
END DO
PROM1=S1/4
PROM2=S2/4
PROM3=S3/4
PRINT*,"PROMEDIO DEL PRIMER ALUMNO", PROM1
PRINT*, "PROMEDIO DEL SEGUNDO ALUMNO", PROM2
PRINT*, "PROMEDIO DEL TERCER ALUMNO", PROM3
END PROGRAM PROBLEMA_35

37.- Elaborar un programa que calcule la suma de dos matrices cuadradas A


y B.

PROGRAM SUMA_DE_MATRICES
INTEGER::I,J
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MAT1,MAT2,SUMA
PRINT*,"INGRESAR FILAS Y COLUMNAS DE MATRICES A SUMAR"
READ*,M,N
ALLOCATE(MAT1(M,N),MAT2(M,N),SUMA(M,N))
IF(M==N)THEN
PRINT*,"INGRESAR ELEMENTOS DE PRIMERA MATRIZ"
READ*,((MAT1(I,J),J=1,N),I=1,N)
PRINT*,"INGRESAR ELEMENTOS DE SEGUNDA MATRIZ"
READ*,((MAT2(I,J),J=1,N),I=1,N)

33 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,"MATRIZ 1"
DO I=1,N
PRINT*,(MAT1(I,J),J=1,N)
END DO
PRINT*,"MATRIZ 2"
DO I=1,N
PRINT*,(MAT2(I,J),J=1,N)
END DO
!CALCULANDO SUMA
DO I=1,N
DO J=1,N
SUMA(I,J)=MAT1(I,J)+MAT2(I,J)
END DO
END DO
PRINT*,"LA SUMA DE MATRICES ES:"
DO I=1,N
PRINT*,(SUMA(I,J),J=1,N)
END DO
ELSE
PRINT*,"NO SE PUEDE PROCEDER A REALIZAR LA OPERACION YA QUE LA
MATRIZ NO ES CUADRADA"
END IF
END PROGRAM SUMA_DE_MATRICES

38.- Elaborar un programa que calcule la suma de los cuadrados de los


elementos diagonales de cualquier matriz cuadrada.

PROGRAM PROBLEMA_38
IMPLICIT NONE
INTEGER::M,N
INTEGER,DIMENSION(100,100)::MATRIZ
INTEGER::SUMA
INTEGER::I,J
PRINT*,"INGRESE NUMERO DE FILAS Y COLUMNAS DE LA MATRIZ"
READ*,M,N
IF(M==N)THEN
PRINT*,"INGRESE DATOS DE LA MATRIZ",M,"X",N
READ*,((MATRIZ(I,J),J=1,N),I=1,M)
PRINT*,"MATRIZ INGRESADA"
DO I=1,M

34 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,(MATRIZ(I,J),J=1,N)
END DO
!CALCULANDO DIAGONAL PRINCIPAL
!1,2,3,4
SUMA=0
DO I=1,M
DO J=1,N
IF(I==J)THEN
SUMA=SUMA+MATRIZ(I,J)**2
END IF
END DO
END DO
PRINT*,"LA SUMA DE LOS CUADRADOS DE LOS ELEMENTO DE LA
DIAGONAL PRINCIPAL ES :",SUMA
ELSE
PRINT*,"NO SE PUEDE PROCEDER A OPERAR YA QUE LA MATRIZ
INGRESADA NO ES CUADRADA"
END IF
END PROGRAM PROBLEMA_38

39.- Elaborar un programa que calcule el producto de dos matrices elemento


a elemento.

PROGRAM PROBLEMA_39
IMPLICIT NONE
INTEGER,DIMENSION(100,100)::MXN,PXQ,PROD
INTEGER::I,J,N ,M,P,Q
PRINT*,"INGRESE NUMERO DE FILAS Y COLUMNAS DE LA PRIMERA
MATRIZ"
READ*,M,N
PRINT*,"INGRESE NUMERO DE FILAS Y COLUMNAS DE LA SEGUNDA
MATRIZ"
READ*,P,Q
IF(M==P .AND. N==Q)THEN
PRINT*,"INGRESE DATOS DE LA MATRIZ 1"
READ*,((MXN(I,J),J=1,N),I=1,M)
PRINT*,"INGRESE DATOS DE LA MATRIZ 2"
READ*,((PXQ(I,J),J=1,Q),I=1,P)

35 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,"VECTOR MXN"
DO I=1,M
PRINT*,(MXN(I,J),J=1,N)
END DO
PRINT*,"VECTOR PXQ"
DO I=1,P
PRINT*,(PXQ(I,J),J=1,Q)
END DO
!PRODUCTO DE 2 MATRICES
DO I=1,M
DO J=1,N
PROD(I,J)=MXN(I,J)*PXQ(I,J)
END DO
END DO
PRINT*,"EL PRODUCTO DE MATRICES ES:"
DO I=1,M
PRINT*,(PROD(I,J),J=1,N)
END DO
ELSE
PRINT*,"LAS MATRICES NO SE PUEDEN MULTIPLICAR PORQUE LAS
MATRICES NO TIENEN LA MISMA ORDEN"
END IF
END PROGRAM PROBLEMA_39

40.- Elaborar un programa que compute el elemento mayor de una matriz.

PROGRAM ELEMENTO_MAYOR
REAL,ALLOCATABLE,DIMENSION(:,:)::MATRIZ
INTEGER::I,J,M,N
REAL::MAYOR
PRINT*,"INGRESAR NUMERO DE FILAS Y COLUMNAS DE LA MATRIZ:"
READ*,M,N
ALLOCATE(MATRIZ(M,N))
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ"
READ*,((MATRIZ(I,J),J=1,N),I=1,M)
MAYOR=MATRIZ(1,1)
DO I=1,M
DO J=1,N
IF (MATRIZ(I,J)>MAYOR) THEN
MAYOR=MATRIZ(I,J)

36 | P á g i n a
Ing. William Chauca Nolasco

END IF
END DO
END DO
PRINT*,"EL MAYOR VALOR ES",MAYOR
END PROGRAM ELEMENTO_MAYOR

41.- Elaborar un programa que calcule la magnitud de un vector, sabiendo


que la magnitud del vector es la raíz cuadrada de la suma de los cuadrados
de sus componentes.

PROGRAM PROBLEMA_41
INTEGER::I
REAL::MAG,SUM_R2
REAL,ALLOCATABLE,DIMENSION(:)::VECTOR
PRINT*,"INGRESAR CANTIDAD DE ELEMENTOS DEL VECTOR"
READ*,N
ALLOCATE(VECTOR(N))
PRINT*,"INGRESAR ELEMENTOS DEL VECTOR"
READ*,(VECTOR(I),I=1,N)
SUM_R2=0
DO I=1,N
SUM_R2=SUM_R2+VECTOR(I)**2
END DO

37 | P á g i n a
Ing. William Chauca Nolasco

MAG=SQRT(SUM_R2)
PRINT*,"LA MAGNITUD DEL VECTOR ES:",MAG
END PROGRAM PROBLEMA_41

42.- Elaborar un programa que inicialice una matriz cuadrada como matriz
identidad.

PROGRAM MATRIZ_CUADRADA
INTEGER::I,J,N
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MT
PRINT*,"INGRESAR ORDEN DE LA MATRIZ"
READ*,N
ALLOCATE(MT(N,N))
DO I=1,N
DO J=1,N
IF(I==J)THEN
MT(I,J)=1
ELSE
MT(I,J)=0
END IF
END DO
END DO
DO I=1,N
PRINT*,(MT(I,J),J=1,N)
END DO
END PROGRAM MATRIZ_CUADRADA

43.- Elabore un programa que permita el ingreso de datos a dos vectores


cualquiera, de tal forma que calcule: el producto punto de dos vectores, el
producto de todos los elementos de los vectores, el máximo valor, mínimo
valor de los vectores, así como la localización del índice posicional donde se
encuentre el máximo valor y mínimo valor de los vectores ingresados.

PROGRAM PROBLEMA_43
REAL,DIMENSION(3)::A,B
REAL::C
PRINT*, "INGRESE VALORES PARA EL VECTOR A"
DO I=1,3
READ*, A(I)
END DO

38 | P á g i n a
Ing. William Chauca Nolasco

PRINT*, "INGRESE VALORES PARA EL VECTOR B"


DO I=1,3
READ*, B(I)
END DO
P=0
DO I=1,3
P=P+A(I)*B(I)
END DO
C=P
PRINT*, "EL PRODUCTO ESCALAR DEL VECTOR A CON EL VECTOR B ES",C
PRINT*, "EL PRODUCTO DEL LOS VALORES DEL VECTOR A ES",PRODUCT(A)
PRINT*, "EL PRODUCTO DE LOS VALORES DEL VECTOR B ES", PRODUCT(B)
PRINT*, "EL MAXIMO VALOR DEL VECTOR A ES", MAXVAL(A)
PRINT*, "EL MINIMO VALOR DEL VECTOR A ES", MINVAL(A)
PRINT*, "EL MAXIMO VALOR DEL VECTOR B ES", MAXVAL(B)
PRINT*, "EL MINIMO VALOR DEL VECTOR B ES", MINVAL(B)
END PROGRAM PROBLEMA_43

44.- Elaborar un programa que se ingrese datos a un vector y ordene de


menor a mayor sus elementos.

PROGRAM PROBLEMA_44
IMPLICIT NONE
REAL::TEMPORAL
REAL,DIMENSION(50)::VECTOR
INTEGER::N,I,J
PRINT*,"INGRESE TAMANIO DEL VECTOR"
READ*,N
DO I=1,N
PRINT*,"ELEMENTO",I
READ*,VECTOR(I)
END DO
DO I=1,N
DO J=N,I,-1
IF (VECTOR(J-1)>VECTOR(J)) THEN
TEMPORAL=VECTOR(J-1)

39 | P á g i n a
Ing. William Chauca Nolasco

VECTOR(J-1)=VECTOR(J)
VECTOR(J)=TEMPORAL
END IF
END DO
END DO
PRINT*,"ELEMENTOS ORDENADOS DE MENOR A MAYOR"
DO I=1,N
PRINT*,"ELEMENTO",I,"=",VECTOR(I)
END DO
END PROGRAM PROBLEMA_44

45.- Elaborar un programa que calcula el producto de un escalar por una


matriz.

PROGRAM PROBLEMA_45
REAL::ESCALAR
INTEGER,ALLOCATABLE,DIMENSION(:,:)::MATRIZ,MULT
PRINT*,"INGRESAR NUMERO DE FILAS Y COLUMNAS DE LA MATRIZ:"
READ*,M,N
PRINT*,"INGRESAR ESCALAR A MULTIPLICAR"
READ*,ESCALAR
ALLOCATE(MATRIZ(M,N),MULT(M,N))
PRINT*,"INGRESAR ELEMENTOS DE LA MATRIZ"
READ*,((MATRIZ(I,J),J=1,N),I=1,M)
PRINT*,"MATRIZ "
DO I=1,M
PRINT*,(MATRIZ(I,J),J=1,N)
END DO
!OPERACION ESCALAR POR MATRIZ
DO I=1,M
DO J=1,N
MULT(I,J)=ESCALAR*MATRIZ(I,J)
END DO
END DO
PRINT*,"ESCALAR POR MATRIZ ES:"
DO I=1,M
PRINT*,(MULT(I,J),J= 1,N)
END DO
END PROGRAM PROBLEMA_45

40 | P á g i n a
Ing. William Chauca Nolasco

46.- Una cadena de almacenes de la Tienda Plaza Vea tiene seis almacenes y
cada almacén tiene diez departamentos iguales. Las ventas semanales de la
cadena están almacenadas en un arreglo de 6 x 10 llamados VENTAS,
(VENTAS(i,j) denota las ventas semanales en el almacén i del departamento
j.). Elabore un programa que muestre estas ventas.

PROGRAM PROBLEMA_46
INTEGER,DIMENSION(6,10)::VENTAS
INTEGER::I,J
PRINT*,"INGRESAR ELEMENTOS DEL ARREGLO VENTAS"
READ*,((VENTAS(I,J),J=1,10),I=1,6)
PRINT*,"VISUALIZACION DE VENTAS EN ARREGLO"
DO I=1,6
PRINT*,(VENTAS(I,J),J=1,10)
END DO
PRINT*,"VENTAS SEMANALES POR ALMACEN Y DEPARTAMENTO:"
DO I=1,6
DO J=1,10
PRINT*," ALMACEN ",I," DEPARTAMENTO ",J," : ",VENTAS(I,J)
END DO
END DO
END PROGRAM PROBLEMA_46

47.- Elaborar un programa que utilice un array y determine el promedio de


las precipitaciones media mensual durante el año 2005 en el distrito de
Amarilis – Huánuco. Los datos de la precipitación se deben ingresar en una
sola línea o fila. Tal como se ve el cuadro.

PROGRAM PROBLEMA_47
INTEGER::I
REAL::SUMA,PROM
REAL,DIMENSION(12)::PRECIP=(/10.5,15.2,13.25,12.5,11.5,5.40,5.65,8.80,1
4.5,13.12,20.2,20.25/)
SUMA=0
PRINT*,(PRECIP(I),I=1,12)
DO I=1,12

41 | P á g i n a
Ing. William Chauca Nolasco

SUMA=SUMA+PRECIP(I)
END DO
PROM=SUMA/12
PRINT*,"EL PROMEDIO DE LAS PRECIPITACIONES MEDIA MENSUAL
DURANTE EL ANIO 2005 ES:”, PROM
END PROGRAM PROBLEMA_47

48.-Elabore un programa en fortran teniendo en cuenta los datos de


precipitación del problema anterior y visualice la precipitación mínima y
máxima además el nombre del mes que pertenece dichos valores de
precipitación.

PROGRAM PROBLEMA_48
IMPLICIT NONE
REAL,DIMENSION(12)::PRECIP=(/10.5,15.2,13.25,12.5,11.5,5.40,5.65,8.80,1
4.5,13.12,20.2,22.25/)
CHARACTER(LEN=12),DIMENSION(12)::MES
INTEGER::I
REAL::MAYOR,MENOR
CHARACTER(LEN=12)::MESMAY,MESMEN
MES=(/"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","A
GOSTO","SETIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"/)
MAYOR=PRECIP(1)
MENOR=PRECIP(1)
DO I=1,12
!PARA EL MAXIMO
IF ( PRECIP(I)>MAYOR) THEN
MAYOR=PRECIP(I)
MESMAY=MES(I)
END IF
!PARA EL MENOR
IF (PRECIP(I)<MENOR) THEN
MENOR=PRECIP(I)
MESMEN=MES(I)
END IF
END DO
PRINT*,"EL MAYOR VALOR ES",MAYOR," Y CORRESPONDE AL MES
",MESMAY
PRINT*,"EL MENOR VALOR ES",MENOR," Y CORRESPONDE AL MES
",MESMEN

42 | P á g i n a
Ing. William Chauca Nolasco

END PROGRAM PROBLEMA_48

49.- El producto Z de dos vectores de A y B está definido por:𝒛 =


∑𝒊=𝟑
𝒊=𝟏 𝒂𝒊 ⋅ 𝒃𝒊 , donde los vectores tienen los siguientes datos: A=[1.2,3.5,4.1],
B=[2.0,5.1,-1.1], elabore un programa que determine el vector Z.

PROGRAM PROBLEMA_49
REAL,DIMENSION(3)::V
REAL,DIMENSION(3)::U
REAL::SUMA
V=(/2.0,5.1,-1.1/)
U=(/1.2,3.5,4.1/)
SUMA=0
DO I=1,3
SUMA = SUMA + V(I)*U(I)
END DO

43 | P á g i n a
Ing. William Chauca Nolasco

PRINT*,"EL PRODUCTO VESTORIAL DE LOS VECTORES V y U ES:",SUMA


END PROGRAM PROBLEMA_49

50.- Elabore un programa que almacene en un vector X los siguientes datos


[2,3,5,9] además el programa debe permitir el ingreso de un valor que se
encuentre en el vector X, localice el valor del índice donde se encuentra
ubicado, así como el valor encontrado. De ingresar un valor distinto a los
datos del vector debe salir un mensaje “Valor No Encontrado”.

PROGRAM PROBLEMA_50
INTEGER,DIMENSION(4)::X=(/2,3,5,9/)
INTEGER::N,IZQ=1,DER=4,CEN,I
PRINT*,(X(I),I=1,4)
PRINT*,"INGRESE ELEMENTO A BUSCAR"
READ*,N
CEN=(IZQ+DER)/2
DO WHILE(N/=X(CEN) .AND. IZQ<DER)
IF(N>X(CEN))THEN
IZQ=CEN+1
ELSE
DER=CEN-1
END IF
CEN=(IZQ+DER)/2
END DO
IF(N==X(CEN))THEN
PRINT*,"EL VALOR SE ENCUENTRA EN LA POSICION",CEN
PRINT*,"VALOR ENCONTRADO",X(CEN)
ELSE
PRINT*,"VALOR NO ENCONTRADO"
END IF
END PROGRAM PROBLEMA_50

51.- Usando funciones propias de manipulación de array incorporadas en


Fortran90.

44 | P á g i n a
Ing. William Chauca Nolasco

Elabore un programa utilice las funciones de manipulación de arrays en


forma conveniente.

PROGRAM MANIPULACION_DE_ARRAY
IMPLICIT NONE
INTEGER::I,M
INTEGER::MAX_A,MAX_B,MIN_A,MIN_B,SA,SB,PD_E,PD_A,PD_B
INTEGER,ALLOCATABLE,DIMENSION(:)::VA,VB
PRINT*,"INGRESAR TAMANO DEL VECTOR A Y B"
READ*,M
ALLOCATE(VA(M),VB(M))
PRINT*,"INGRESAR ELEMENTOS DEL VECTOR A"
READ*,(VA(I),I=1,M)
PRINT*,"INGRESAR ELEMENTOS DEL VECTOR B"
READ*,(VB(I),I=1,M)
PRINT*,"VA"
PRINT*,(VA(I),I=1,M)
PRINT*,"VB"
PRINT*,(VB(I),I=1,M)
SA=SUM(VA)
SB=SUM(VB)
PD_A=PRODUCT(VA)
PD_B=PRODUCT(VB)
MAX_A=MAXVAL(VA)
MAX_B=MAXVAL(VB)
MIN_A=MINVAL(VA)
MIN_B=MINVAL(VB)
PD_E=DOT_PRODUCT(VA,VB)Z
PRINT*,"SUMA DE ELEMENTOS DEL VECTOR A=",SA
PRINT*,"SUMA DE ELEMENTOS DEL VECTOR B=",SB
PRINT*,"PRODUCTO DE ELEMENTOS DEL VECTOR A=",PD_A
PRINT*,"PRODUCTO DE ELEMENTOS DEL VECTOR B=",PD_B
PRINT*,"MINIMO VALOR DE ELEMENTOS DEL VECTOR A=",MIN_A
PRINT*,"MINIMO VALOR DE ELEMENTOS DEL VECTOR B=",MIN_B
PRINT*,"MAXIMO VALOR DE ELEMENTOS DEL VECTOR A=",MAX_A
PRINT*,"MAXIMO VALOR DE ELEMENTOS DEL VECTOR B=",MAX_B
PRINT*,"PRODUCTO ESCALAR DE LOS VECTORES A Y B=",PD_E
PRINT*,"POSICION MINIMA DEL VECTOR A=",MINLOC(VA)
PRINT*,"POSICION MINIMA DEL VECTOR B=",MINLOC(VB)
END PROGRAM MANIPULACION_DE_ARRAY

45 | P á g i n a
Ing. William Chauca Nolasco

52.- Teniendo en cuenta el siguiente programa:


Integer k(6)
Integer, dimension(6):: L=(/(I,I=1,6)/)
K=(/1,2,3,4,5,6/)
print*,k
print*,L
print*,x
end

AL EJECUTAR EL NOS SALE:

53.- Elabore un programa en fortran en la cual el vector A tenga elementos


inicializados [1,2,3], así como el vector B [10,9,8] y determine un vector C
con la siguiente expresión y visualice cada una de ellas: C( I ) =(A(I)+2 x I
)/B(I).
PROGRAM PROBLEMA_53
INTEGER::I

REAL,DIMENSION(3)::A=(/1,2,3/),B=(/10,9,8/),C
PRINT*,"VECTOR A"

PRINT*,(A(I),I=1,3)
PRINT*,"VECTOR B"
PRINT*,(B(I),I=1,3)
DO I=1,3
46 | P á g i n a
Ing. William Chauca Nolasco

C(I)=(A(I)+2*I)/B(I)
END DO
PRINT*,"VECTOR C"
PRINT*,(C(I),I=1,3)
END PROGRAM PROBLEMA_53

54.- Elaborar un programa que permita la lectura de 12 números y visualice


4 números por fila.
PROGRAM PROBLEMA_54
INTEGER::I,J
INTEGER,DIMENSION(3,4)::MATRIZ
PRINT*,"INGRESE 12 NUMEROS "
READ*,((MATRIZ(I,J),J=1,4),I=1,3)
PRINT*,"VISUALIZANDO 4 NUMEROS POR FILA"
DO I=1,3
PRINT*,(MATRIZ(I,J),J=1,4)
END DO
END PROGRAM PROBLEMA_54

55.- Elaborar un programa que ingrese 5 números en un vector y calcule la


suma de los cuadrados de los elementos, y calcule el producto de: (1-a1) (1-
a2) …(1-a5).
PROGRAM PROBLEMA_55
IMPLICIT NONE
INTEGER::I
REAL::PD,SU
INTEGER,DIMENSION(5)::A
PRINT*,"INGRESAR ELEMENTOS DEL VECTOR"
READ*,(A(I),I=1,5)
SU=0
DO I=1,5
SU=SU+A(I)**2
END DO
PD=1
DO I=1,5
PD=PD*(1-A(I))
END DO
PRINT*,"LA SUMA DE LOS CUADRADOS DE LOS NUMEROS ES ",SU
PRINT*," EL PRODUCTO DE (1-a1) (1-a2)....(1-a5) ES:",PD

47 | P á g i n a
Ing. William Chauca Nolasco

END PROGRAM PROBLEMA_55

57.- Elabore un programa que genere la matriz:

program crear
integer,dimension(100,100)::A
integer::m,i,j
print*,"Matriz cuadrada"
print*,"Ingrese numero de filas y columnas"
read*,m !numero de filas y columnas

!Creando la matriz identidad


do i=1,m
do j=1,m
if (i==j) then
A(i,j)=5
else
A(i,j)=0
end if
end do
end do

!Imprimiendo la matriz identidad


print*,""
print*,"Matriz identidad"
do i=1,m
print*,(A(i,j),j=1,m)

48 | P á g i n a
Ing. William Chauca Nolasco

end do
end program crear

58.- Elabore un programa para general la matriz

program matriz
integer,dimension(7,7)::A
integer::i,j,k
k=0
!Creando matriz
do i=1,7
do j=1,7

49 | P á g i n a
Ing. William Chauca Nolasco

if (i==j) then
A(i,j)=-3+k
else
A(i,j)=0
end if
end do
k=k+1
end do
!Imprimiendo matriz
print*,"Matriz"
1 format(1x,1x,1x,1x,1x,1x,1x,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1)
do i=1,7
print 1,(A(i,j),j=1,7)
end do
end program matriz

59.Elabore un programa para determinar la determinante de la matriz

2 5 6
[𝐴] = [−6 7 1]
3 4 2

CODIGO

program problema59
integer::i,j
real,dimension(3,3)::a !a=(/2,5,6/,/-6,7,1/,/3,4,2/)
print*,"Ingrese los valores asignados de la matriz"
do i=1,3
do j=1,3
print*,"Ingrese el valor de la posicion (",i,",",j,")"
read*,a(i,j)
end do
end do
det1=(a(1,1)*((a(2,2)*a(3,3))-(a(2,3)*a(3,2))))
det2=(a(1,2)*((a(2,1)*a(3,3))-(a(2,3)*a(3,1))))
det3=(a(1,3)*((a(2,1)*a(3,2))-(a(2,2)*a(3,1))))

50 | P á g i n a
Ing. William Chauca Nolasco

det=det1-det2+det3
print*,"La determinante es ",det
end program problema59

60.- Elabore un programa para determinar la matriz inversa


PROGRAM INVERSA
INTEGER,DIMENSION(1:3,1:3)::M
INTEGER::I,J

M=RESHAPE((/1,1,0,5,1,-3,2,7,4/),(/3,3/))
PRINT*,"MOSTRAR LA MATRIZ M"
DO I=1,3
PRINT*,(M(I,J),J=1,3)
END DO

END PROGRAM INVERSA

51 | P á g i n a
Ing. William Chauca Nolasco

61.- Se tiene una matriz A, B y el vector V. Elabore un programa que genere


la matriz según el siguiente enunciado:

La matriz A debe contener las cuatro últimas columnas de las filas 1 y la 3 de


A por las cuatro primeras columnas de las primeras dos filas de la matriz B,
las cuatro últimas columnas de la cuarta fila de A por los elementos 5 a 8 del
vector V, y las cuatro últimas columnas de la quinta fila de A por las
columnas de 2 a 5 de la tercera fila de B El programa debe visualizar la nueva
matriz A

program visualizar
integer,dimension(5,6)::A=reshape((/(i,i=2,17,3),(i,i=3,18,3),(i,i=4,19,3),(i,i=
5,20,3),(i,i=6,21,3)/),(/5,6/)),A1

52 | P á g i n a
Ing. William Chauca Nolasco

integer,dimension(3,6)::B=reshape((/(i,i=5,30,5),(i,i=30,55,5),(i,i=55,80,5)/),
(/3,6/))
integer,dimension(9)::V=(/(i,i=99,91,-1)/)
print*,"Matriz A"
print*,((A(j,i),j=1,5),i=1,6)
print*,""
print*,"Matriz B"
print*,((B(j,i),j=1,3),i=1,6)
print*,""
print*,"Vector V"
print*,(V(i),i=1,9)

end program visualizar

64.- Cree un vector fila en el cual el primer elemento sea 1 y el último


elemento sea 33, con una distancia de 2 entre los elementos (1,3,5,…,33)

program vector_fila
integer,dimension(17)::A=(/(i,i=1,33,2)/)
print*,"Vector A"
1
format(i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.1,i4.
1,i4.1)
print 1,(A(i),i=1,17)
end program vector_fila

65.- Cree un vector columna con 12 elementos igualmente distanciados, en


el cual el primer elemento sea -1 y el último
-15.

program columna
real,dimension(12)::A
real::s=-14./11
do i=1,12
A(i)=3./11+i*s
end do

53 | P á g i n a
Ing. William Chauca Nolasco

!Imprimiendo [A]
print*,"Vector columna A"
print*,""
do i=1,12
print*,A(i)
end do
end program columna

67. Cree un vector columna con 12 elementos igualmente distanciados,


en el cual el primer elemento sea -1 y el último -15.

DIAGRAMA DE FLUJO

CODIGO

program problema67
integer::i,j=1
real,dimension(12,1)::a
print*,"El primer elemento es -1 y el ultimo es -15"
print*,"Ingrese los elementos restantes"
do i=2,11
do j=1,1
read*,a(i,j)
end do
end do
a(1,1)=-1
a(12,1)=-12
print*,"El vector se muestra a continuacion"
do i=1,12
do j=1,1
print*,a(i,j)
print*
end do
end do
end program problema67

54 | P á g i n a
Ing. William Chauca Nolasco

68.-Elabore un programa que realice las siguientes operaciones

UTILICE LA MATRIZ A PARA:


A) CREAR UN VECTOR FILA DE 5 ELEMENTOS LLAMADO Va, QUE
CONTENGA LOS ELEMENTOS DE LA SEGUNDA FILA DE A
B) CREAR UN VECTOR FILA DE 6 ELEMENTOS LLAMADO Vb, QUE
CONTENGA LOS ELEMENTOS DE LA CUARTA COLUMNA
C) CREAR UN VECTOR FILA DE 10 ELEMETOS LLAMADO Vc, QUE
CONTENGA LOS ELEMETOS DE LA PRIMERA Y SEGUNDA FILA
D) CREAR UN VECTOR FILA DE 6 ELEMENTOS LLAMADO Vd, QUE
CONTENGA LOS ELEMENTOS DE LA SEGUNDA A QUINTA COLUMNA
DE A
PROGRAM PROBLEMAS
INTEGER,DIMENSION(1:3,1:5)::M

55 | P á g i n a
Ing. William Chauca Nolasco

INTEGER::I,J

M=RESHAPE((/6,12,34,43,6,18,2,34,7,11,0,41,87,5,9/),(/3,5/))
PRINT*,"MOSTRAR LA MATRIZ M"
DO I=1,3
PRINT*,(M(I,J),J=1,5)

END DO

CALL MATRIZ(M)

END PROGRAM PROBLEMAS

SUBROUTINE MATRIZ(Va)

INTEGER,DIMENSION(1:5)::Va
PRINT*,"EL VECTOR Va ES="

PRINT*,Va(2:14:3)
END SUBROUTINE MATRIZ

56 | P á g i n a
Ing. William Chauca Nolasco

69.- Elabore un programa que realice las siguientes operaciones


Cree la siguiente matriz C:

Utilice C para:

a) Crear un vector columna de tres elementos llamado ua, que


contenga los elementos de la tercera columna de C.

program matriz_c
integer,dimension(3,5)::C
integer,dimension(3)::ua
integer::i
print*,"Ingrese matriz C"
do i=1,3
read*,(C(i,j),j=1,5)
end do
!Creando vector ua
do i=1,3
ua(i)=C(i,3)
end do
!Imprimiendo vector ua
print*,""
print*,"Vector ua"
do i=1,3
print*,ua(i)
end do
end program matriz_c

b) Crear un vector columna de cinco elementos llamado ub, que


contenga los elementos de la segunda fila de C

program matriz_c
integer,dimension(3,5)::C

57 | P á g i n a
Ing. William Chauca Nolasco

integer,dimension(5)::ub
integer::i
print*,"Ingrese matriz C"
do i=1,3
read*,(C(i,j),j=1,5)
end do
!Creando vector ub
do j=1,5
ub(j)=C(2,j)
end do
!Imprimiendo vector ub
print*,""
print*,"Vector ub"
do j=1,5
print*,ub(j)
end do
end program matriz_c

c) Crear un vector columna de nueve elementos llamado uc, que


contenga los elementos de la primera, tercera y quinta columna
de C.

program matriz_c
integer,dimension(3,5)::C
integer,dimension(5)::uc
integer::i,k=1
print*,"Ingrese matriz C"
do i=1,3
read*,(C(i,j),j=1,5)
end do
!Creando vector uc
do j=1,5,2
do i=1,3
uc(k)=C(i,j)
k=k+1
end do
end do
!Imprimiendo vector uc
print*,""

58 | P á g i n a
Ing. William Chauca Nolasco

print*,"Vector uc"
do i=1,9
print*,uc(i)
end do
end program matriz_c

d) Crear un vector columna de diez elementos llamado ud, que


contenga los elementos de la primera y segunda fila de C.

program matriz_c
integer,dimension(3,5)::C
integer,dimension(5)::ud
integer::i,k=1
print*,"Ingrese matriz C"
do i=1,3
read*,(C(i,j),j=1,5)
end do
!Creando vector ud
do i=1,3,2
do j=1,5
ud(k)=C(i,j)
k=k+1
end do
end do
!Imprimiendo vector ud
print*,""
print*,"Vector ud"
do i=1,10
print*,ud(i)
end do
end program matriz_c

72.-Elabore un programa para el ejemplo

59 | P á g i n a
Ing. William Chauca Nolasco

program coeficiente
real,dimension(6)::F=(/12.5,23.5,30.3,61.2,118.1,294.5/)
real,dimension(6)::u
integer,dimension(6)::masa=(/2,4,5,10,20,50/)
real,parameter::g=9.81
real::prom,suma=0
!Calculando u y utotal
do i=1,6
u(i)=F(i)/(masa(i)*g)
suma=suma+u(i)
end do
prom=suma/6
!Imprimiendo u
print*,""
print 2
2 format(8x,"masa(i)",6x,"F(i)",10x,"u(i)",i2.1,f2.2,f5.4)
do i=1,6
print*,masa(i),F(i),u(i)
end do
end program coeficiente

75. Sea la función 𝒚 = (𝒙𝟐 + 𝟏)𝟑 𝒙𝟑 calcular el valor de 𝒚 para los


siguientes valores de 𝒙:-2.5 , -2 , -1.5 , -1 , -0.5 , 0 , 0.5 , 1 , 1.5 , 2 , 2.5 , 3.
Resuelva el problema creando primero un vector 𝒙 y después creando un
vector 𝒚, utilizando las operaciones elemento a elemento para el cálculo.

60 | P á g i n a
Ing. William Chauca Nolasco

CODIGO

program problema75
integer::i
real,dimension(12)::x=(/-2.5,-2.,-1.5,-1.,-0.5,0.,0.5,1.,1.5,2.,2.5,3./)
real,dimension(12)::y
do i=1,12
y(i)=(((x(i)**2)+1)**3)*(x(i)**3)
end do
print*,"X Y"
do i=1,12
print*,x(i)," ",y(i)
end do
end program problema75

76.- Elabore un programa que realice:

program profundidad
integer,dimension(10)::t=(/(i,i=1,10)/)
real,dimension(10)::d

61 | P á g i n a
Ing. William Chauca Nolasco

real,parameter::g=9.81
!Calculando distancia
do i=1,10
d(i)=0.5*g*t(i)**2
end do

!Imprimiendo distancia
print 2
2 format(10x,"t(i)",7x,"d(i)",i2.1,f5.4)
do i=1,10
print*,t(i),d(i)
end do
end program profundidad

77.- Elabore un programa que realice:


Defina x e y como vectores, tales que x=2,4,6,8 y 10, e y=3,6,9,12,15.
Posteriormente utilice estos vectores en la siguiente expresión para
calcular z, a partir de operaciones elemento a elemento.

program funcion
integer,dimension(5)::x=(/(i,i=2,10,2)/),y=(/(i,i=3,15,3)/)
real,dimension(10)::z
do i=1,5
z(i)=(x(i)*y(i)+y(i)/real(x(i)))/real((x(i)+y(i)**(y(i)-
x(i))))+12**(x(i)/real(y(i)))
end do
!Imprimiendo z
print 2
2 format(10x,"X(i)",7x,"Y(i)",8x,"Z(i)",i2.1,i2.1,f5.4)
do i=1,5
print*,x(i),y(i),z(i)
end do
end program función

62 | P á g i n a
Ing. William Chauca Nolasco

63 | P á g i n a

Das könnte Ihnen auch gefallen