Documente Academic
Documente Profesional
Documente Cultură
PROGRAM PROB_1
INTEGER::A,B
REAL::S,D
READ*,A
READ*,B
S=(ABS(A+B))**(1/2.)
D=(ABS(A-B))**(1/2.)
ELSE
END IF
2)
PROGRAM DETERMINANTE
INTEGER,DIMENSION(3,3)::A
INTEGER::ADJO1,ADJO2,ADJO3
INTEGER,EXTERNAL::ADJTO
INTEGER::DET
PRINT*,"INGRESE LA MATRIZ A"
CALL MATRIZ(A)
ADJO1=ADJTO(A(2,2),A(2,3),A(3,2),A(3,3))
ADJO2=ADJTO(A(2,1),A(2,3),A(3,1),A(3,3))
ADJO3=ADJTO(A(2,1),A(2,2),A(3,1),A(3,2))
DET=A(1,1)*ADJO1-A(1,2)*ADJO2+A(1,3)*ADJO3
PRINT*,"LA DETERMINANTE ES"
PRINT '(5X,I10)',DET
END PROGRAM DETERMINANTE
SUBROUTINE MATRIZ(X)
INTEGER,DIMENSION(3,3)::X
INTEGER::I,J
DO I=1,3
READ*,(X(I,J),J=1,3)
END DO
RETURN
END SUBROUTINE MATRIZ
INTEGER FUNCTION ADJTO(A,B,C,D)
INTEGER, INTENT(IN)::A,B,C,D
ADJTO=A*D-B*C
RETURN
END FUNCTION ADJTO
3)
PROGRAM DETERMINANTE
INTEGER,DIMENSION(3,3)::A
INTEGER::ADJO1,ADJO2,ADJO3
INTEGER::DET
PRINT*,"INGRESE LA MATRIZ A"
CALL MATRIZ(A)
CALL ADJTO(A(2,2),A(2,3),A(3,2),A(3,3),ADJO1)
CALL ADJTO(A(2,1),A(2,3),A(3,1),A(3,3),ADJO2)
CALL ADJTO(A(2,1),A(2,2),A(3,1),A(3,2),ADJO3)
DET=A(1,1)*ADJO1-A(1,2)*ADJO2+A(1,3)*ADJO3
PRINT*,"LA DETERMINANTE ES"
PRINT '(5X,I10)',DET
END PROGRAM DETERMINANTE
SUBROUTINE MATRIZ(X)
INTEGER,DIMENSION(3,3)::X
INTEGER::I,J
DO I=1,3
READ*,(X(I,J),J=1,3)
END DO
RETURN
END SUBROUTINE MATRIZ
SUBROUTINE ADJTO(A,B,C,D,ADJUNTA)
INTEGER,INTENT(OUT)::ADJUNTA
INTEGER,INTENT(IN)::A,B,C,D
ADJUNTA=A*D-B*C
RETURN
END SUBROUTINE ADJTO
4)
PROGRAM PROB_4
REAL,DIMENSION(4,4)::A
REAL::T
CALL MATRIZ(A)
T=TRAZA(A)
PRINT 100,T
100 FORMAT(F10.2)
PRINT*,"LA SUMA DE LOS ELEMENTOS POR ENCIMA Y POR DEBAJO DE LA DIAGONAL PRINCIPAL ES"
CALL SUMA(A)
SUBROUTINE MATRIZ(X)
REAL,DIMENSION(4,4)::X
INTEGER::I,J
DO I=1,4
READ*,(X(I,J),J=1,4)
END DO
RETURN
FUNCTION TRAZA(C)
REAL,DIMENSION(4,4)::C
REAL::TRAZA
INTEGER::I,J
TRAZA=0
DO I=1,4
DO J=1,4
IF(I==J)THEN
TRAZA=TRAZA + C(I,J)
END IF
END DO
END DO
RETURN
SUBROUTINE SUMA(X)
REAL,DIMENSION(4,4),INTENT(IN)::X
REAL::SUM
INTEGER::I,J
SUM=0
DO I=1,4
DO J=1,4
IF(I/=J)THEN
END IF
END DO
END DO
PRINT 50,SUM
50 FORMAT(F10.2)
RETURN
5)
PROGRAM PROB_5
REAL,DIMENSION(7)::A=(/5,10,15,20,25,30,35/)
INTEGER::I
DO I=1,7
PRINT*,A(I)
END DO
CALL POSICION(A)
SUBROUTINE POSICION(X)
REAL,DIMENSION(7)::X
REAL::B
INTEGER::I
DO I=1,7
B=X(I)
X(I)=X(7)
X(7)=B
END DO
DO I=1,7
PRINT*,X(I)
END DO
6)
PROGRAM PROB_6
REAL,DIMENSION(7)::A=(/5,10,15,20,25,30,35/)
INTEGER::I
DO I=1,7
PRINT*,A(I)
END DO
CALL POSICION(A)
SUBROUTINE POSICION(X)
REAL,DIMENSION(7)::X
REAL::B
INTEGER::I
DO I=1,6
B=X(I)
X(I)=X(1+I)
X(1+I)=B
END DO
DO I=1,7
PRINT*,X(I)
END DO
7)
PROGRAM MULTIPLICACION
REAL,DIMENSION(5,3)::A
REAL,DIMENSION(3,5)::B
REAL,DIMENSION(5,5)::C
INTEGER::I,J
PRINT*,"INGRESE LA MATRIZ A"
CALL MATRIZ_1(A)
PRINT*,"INGRESE LA MATRIZ B"
CALL MATRIZ_2(B)
PRINT*,"LA MULTIPLICACION ES"
CALL MULTI(A,B,C)
DO I=1,5
PRINT*,(C(I,J),J=1,5)
END DO
END PROGRAM MULTIPLICACION
SUBROUTINE MATRIZ_1(X)
REAL,DIMENSION(5,3)::X
INTEGER::I,J
DO I=1,5
READ*,(X(I,J),J=1,3)
END DO
RETURN
END SUBROUTINE MATRIZ_1
SUBROUTINE MATRIZ_2(Y)
REAL,DIMENSION(3,5)::Y
INTEGER::I,J
DO I=1,3
READ*,(Y(I,J),J=1,5)
END DO
RETURN
END SUBROUTINE MATRIZ_2
SUBROUTINE MULTI(A,B,C)
REAL,DIMENSION(5,3),INTENT(IN)::A
REAL,DIMENSION(3,5),INTENT(IN)::B
REAL,DIMENSION(5,5),INTENT(INOUT)::C
C=MATMUL(A,B)
RETURN
END SUBROUTINE MULTI
8)
PROGRAM EXPONENCIAL
IMPLICIT NONE
REAL,EXTERNAL::EXPO
REAL::X,E
PRINT*,"INGRESE EL VALOR DE X EN LA FUNCION e^x"
READ*,X
PRINT*,"EL RESULTADO ES :"
E=EXPO(X)
END PROGRAM EXPONENCIAL
FUNCTION EXPO(X)
REAL::X,E
INTEGER::FACT,N
E=1.0
FACT=1
N=1
DO
FACT=FACT*N
E=E+(X**N/FACT)
N=N+1
IF(N>20)EXIT
END DO
PRINT*,"----------------------"
PRINT '(1X,F10.6)',E
END FUNCTION EXPO
9)
PROGRAM MATRIZ_TRANSPUESTA
REAL,DIMENSION(:,:),ALLOCATABLE::A,AT
INTEGER::F,C
PRINT*,"INGRESE EL NUMERO DE FILAS Y COLUMNAS"
READ*,F,C
ALLOCATE(A(F,C),AT(C,F))
PRINT*,"INGRESE LOS VALORES DE LA MATRIZ A"
CALL MATRIZ(A,F,C)
PRINT*,"LA MATRIZ TRANSPUESTA ES "
CALL TRANS(A,AT,F,C)
END PROGRAM MATRIZ_TRANSPUESTA
SUBROUTINE MATRIZ(X,M,N)
REAL,DIMENSION(M,N)::X
INTEGER::I,J
DO I=1,M
READ*,(X(I,J),J=1,N)
END DO
RETURN
END SUBROUTINE MATRIZ
SUBROUTINE TRANS(A,AT,M,N)
REAL,DIMENSION(M,N),INTENT(IN)::A
REAL,DIMENSION(N,M),INTENT(OUT)::AT
INTEGER::I,J
DO I=1,N
DO J=1,M
AT(I,J)=A(J,I)
END DO
END DO
DO I=1,N
PRINT*,(AT(I,J),J=1,M)
END DO
RETURN
END SUBROUTINE TRANS
10)
PROGRAM SUMA_DIAGONAL
REAL,DIMENSION(:,:),ALLOCATABLE::A
REAL::SD
REAL,EXTERNAL::DIAGO
INTEGER::F,C
PRINT*,"INGRESE EL NUMERO DE FILAS Y COLUMNAS"
READ*,F,C
ALLOCATE(A(F,C))
PRINT*,"INGRESE LA MATRIZ A"
CALL MATRIZ(A,F,C)
PRINT*,"SUMA DIAGONAL PRINCIPAL"
SD=DIAGO(A,F,C)
PRINT*,SD
END PROGRAM SUMA_DIAGONAL
SUBROUTINE MATRIZ(X,M,N)
REAL,DIMENSION(M,N)::X
INTEGER::I,J
DO I=1,M
READ*,(X(I,J),J=1,N)
END DO
END SUBROUTINE MATRIZ
FUNCTION DIAGO(X,M,N)
REAL,DIMENSION(M,N)::X
REAL::DIAGO
INTEGER::I,J
DIAGO=0.0
DO I=1,M
DO J=1,N
IF(I==J) THEN
DIAGO=DIAGO+X(I,J)
END IF
END DO
END DO
END FUNCTION DIAGO
11)
PROGRAM PROB_11
CHARACTER(LEN=12),DIMENSION(100)::NOMBRE
REAL,DIMENSION(100)::EDAD
INTEGER::I,J
REAL::A
CHARACTER(LEN=12)::B
CALL NOMB_EDAD(NOMBRE,EDAD)
DO I=1,10
DO J=1,10
IF(EDAD(I)>EDAD(J))THEN
EDAD(J)=EDAD(I)
NOMBRE(J)=NOMBRE(I)
A=EDAD(J)
B=NOMBRE(J)
END IF
END DO
END DO
SUBROUTINE NOMB_EDAD(X,Y)
CHARACTER(LEN=12),DIMENSION(10)::X
REAL,DIMENSION(100)::Y
INTEGER::I
DO I=1,10
READ*,X(I),Y(I)
END DO
RETURN
SUBROUTINE ORDEN(NELEM,ARREG)
!ORDENACION POR BURBUJA ("buble sort") de un arreglo
!unidimensional, de menor a mayor.
!NELEM = Nmero de elementos del arreglo
!ARREG = Arreglo unidimensional a ordenar
IMPLICIT NONE
INTEGER::NELEM
REAL, DIMENSION(NELEM)::ARREG
INTEGER::I,J
REAL:: AUX
IF (NELEM<2)RETURN
DO I=1,NELEM-1
DO J=1,NELEM-I
IF (ARREG(J) > ARREG(J+1)) THEN
AUX = ARREG(J)
ARREG(J) = ARREG(J+1)
ARREG(J+1) = AUX
END IF
END DO
END DO
RETURN
END SUBROUTINE ORDEN
13)
PROGRAM ORDENAR_VECTOR
IMPLICIT NONE
REAL,DIMENSION(:),ALLOCATABLE::VECTOR
INTEGER::N,I
PRINT*,"INGRESE EL TAMAO DEL VECTOR"
READ*,N
ALLOCATE(VECTOR(N))
PRINT*,"INGRESE EL VECTOR"
READ*,(VECTOR(I),I=1,N)
CALL ORDEN(N,VECTOR)
PRINT*,"EL VECTOR ORDENADO DE MENOR A MAYOR ES"
DO I=1,N
PRINT '(F6.2)',VECTOR(I)
END DO
END PROGRAM ORDENAR_VECTOR
SUBROUTINE ORDEN(NELEM,ARREG)
!ORDENACION POR BURBUJA ("buble sort") MEJORADO
!de un arreglo unidimensional, de menor a mayor.
!NELEM = Nmero de elementos del arreglo
!ARREG = Arreglo unidimensional a ordenar
IMPLICIT NONE
INTEGER:: NELEM
REAL,DIMENSION(NELEM):: ARREG
LOGICAL::CLAVE
INTEGER::I,J
REAL:: AUX
IF (NELEM < 2) RETURN
I=1
CLAVE=.TRUE.
DO WHILE(CLAVE)
CLAVE=.FALSE.
DO J=1,NELEM-I
IF (ARREG(J) >ARREG(J+1)) THEN
AUX = ARREG(J)
ARREG(J) = ARREG(J+1)
ARREG(J+1) = AUX
CLAVE = .TRUE.
ENDIF
ENDDO
I = I+1
END DO
RETURN
END SUBROUTINE ORDEN
14)
PROGRAM ORDENAR_VECTOR
IMPLICIT NONE
REAL,DIMENSION(:),ALLOCATABLE::VECTOR
INTEGER::N,I
PRINT*,"INGRESE EL TAMAO DEL VECTOR"
READ*,N
ALLOCATE(VECTOR(N))
PRINT*,"INGRESE EL VECTOR"
READ*,(VECTOR(I),I=1,N)
CALL ORDEN(N,VECTOR)
PRINT*,"EL VECTOR ORDENADO DE MENOR A MAYOR ES"
DO I=1,N
PRINT '(F6.2)',VECTOR(I)
END DO
END PROGRAM ORDENAR_VECTOR
SUBROUTINE ORDEN(NELEM,ARREG)
!ORDENACION POR INSERSION de un arreglo unidimensional,
!de menor a mayor.
!NELEM = Nmero de elementos del arreglo
!ARREG = Arreglo unidimensional a ordenar
IMPLICIT NONE
INTEGER ::NELEM
REAL,DIMENSION(NELEM):: ARREG
LOGICAL::CLAVE
INTEGER::I,K,POS
REAL:: AUX
IF (NELEM<2) RETURN
DO I=2,NELEM
K=I
AUX=ARREG(K)
CLAVE=.FALSE.
DO WHILE((K>1).AND.(.NOT.CLAVE))
IF(ARREG(K-1)>AUX)THEN
ARREG(K)=ARREG(K-1)
K=K-1
ELSE
CLAVE=.TRUE.
END IF
END DO
POS=K
ARREG(POS)=AUX
ENDDO
RETURN
END SUBROUTINE ORDEN
16)
PROGRAM PROBLEMA_16
IMPLICIT NONE
REAL::PAGO,HORAS
INTEGER::ANOS
PRINT*,"INGRESE HORAS TRABAJADAS"
READ*,HORAS
PRINT*,"INGRESE PAGO POR HORAS"
READ*,PAGO
PRINT*,"INGRESE EL NUMERO DE AOS TRABAJADOS"
READ*,ANOS
CALL SALARIO(HORAS,PAGO,ANOS)
END PROGRAM PROBLEMA_16
SUBROUTINE SALARIO(X,Y,N)
REAL,INTENT(IN)::X,Y
INTEGER::BONI
REAL::SALAR
REAL::NAVI
REAL,EXTERNAL::BONIFICACION
IF(X>40)THEN
SALAR=(X-40)*(1.5*Y) + 40*Y
ELSE
SALAR=X*Y
END IF
BONI=BONIFICACION(N)
PRINT '(1X,A19,11X,I6)',"LA BONIFICACION ES ",BONI
PRINT '(1X,A29,F10.1)',"EL SALARIO DEL TRABAJADOR ES ",SALAR
NAVI=SALAR+BONI
PRINT '(1X,A26,3X,F10.1)',"EL SALARIO POR NAVIDAD ES ",NAVI
RETURN
END SUBROUTINE SALARIO
FUNCTION BONIFICACION(N)
INTEGER::N
REAL::BONIFICACION
IF(N>=10)THEN
BONIFICACION=100
ELSE IF(N>=5)THEN
BONIFICACION=50
ELSE
BONIFICACION=25
END IF
RETURN
END FUNCTION BONIFICACION
17)
PROGRAM PROBLEMA_17
USE SALARIO_NAVIDAD
IMPLICIT NONE
REAL::PAGO,HORAS
INTEGER::ANOS
PRINT*,"INGRESE HORAS TRABAJADAS"
READ*,HORAS
PRINT*,"INGRESE PAGO POR HORAS"
READ*,PAGO
PRINT*,"INGRESE EL NUMERO DE AOS TRABAJADOS"
READ*,ANOS
CALL SALARIO(HORAS,PAGO,ANOS)
END PROGRAM PROBLEMA_17
MODULO
MODULE SALARIO_NAVIDAD
CONTAINS
SUBROUTINE SALARIO(X,Y,N)
REAL,INTENT(IN)::X,Y
INTEGER::BONI
REAL::SALAR
REAL::NAVI
IF(X>40)THEN
SALAR=(X-40)*(1.5*Y) + 40*Y
ELSE
SALAR=X*Y
END IF
BONI=BONIFICACION(N)
PRINT '(1X,A19,11X,I6)',"LA BONIFICACION ES ",BONI
PRINT '(1X,A29,F10.1)',"EL SALARIO DEL TRABAJADOR ES ",SALAR
NAVI=SALAR+BONI
PRINT '(1X,A26,3X,F10.1)',"EL SALARIO POR NAVIDAD ES ",NAVI
RETURN
END SUBROUTINE SALARIO
FUNCTION BONIFICACION(N)
INTEGER::N
REAL::BONIFICACION
IF(N>=10)THEN
BONIFICACION=100
ELSE IF(N>=5)THEN
BONIFICACION=50
ELSE
BONIFICACION=25
END IF
RETURN
END FUNCTION BONIFICACION
END MODULE SALARIO_NAVIDAD
18)
PROGRAM PROB_18
INTEGER::N
REAL::C_SIN_DES
REAL::C_FINAL
WRITE(*,*)"INGRESE NUMERO DE TELEVISORES QUE DESEA COMPRAR"
READ*,N
CALL ENC_COSTO(N,C_SIN_DES,C_FINAL)
END PROGRAM PROB_18
SUBROUTINE ENC_COSTO(X,C_SIN,C_FIN)
INTEGER,INTENT(IN)::X
REAL,INTENT(OUT)::C_SIN
REAL,INTENT(OUT)::C_FIN
IF (X>0)THEN
IF(X==5500)THEN
C_SIN=5500*250
C_FIN=1000*250 + 4000*250*0.9 + 500*250*0.8
ELSE
IF(5000<X)THEN
C_SIN=X*250
C_FIN=5000*250 + (X-5000)*250*0.3
ELSE
IF(1000<X)THEN
C_SIN=X*250
C_FIN=1000*250 + (X-1000)*250*0.9
ELSE
IF(X<1001)THEN
C_SIN=X*250
C_FIN=X*250
END IF
END IF
END IF
END IF
ELSE
END IF
FUNCTION ENC_DESCUENTO(D,F)
REAL,INTENT(IN)::D
REAL,INTENT(IN)::F
ENC_DESCUENTO=D-F
END FUNCTION ENC_DESCUENTO
21)
PROGRAM TABLA
REAL,DIMENSION(100)::V
INTEGER::I
REAL::T
T=TABU(V)
END PROGRAM TABLA
FUNCTION TABU(V)
INTEGER::TABU
REAL,DIMENSION(100)::V
DO I=1,20
TABU=V(I)**2-5*V(I)+2
PRINT*,TABU," ",V(I)
END DO
RETURN
END FUNCTION TABU
22)
PROGRAM PROMEDIO
REAL::A,B,C
PRINT*,"INGRESE LOS TRES NUMEROS"
READ*,A,B,C
CALL COMPA(A,B,C)
CALL PROM(A,B,C)
END PROGRAM PROMEDIO
SUBROUTINE COMPA(A,B,C)
REAL::A,B,C,M
IF(A>B) THEN
IF(A>C) THEN
M=A
ELSE
M=C
END IF
ELSE
IF(B>C) THEN
M=B
ELSE
M=C
END IF
END IF
PRINT*,"EL MAYOR ES = ",M
RETURN
END SUBROUTINE COMPA
SUBROUTINE PROM(A,B,C)
REAL::A,B,C,P
P=(A+B+C)/3
PRINT*,"EL PROMEDIO ES =",P
RETURN
END SUBROUTINE PROM
23)
PROGRAM FUCTION_PROMEDIO
REAL::A,B,C,PRO
PRINT*,"INGRESE LOS TRES NUMEROS"
READ*,A,B,C
PRO=PROM(A,B,C)
END PROGRAM FUCTION_PROMEDIO
FUNCTION PROM(A,B,C)
REAL::A,B,C
REAL::PROM
PROM=(A+B+C)/3
PRINT*,"EL PROMEDIO ES ",PROM
RETURN
END FUNCTION PROM
24)
PROGRAM FACTORIAL
INTEGER::N
PRINT*,"INGRESE EL NUMERO"
READ*,N
CALL FACTOR(N)
END PROGRAM FACTORIAL
SUBROUTINE FACTOR(N)
INTEGER::I,FACT,N
FACT=1
DO I=1,N
FACT=I*FACT
END DO
IF(100<FACT.AND.FACT<1000) THEN
PRINT*,FACT
END IF
RETURN
END SUBROUTINE FACTOR
26)
PROGRAM MAYOR_DOS
REAL::A,B,C
PRINT*,"INGRESAR LOS VALORES"
READ*,A,B
C=COMP(A,B)
END PROGRAM MAYOR_DOS
FUNCTION COMP(A,B)
REAL::A,B,M
IF(A>B) THEN
M=A
ELSE
M=B
END IF
PRINT*,M
RETURN
END FUNCTION COMP
29)
program coordenadas
implicit none
real::x,y !variables de salida x, y
real::r,q !radio y angulo
write(*,*)"ingrese radio y angulo "
read*,r,q
call camcoord(r,q,x,y)
write(*,*)"el cambio a coordenadas cartesianas es:"
write(*,*)"x=",x
write(*,*)"y=",y
end program coordenadas
subroutine camcoord(t,s,j,k)
implicit none
real,intent(in)::t
real,intent(in)::s
real,intent(out)::j
real,intent(out)::k
j=t*cos(s)
k=t*sin(s)
end subroutine camcoord
30)
PROGRAM PROB_30
INTEGER::PAGO,HORAS
REAL::SA
READ*,HORAS
READ*,PAGO
SA=SALARIO(HORAS,PAGO)
END PROGRAM
FUNCTION SALARIO(X,Y)
INTEGER::X,Y
REAL::SALARIO
IF(X>40)THEN
SALARIO=(X-40)*(1.5*Y) + 40*Y
ELSE
SALARIO=X*Y
END IF
RETURN
31)
PROGRAM VALOR_ABSOLUTO
REAL::N,ABSO
PRINT*,"INGRESE EL UN NUMERO REAL"
READ*,N
ABSO=ABSOLUTO(N)
PRINT 52,ABSO
52 FORMAT(F8.2)
END PROGRAM VALOR_ABSOLUTO
FUNCTION ABSOLUTO(X)
REAL::X
REAL::ABSOLUTO
ABSOLUTO=ABS(X)
END FUNCTION ABSOLUTO
32)
PROGRAM PROB_32
REAL::DNDO,DSOR
READ*,DNDO,DSOR
IF(DNDO<DSOR)THEN
END IF
CALL DIV_RES(DNDO,DSOR)
SUBROUTINE DIV_RES(X,Y)
REAL::X,Y,S
REAL::DIV,RES
S=Y
DIV=0
DO WHILE(S<=X)
S=S+Y
DIV=DIV+1
END DO
RES=X-(S-Y)
RETURN
35)
PROGRAM FACTORIAL_POTENCIA
INTEGER::N,FACT,POTE,OP
REAL::E
INTEGER,EXTERNAL::FACTOR,POTEN
PRINT*,"INGRESE 1 SI DESEA CALCULAR EL FACTORIAL DEL NUMERO"
PRINT*,"INGRESE 2 SI DESEA CALCULAR LA POTENCIA DEL NUMERO"
READ*,OP
IF(OP==1)THEN
PRINT*,"INGRESE EL NUMERO ENTERO"
READ*,N
PRINT*,"EL FACTORIAL DEL NUMERO ES"
FACT=FACTOR(N)
PRINT 10,FACT
10 FORMAT(4X,I10)
ELSE IF(OP==2) THEN
PRINT*,"INGRESE EL NUMERO ENTERO"
READ*,N
PRINT*,"INGRESE EL EXPONENTE"
READ*,E
POTE=POTEN(N,E)
PRINT*,"LA POTENCIA DEL NUMERO ES"
PRINT 20,POTE
20 FORMAT(4X,I8)
END IF
END PROGRAM FACTORIAL_POTENCIA
FUNCTION FACTOR(X)
INTEGER::I,X,FACTOR
FACTOR=1.0
DO I=1,X
FACTOR=FACTOR*I
END DO
RETURN
END FUNCTION FACTOR
FUNCTION POTEN(X,Y)
INTEGER::X,POTEN
REAL::Y
POTEN=X**Y
RETURN
END FUNCTION POTEN
FUNCTION ULT_DIG(X)
INTEGER::X,ULT_DIG,E
REAL::DIG,AUX
AUX=X
DO WHILE(AUX>10)
AUX=AUX/10.
END DO
DIG=10.*(AUX-INT(AUX))
E=INT(AUX)
ULT_DIG=INT(DIG)
PRINT*,ULT_DIG,AUX,DIG,E
RETURN
END FUNCTION ULT_DIG
38)
PROGRAM CONTAR_DIGITOS
IMPLICIT NONE
INTEGER::NUMERO,CIFRAS
INTEGER,EXTERNAL::NUM_CIF
PRINT*,"INGRESE UN NUMERO ENTERO"
READ*,NUMERO
CIFRAS=NUM_CIF(NUMERO)
PRINT*,"EL NUMERO DE CIFRAS DEL NUMERO ES",CIFRAS
END PROGRAM
FUNCTION NUM_CIF(X)
INTEGER::AUX,CIF,X,NUM_CIF
AUX=X
CIF=0
DO WHILE(AUX>0)
AUX=INT(AUX/10)
CIF=CIF+1
END DO
NUM_CIF=CIF
END FUNCTION NUM_CIF
44)
PROGRAM FACTORIAL_NUMERO
INTEGER::N,FACTI
INTEGER,EXTERNAL::FACTORIAL
PRINT*,"INGRESE UN NUMERO ENTERO"
READ*,N
IF(N==0)THEN
FACTI=1
ELSE IF(N<0)THEN
PRINT*,"NO EXISTE LOS FACTORIALES DE NUMEROS POSITIVOS"
END IF
FACTI=FACTORIAL(N)
PRINT*,"EL FACTORIAL DEL NUMERO ES"
PRINT*,FACTI
END PROGRAM FACTORIAL_NUMERO
FUNCTION FACTORIAL(X)
INTEGER::X,FACT,I,FACTORIAL
FACT=1
DO I=1,X
FACT=FACT*I
END DO
FACTORIAL=FACT
RETURN
END FUNCTION FACTORIAL
45)
PROGRAM PROBLEMA_45
IMPLICIT NONE
INTEGER::X,Y,MAYOR
WRITE(*,*)"INGRESE DOS NUMEROS"
READ*,X,Y
WRITE(*,*)"EL NUMERO MAYOR INGRESADO ES =",MAYOR(X,Y)
END PROGRAM PROBLEMA_45
46)
!Construir una funcin que reciba como parmetros dos nmeros enteros y retorne
! 1 si el primer nmero es mltiplo del segundo y 0 si no.
PROGRAM PROBLEMA_46
INTEGER,EXTERNAL::RETORNA
INTEGER::X,Y,W
PRINT*,"INGRESE PRIMER NUMERO"
READ*,X
PRINT*,"INGRESE SEGUNDO NUMERO"
READ*,Y
W=RETORNA(X,Y)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL PRIMER NUMERO ES MULTIPLO DEL SEGUNDO"
END IF
IF (W==0)THEN
PRINT*,"EL PRIMER NUMERO NO ES MULTIPLO DEL SEGUNDO"
END IF
END PROGRAM PROBLEMA_46
INTEGER FUNCTION RETORNA(A,B)
INTEGER,INTENT(IN)::A,B
INTEGER::Z
IF(MOD(A,B)==0)THEN
Z=1
ELSE
Z=0
END IF
RETORNA=Z
RETURN
END FUNCTION RETORNA
47)
Construir una funcin que reciba como parmetro un entero y retorne 1 si corresponde al cdigo ASCII
de una
!letra minscula (Los cdigos ASCII de las letras minsculas van desde 97 que el cdigo de la letra a
hasta 122
! que es el cdigo de la letra z). Deber retornar 0 si no es as.
PROGRAM PROBLEMA_47
INTEGER,EXTERNAL::ASCI
INTEGER::X,W
PRINT*,"INGRESE NUMERO ENTERO"
READ*,X
W=ASCI(X)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL NUMERO ENTERO CORRESPONDE AL CODIGO ASCII DE UNA LETRA MINUSCULA"
END IF
IF (W==0)THEN
PRINT*,"EL NUMER ENTERO NO CORRESPONDE AL CODIGO ASCII DE UNA LETRA MINUSCULA"
END IF
END PROGRAM PROBLEMA_47
49)
!Construir una funcin que reciba como parmetro un valor entero y
!retornar 1 si dicho valor es el factorial de alguno de los dgitos del nmero. Deber retornar 0 si no es
as.
!NOTA : Como el factorial del mayor digito 9 es 362 880 entonces solo se analizara hasta las centenas de
millares
PROGRAM PROBLEMA_49
INTEGER,EXTERNAL::RETORNA
INTEGER::X,W
PRINT*,"INGRESE NUMERO ENTERO"
READ*,X !2175
W=RETORNA(X)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL NUMERO INGRESADO ES FACTORIAL DE UNO DE LOS DIGITOS"
END IF
IF (W==0)THEN
PRINT*,"EL NUMERO INGRESADO NO ES FACTORIAL DE UNO DE LOS DIGITOS"
END IF
END PROGRAM PROBLEMA_49
50)
PROGRAM PROBLEMA_50
IMPLICIT NONE
INTEGER::X,K,DIGITOS
PRINT*,"AL FINAL APARECERA 1 SI EL NUMERO TIENE COMO MINIMO 3 DIGITOS"
PRINT*,"O CASO CONTRARIO APARECERA 0"
WRITE(*,*)"INGRESE UN NUMERO"
READ*,X
K=DIGITOS(X)
IF(K>0)THEN
PRINT*,"1"
ELSE
PRINT*,"0"
END IF
END PROGRAM PROBLEMA_50
51)
!Construir una funcin que reciba como parmetro un entero y retorne 1 si en dicho valor todos los
dgitos son iguales.
!Deber retornar 0 si no es as.
!NOTA : EL MAXIMO VALOR QUE PUEDE TOMAR ES 999999999 . ES POR ESO QUE SE ANALIZO UN
NUMERO DEL INTERVALO 0 AL 999999999
PROGRAM PROBLEMA_51
INTEGER,EXTERNAL::RETORNA
INTEGER::X,W
PRINT*,"INGRESE NUMERO ENTERO"
READ*,X
W=RETORNA(X)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL NUMERO INGRESADO TIENE TODOS LOS DIGITOS IGUALES"
END IF
IF (W==0)THEN
PRINT*,"EL NUMERO INGRESADO NO TIENE TODOS LOS DIGITOS IGUALES"
END IF
END PROGRAM PROBLEMA_51
INTEGER FUNCTION RETORNA(Y)
INTEGER,INTENT(IN)::Y
INTEGER::Z,UNI,DEC,CEN,UNI_M,DEC_M,CEN_M,UNI_MM,DEC_MM,CEN_MM,Y_U,Y_D,Y_C,Y_UM,Y_D
M,Y_CM,Y_UMM,Y_DMM,Y_CMM
UNI=MOD(Y,10)
Y_U=Y/10
DEC=MOD(Y_U,10)
Y_D=Y_U/10
CEN=MOD(Y_D,10)
Y_C=Y_D/10
UNI_M=MOD(Y_C,10)
Y_UM=Y_C/10
DEC_M=MOD(Y_UM,10)
Y_DM=Y_UM/10
CEN_M=MOD(Y_DM,10)
Y_CM=Y_DM/10
UNI_MM=MOD(Y_CM,10)
Y_UMM=Y_CM/10
DEC_MM=MOD(Y_UMM,10)
Y_DMM=Y_UMM/10
CEN_MM=MOD(Y_DMM,10)
Y_CMM=Y_DMM/10
SELECT CASE(Y)
CASE(100000000:999999999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M .AND. UNI_M==DEC_M .AND. DEC_M==CEN_M
.AND. CEN_M==UNI_MM .AND. UNI_MM==DEC_MM .AND. DEC_MM==CEN_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(10000000:99999999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M .AND. UNI_M==DEC_M .AND. DEC_M==CEN_M
.AND. CEN_M==UNI_MM .AND. UNI_MM==DEC_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(1000000:9999999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M .AND. UNI_M==DEC_M .AND. DEC_M==CEN_M
.AND. CEN_M==UNI_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(100000:999999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M .AND. UNI_M==DEC_M .AND.
DEC_M==CEN_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(10000:99999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M .AND. UNI_M==DEC_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(1000:9999)
IF (UNI==DEC .AND. DEC==CEN .AND. CEN==UNI_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(100:999)
IF (UNI==DEC .AND. DEC==CEN)THEN
Z=1
ELSE
Z=0
END IF
CASE(10:99)
IF (UNI==DEC)THEN
Z=1
ELSE
Z=0
END IF
END SELECT
RETORNA=Z
RETURN
END FUNCTION RETORNA
52)
!Construir una funcin que reciba como parmetro un entero y retorne 1 si en dicho valor
!el primer dgito es igual al ltimo. Deber retornar 0 si no es as.
PROGRAM PROBLEMA_52
INTEGER,EXTERNAL::RETORNA
INTEGER::X,W
PRINT*,"INGRESE NUMERO ENTERO"
READ*,X
W=RETORNA(X)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL PRIMER Y ULTIMO DIGITO DEL NUMERO ENTERO SON IGUALES"
END IF
IF (W==0)THEN
PRINT*,"EL PRIMER Y ULTIMO DIGITO DEL NUMERO ENTERO NO SON IGUALES"
END IF
END PROGRAM PROBLEMA_52
INTEGER FUNCTION RETORNA(Y)
INTEGER,INTENT(IN)::Y
INTEGER::Z,UNI,DEC,CEN,UNI_M,DEC_M,CEN_M,UNI_MM,DEC_MM,CEN_MM,Y_U,Y_D,Y_C,Y_UM,Y_D
M,Y_CM,Y_UMM,Y_DMM,Y_CMM
UNI=MOD(Y,10)
Y_U=Y/10
DEC=MOD(Y_U,10)
Y_D=Y_U/10
CEN=MOD(Y_D,10)
Y_C=Y_D/10
UNI_M=MOD(Y_C,10)
Y_UM=Y_C/10
DEC_M=MOD(Y_UM,10)
Y_DM=Y_UM/10
CEN_M=MOD(Y_DM,10)
Y_CM=Y_DM/10
UNI_MM=MOD(Y_CM,10)
Y_UMM=Y_CM/10
DEC_MM=MOD(Y_UMM,10)
Y_DMM=Y_UMM/10
CEN_MM=MOD(Y_DMM,10)
Y_CMM=Y_DMM/10
SELECT CASE(Y)
CASE(100000000:999999999)
IF (UNI==CEN_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(10000000:99999999)
IF (UNI==DEC_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(1000000:9999999)
IF (UNI==UNI_MM)THEN
Z=1
ELSE
Z=0
END IF
CASE(100000:999999)
IF (UNI==CEN_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(10000:99999)
IF (UNI==DEC_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(1000:9999)
IF (UNI==UNI_M)THEN
Z=1
ELSE
Z=0
END IF
CASE(100:999)
IF (UNI==CEN)THEN
Z=1
ELSE
Z=0
END IF
CASE(10:99)
IF (UNI==DEC)THEN
Z=1
ELSE
Z=0
END IF
END SELECT
RETORNA=Z
RETURN
END FUNCTION RETORNA
53)
PROGRAM PROBLEMA_53
INTEGER,EXTERNAL::RETORNA
INTEGER::X,W
PRINT*,"INGRESE NUMERO ENTERO"
READ*,X
W=RETORNA(X)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"EL NUMERO ES MULTIPLO DE CINCO"
END IF
IF (W==0)THEN
PRINT*,"EL NUMERO NO ES MULTIPLO DE CINCO"
END IF
END PROGRAM PROBLEMA_53
54)
! Construir una funcin que reciba como parmetro dos enteros y retorne 1 si la diferencia entre los
!dos valores es un nmero primo. Deber retornar 0 si no es as.
PROGRAM PROBLEMA_54
INTEGER,EXTERNAL::RETORNAPRIMO
INTEGER::X,Y,W
PRINT*,"INGRESE PRIMER NUMERO ENTERO"
READ*,X
PRINT*,"INGRESE SEGUNDO NUMERO ENTERO"
READ*,Y
W=RETORNAPRIMO(X,Y)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"LA DIFERENCIA DE LOS NUMEROS ES UN NUMERO PRIMO"
END IF
IF (W==0)THEN
PRINT*,"LA DIFERENCIA DE LOS NUMEROS NO ES UN NUMERO PRIMO"
END IF
END PROGRAM PROBLEMA_54
INTEGER FUNCTION RETORNAPRIMO(A,B)
INTEGER,INTENT(IN)::A,B
INTEGER::N,C,I,Z
N=A-B
C=0
DO I=1,N
IF(MOD(N,I)==0)THEN
C=C+1
END IF
END DO
IF(C /= 2)THEN
Z=0
ELSE
Z=1
END IF
RETORNAPRIMO=Z
RETURN
END FUNCTION RETORNAPRIMO
55)
PROGRAM PROBLEMA_55
INTEGER,EXTERNAL::RETORNAINVERSO
INTEGER::X,Y,W
PRINT*,"INGRESE PRIMER NUMERO ENTERO"
READ*,X
PRINT*,"INGRESE SEGUNDO NUMERO ENTERO"
READ*,Y
W=RETORNAINVERSO(X,Y)
PRINT*,"RETORNA ",W , " POR LO TANTO"
IF(W==1)THEN
PRINT*,"LOS NUMEROS SON INVERSOS"
END IF
IF (W==0)THEN
PRINT*,"LOS NUMEROS NO SON INVERSOS"
END IF
END PROGRAM PROBLEMA_55
56)
! Construir una funcin que reciba como parmetro un entero y un dgito menor o igual a 5 y retorne el
dgito del nmero que
! se encuentre en la posicin especificada por el dgito que lleg como parmetro.
PROGRAM PROBLEMA_56
INTEGER,EXTERNAL::RETORNA
INTEGER::A,B,W
PRINT*,"INGRESE NUMERO ENTERO DE MAXIMO 5 DIGITOS"
READ*,A
PRINT*,"INGRESE DIGITO MENOR O IGUAL A 5"
READ*,B
W=RETORNA(A,B)
IF(A<=99999)THEN
PRINT*,"EL DIGITO QUE OCUPA LA POSICION",B, " ES ",W
ELSE
PRINT*,"NUMERO INGRESADO FUERA DEL RANGO"
END IF
END PROGRAM PROBLEMA_56
57)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras y retorne el
mayor de los datos del vector.
PROGRAM PROBLEMA_57
INTEGER,EXTERNAL::PMAX
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I
DO I=1,10
PRINT*,"INGRESE VALOR ",I
READ*,VECTOR1(I)
END DO
PRINT*,"EL MAYOR VALOR DEL VECTOR ES",PMAX(VECTOR1)
END PROGRAM PROBLEMA_57
58)
!Construir una funcin que reciba como parmetro un vector de 10
! posiciones enteras y retorne la posicin
!en la cual se encuentra el mayor de los datos del vector.
PROGRAM PROBLEMA_58
INTEGER,EXTERNAL::PMAX
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I
DO I=1,10
PRINT*,"INGRESE VALOR ",I
READ*,VECTOR1(I)
END DO
PRINT*,"LA POSICION DEL MAYOR VALOR DEL VECTOR ES",PMAX(VECTOR1)
END PROGRAM PROBLEMA_58
59)
60)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones
!enteras y retorne la cantidad de nmeros que pertenecen a los 30 primeros elementos de la serie de
Fibonacci..
! 0,1,1,2,3,5,8,13,21,34...Fcil, no? (0+1=1 / 1+1=2 / 1+2=3 / 2+3=5 / 3+5=8 / 5+8=13 / 8+13=21 /
13+21=34...)
!As sucesivamente, hasta el infinito. Por regla, la sucesin de Fibonacci se escribe as: x(n) = x(n-1) + x(n-
2)
PROGRAM PROBLEMA_60
INTEGER,EXTERNAL::VECTORFIBO
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I,CANT
DO I=1,10
PRINT*,"INGRESE ELEMENTO ",I
READ*,VECTOR1(I)
END DO
CANT=VECTORFIBO(VECTOR1)
PRINT*,"LA CANTIDAD DE NUMEROS QUE COINCIDEN CON ALGUNO DE LOS 30 PRIMEROS NUMEROS
FIBONACCI ES:",CANT
END PROGRAM PROBLEMA_60
62)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras y retorne el
promedio entero del vector.
PROGRAM PROBLEMA_62
INTEGER,EXTERNAL::PROM_ENT !MEDIA ES EL NOMBRE DE LA FUNCION
INTEGER,DIMENSION(10)::VECTOR
INTEGER::I
DO I=1,10
PRINT*,"INGRESE VALOR: ", I
READ*,VECTOR(I)
END DO
PRINT*,"EL PROMEDIO ENTERO ES = ",PROM_ENT(VECTOR)
END PROGRAM PROBLEMA_62
63)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras y retorne el
promedio real del vector.
PROGRAM PROBLEMA_63
REAL,EXTERNAL::PROM_REAL !MEDIA ES EL NOMBRE DE LA FUNCION
REAL,DIMENSION(10)::VECTOR
INTEGER::I
DO I=1,10
PRINT*,"INGRESE VALOR: ", I
READ*,VECTOR(I)
END DO
PRINT*,"EL PROMEDIO REAL ES = ",PROM_REAL(VECTOR)
END PROGRAM PROBLEMA_63
64)
!64.- Construir una funcin que reciba como parmetros un vector de 10 posiciones enteras
! y un valor entero y retorne 1 si dicho valor entero se encuentra en el vector.
! Deber retornar 0 si no es as.
PROGRAM PROBLEMA_64
INTEGER,EXTERNAL::ENCUENTRA
INTEGER,DIMENSION(10)::VECTOR
INTEGER::I,X,W
PRINT*,"VECTOR"
DO I=1,10
PRINT*,"INGRESE ELEMENTO", I
READ*,VECTOR(I)
END DO
PRINT*,"INGRESE VALOR ENTERO"
READ*,X
W=ENCUENTRA(VECTOR,X)
PRINT*,"RETORNA",W, " POR LO TANTO "
IF(W==1)THEN
PRINT*,"EL VALOR INGRESADO SE ENCUENTRA EN EL VECTOR"
END IF
IF(W==0)THEN
PRINT*,"EL VALOR INGRESADO NO SE ENCUENTRA EN EL VECTOR"
END IF
END PROGRAM PROBLEMA_64
IF(C>=1)THEN
Z=1
ELSE
Z=0
END IF
ENCUENTRA=Z
RETURN
END FUNCTION ENCUENTRA
65)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones
!enteras y retorne la posicin del nmero entero que tenga mayor cantidad de dgitos.
PROGRAM PROBLEMA_65
INTEGER,EXTERNAL::MAYDIG
INTEGER,DIMENSION(10)::VECTOR
INTEGER::I
PRINT*,"VECTOR"
DO I=1,10
PRINT*,"INGRESE ELEMENTO", I
READ*,VECTOR(I)
END DO
PRINT*,"LA POSICION DEL ENTERO QUE TIENE LA MAYOR CANTIDAD DE DIGITOS ES",MAYDIG(VECTOR)
END PROGRAM PROBLEMA_65
INTEGER FUNCTION MAYDIG(VECTOR2)
INTEGER,DIMENSION(10),INTENT(IN)::VECTOR2
INTEGER::POSICION,I,MAYOR
MAYOR=VECTOR2(1)
DO I=1,10
IF(VECTOR2(I)>=MAYOR)THEN
MAYOR=VECTOR2(I)
POSICION=I
END IF
END DO
MAYDIG=POSICION
RETURN
END FUNCTION MAYDIG
66)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras y retorne la
!posicin en la que se encuentre el mayor nmero primo que termine en 3 almacenado en el vector.
PROGRAM PROBLEMA_66
INTEGER,EXTERNAL::VECTORPRIMO
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I,POS
DO I=1,10
PRINT*,"INGRESE VALOR ",I
READ*,VECTOR1(I)
END DO
POS=VECTORPRIMO(VECTOR1)
IF(POS>=1)THEN
PRINT*,"LA POSICION DEL MAYOR VALOR PRIMO QUE TERMINA EN TRES ES",POS
ELSE
PRINT*,"NO HAY NUMEROS PRIMOS QUE TERMINEN EN TRES"
END IF
END PROGRAM PROBLEMA_66
67)
!Construir una funcin que reciba como parmetro un entero
!y retorne ese elemento de la serie de Fibonacci.
PROGRAM PROBLEMA_67
INTEGER,EXTERNAL::VECTORFIBO
INTEGER::X
PRINT*,"INGRESE PARAMETRO ENTERO : "
READ*,X
PRINT*,"EL ELEEMENTO",X ," DE LA SERIE DE FIBONACCI ES :",VECTORFIBO(X)
END PROGRAM PROBLEMA_67
68)
!Construir una funcin que reciba como parmetros dos enteros, el primero actuar como
! base y el segundo como exponente y retorne el resultado de elevar dicha base a dicho exponente.
PROGRAM PROBLEMA_68
INTEGER,EXTERNAL::BASEEXP
INTEGER::X,Y
PRINT*,"INGRESE BASE ENTERA : "
READ*,X
PRINT*,"INGRESE EXPONENTE ENTERO : "
READ*,Y
PRINT*,X," ELEVADO A LA ",Y," ES IGUAL A :",BASEEXP(X,Y)
END PROGRAM PROBLEMA_68
69)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras
!y retorne la cantidad de nmeros terminados en 3 que contiene el vector.
PROGRAM PROBLEMA_69
INTEGER,EXTERNAL::TERMINA3
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I
DO I=1,10
PRINT*,"INGRESE VALOR ",I
READ*,VECTOR1(I)
END DO
PRINT*,"LA CANTIDAD DE ELEMENTOS DEL VECTOR QUE TERMINAN EN TRES ES :",TERMINA3(VECTOR1)
END PROGRAM PROBLEMA_69
71)
!Construir una funcin que reciba como parmetro un vector de 10 posiciones enteras y un dgito y
! que retorne la cantidad de nmeros del vector que terminan en dicho dgito.
PROGRAM PROBLEMA_71
INTEGER,EXTERNAL::TERMINADIG
INTEGER,DIMENSION(10)::VECTOR1
INTEGER::I,X
DO I=1,10
PRINT*,"INGRESE VALOR ",I
READ*,VECTOR1(I)
END DO
PRINT*,"INGRESAR DIGITO "
READ*,X
PRINT*,"LA CANTIDAD DE ELEMENTOS DEL VECTOR QUE TERMINAN EN",X,"
ES:",TERMINADIG(VECTOR1,X)
END PROGRAM PROBLEMA_71