Sunteți pe pagina 1din 32

LENGUAJE DE PROGRAMACION

ING. WILLIAM CHAUCA NOLASCO

SOLUCION DE PROBLEMAS CON FORTRAN


1.- Traduzca las siguientes fórmulas a expresiones escritas en Fortran, declarando para
ello las variables que considere necesarias:

A) PROGRAM EJERCICIO_A
REAL::F
REAL::C
PRINT*,"INGRESE EL VALOR DE C"
READ*,C
F=(9/5)*C+32
PRINT*,"LA TEMPERATURA EN GRADOS FARENHEIT ES:", F
END PROGRAM EJERCICIO_A

B) PROGRAM EJERCICIO_B
IMPLICIT NONE
REAL::X,Y,Z
WRITE(*,*)"INGRESE EL VALOR DE LAS COORDENADAS"
READ(*,*)X,Y
IF(X/=0) THEN
WRITE(*,*)"LA FUNCION ESTA DEFINIDA"
ELSE
WRITE(*,*)"LA FUNCIÓN NO ESTÁ DEFINIDA"
IF(Y/=0.AND.Y/=-1) THEN
WRITE(*,*)"LA FUNCION ESTA DEFINIDA"
ELSE
WRITE(*,*)"LA FUNCIÓN NO ESTA DEFINIDA"
Z=(1+X**2/Y)/(X**3/(1+Y))
WRITE(*,*)"EL RESULTADO DE LA FUNCIÓN ES: ",Z
END IF
END IF
END PROGRAM EJERCICIO_B
C) PROGRAM EJERCICIO_C
REAL::X
REAL::Y
REAL,PARAMETER::E=2.71
PRINT*,"INGRESE EL VALOR DE X"
READ*,X
IF(X/=0) THEN
WRITE(*,*)"LA FUNCION ESTA DEFINIDA"
ELSE
WRITE(*,*)"LA FUNCION NO ESTA DEFINIDA"
END IF
Y=SQRT(1+(E**X/X**2)**2)
PRINT*,"EL VALOR DE LA FUNCION ES",Y
END PROGRAM EJERCICIO_C

2.- ¿Cuál es el resultado de evaluar las siguientes expresiones si suponemos que,


inicialmente, x vale 1?

● (x > 1).OR. (x+1 < 10)


(1>1).OR.(2<10)
FALSE.OR.FALSE
.FALSE.
● (1 > x) .AND.(1 > x+1)
(1>1).AND. (1>2)
FALSE.AND.FALSE
.FALSE.
● (1 = = x).AND.(10 > x+2)
(1==1).AND. (10>3)
TRUE.AND.TRUE
.TRUE.
● (1 == x) .OR.(10 > x+3)
(1==1).OR.(10>4)
TRUE.OR.TRUE
.TRUE.

PROBLEMA 1

PROGRAM VARIABLE
LOGICAL F1
X=0
F1=(X>1).OR.(X+1<10)
PRINT*,"EL RESULTADO LOGICO ES ",F1
END PROGRAM VARIABLE
!EL RESULTADO ES VERDADERO

PROBLEMA2
PROGRAM VARIABLE
LOGICAL F1
X=1
F1=(1>X).AND.(1>X+1)
PRINT*,"EL RESULTADO LOGICO ES ",F1
END PROGRAM VARIABLE
!EL RESULTADO ES FALSO

PROBLEMA3
PROGRAM VARIABLE
LOGICAL F1
X=1
F1=(1==X).AND.(10>X+2)
PRINT*,"EL RESULTADO LOGICO ES ",F1
END PROGRAM VARIABLE
!EL RESULTADO ES VERDADERO

PROBLEMA4
PROGRAM VARIABLE
LOGICAL F1
X=1
F1=(1==X).OR.(10>X+3)
PRINT*,"EL RESULTADO LOGICO ES ",F1
END PROGRAM VARIABLE
!EL RESULTADO ES VERDADERO

3.-Las variables siguientes tienen los valores indicados B=6.0, C=4.08, M=5, N =3 y K =
2, indique que valores almacenaran en la variable J como resultado de las siguientes
operaciones en FORTRAN

a) PROGRAM CALCULO
INTEGER::J
INTEGER:: M=5,N=3,K=2
J=M+(N/K)
PRINT*,”EL VALOR DE J ES=”,J
END PROGRAM CALCULO

b) PROGRAM CALCULO2
INTEGER::J
INTEGER::C=4.08,B=6.0,K=2,N=2
J=(C+B)/(K+N)
PRINT*,”EL VALOR DE J ES”,J
END PROGRAM CALCULO2
c) PROGRAM CALCULO3
INTEGER::J
INTEGER::M=5,K=2
J=M-((M/K)*K)
PRINT*,”EL VALOR DE J ES”,J
END PROGRAM CALCULO 3

d) PROGRAM CALCULO4
INTEGER::J
INTEGER::K=2,N=3
J=N*N**K
PRINT*,”EL VALOR DE J ES “,J
END PROGRAM CALCULO4

4.- Elabore comandos sencillos para las siguientes expresiones matemáticas y asuma
valores de entrada y los tipos de datos con FORTRAN

𝜋
a.- 𝑎𝑟𝑒𝑎 = 2. 𝑃. 𝑅. 𝑆𝑒𝑛 (𝜌 )

4𝑋 2
b.- 𝐴𝑅𝐶 = 2√𝑌 2 + 3

−𝐶𝑜𝑠4 𝑥
c.-𝑆 = 𝑥

1 1+𝑠𝑒𝑛(𝑥)
d.- 𝐺 = 2 𝑙𝑜𝑔 1−𝑠𝑒𝑛(𝑥)
1 2𝑎2
e.-𝑍 = − √𝑥 2 2

−𝑎 3√(𝑥 2 −𝑎2 )3
𝛼 𝑥 𝛼
𝑐𝑜𝑠𝑒𝑛𝑜((√ )+ )
𝑥2 2 𝑥
𝑒
f.- 𝐵 =
√2𝜋𝑥
1
g.- 𝑦 = (2𝜋) . 𝑥 𝑥+1 . 𝑒 −𝑥
2

A. PROGRAM AREA
REAL::P,R,PI1,RO
REAL::AREA
PRINT*,"DAR EL VALOR DE P "
READ*,P
PRINT*,"DAR EL VALOR DE R"
READ*,R
PRINT*," DAR EL VALOR DE RO"
READ*,RO
PI1=3.1416
AREA=2*P*R*SIN(PI1/RO)
PRINT*,"EL VALOR DEL AREA ES ", AREA
END PROGRAM AREA

B. PROGRAM PROBLEMA
REAL::Y,X
REAL::ARC
PRINT*," DAR VALOR DE Y"
READ*,Y
PRINT*,"DAR EL VALOR DE X"
READ*,X
ARC=2*SQRT(Y**2+((4*X**2)/3))
PRINT*," EL VALOR DE ARC ES ", ARC
END PROGRAM PROBLEMA

C. PROGRAM PROBLEMA
REAL::X
REAL::C
PRINT*," DAR EL VALOR DE X "
READ*,X
IF(X/=0)THEN
C=(-COS(X)**4)/X
PRINT*,"EL VALOR DE C ES ",C
ELSE
IF(X==0)THEN
PRINT*,"NO EXISTE SOLUCION"
END IF
END IF
END PROGRAM PROBLEMA

D. PROGRAM PROBLEMA
REAL::X
REAL::G
PRINT*," DAR EL VALOR DE X "
READ*,X
IF((1+SIN(X))/(1-SIN(X))>=1)THEN
G=0.5*LOG10((1+SIN(X))/(1-SIN(X)))
PRINT*,"EL VALOR DE G ES ", G
ELSE
IF((1+SIN(X))/(1-SIN(X))<1)THEN
PRINT*,"NO HAY SOLUCION"
END IF
END IF
END PROGRAM PROBLEMA

E.PROGRAM PROBLEMA
REAL::Z
REAL::X
REAL::A
PRINT*,"DAR EL VALOR DE X "
READ*,X
PRINT*,"DAR EL VALOR DE A "
READ*,A
IF((X**2-A**2)>0)THEN
Z=-(1/(SQRT(X**2-A**2)))-(2*A**2)/(3*(SQRT(X**2-A**2)**3))
PRINT*,"EL VALOR DE Z ES ",Z
ELSE
IF((X**2-A**2)<=0)THEN
PRINT*,"ERROR"
END IF
END IF
END PROGRAM PROBLEMA

F. PROGRAM PROBLEMA
REAL::B
REAL::X
REAL::A
PRINT*,"DAR EL VALOR DE X "
READ*,X
PRINT*,"DAR EL VALOR DE A "
READ*,A
E=2.718
PI=3.1416
IF((2*PI*X)>0)THEN
B=E**((A/X**2)*COS(SQRT(X/2)+A/X))/(SQRT(2*PI*X))
PRINT*,"EL VALOR DE B ES",B
ELSE
IF((2*PI*X)<=0)THEN
PRINT*,"ERROR"
END IF
END IF
END PROGRAM PROBLEMA

G. PROGRAM PROBLEMA
REAL::Y
REAL::X
PRINT*,"DAR EL VALOR DE X"
READ*,X
PI=3.1416
E=2.718
Y=(SQRT(2*PI))*(X**(X+1))*E**(-X)
PRINT*,"EL VALOR DE Y ES",Y
END PROGRAM PROBLEMA

5.- De los siguientes nombres. ¿Cuáles son validos como variables y cuales no son
válidos como variable?

● H
● BETA
● ALPHA325
● IT*
● LARGA
● F(3)12
● CHI
● COS
● I 12G
● X+2
● 42G
● A*B
● GAMMA
● IBM360
● COBOL
● A1

SI

SI

SI

NO

SI

NO

SI
SI

NO

NO

NO

NO

SI

SI

SI

SI

6.- Calcular el pago neto de un trabajador conociendo el número de horas trabajadas,


la tarifa horaria y la tasa de impuestos.

PROGRAM PAGO_NETO
REAL::HORAS_TRABAJADAS
REAL::TARIFA_HORARIA
REAL::TASA_DE_IMPUESTOS
REAL::PAGO
PRINT*,"INGRESE LAS HORAS TRABAJADAS"
READ*,HORAS_TRABAJADAS
PRINT*,"INGRESE LA TARIFA HORARIA"
READ*,TARIFA_HORARIA
PRINT*,"INGRESE LA TASA DE IMPUESTOS"
READ*,TASA_DE_IMPUESTOS
PAGO=TARIFA_HORARIA*HORAS_TRABAJADAS-
TARIFA_HORARIA*HORAS_TRABAJADAS*TASA_DE_IMPUESTOS/100
PRINT*,"EL PAGO NETO ES",PAGO
END PROGRAM PAGO_NETO

7.- Escribir órdenes en FORTRAN que calcule la superficie de un triángulo en función


de la base y la altura. (S = 1/2 Base × Altura).

PROGRAM AREA_TRIANGULO
REAL::BASE,ALTURA
REAL::S
PRINT*,"INGRESE EL VALOR DE LA BASE"
READ*,BASE
PRINT*,"INGRESE EL VALOR DE LA ALTURA"
READ*,ALTURA
S=(BASE*ALTURA)/2
PRINT*,"EL AREA DEL TRIANGULO ES",S
END PROGRAM AREA_TRIANGULO

8.- Calcular y visualizar la longitud de la circunferencia y el área de un círculo de radio


dado.

PROGRAM LONGITUD_CIRCUNFERENCIA
REAL::ANGULO,RADIO
REAL::L
REAL,PARAMETER::PI=3.1416
PRINT*,"INGRESE EL VALOR DEL RADIO"
READ*,RADIO
PRINT*,"INGRESE EL VALOR DEL ANGULO"
READ*,ANGULO
L=RADIO*ANGULO*PI/180
PRINT*,"LA LONGITUD DE LA CIRCUNFERENCIA ES",L
END PROGRAM LONGITUD_CIRCUNFERENCIA

PROGRAM AREA_CIRCULO
REAL::RADIO
REAL::A
REAL,PARAMETER::PI=3.1416
PRINT*,”INGRESE EL VALOR DEL RADIO”
READ*,RADIO
A=PI*(RADIO**2)
PRINT*,”EL AREA DEL CIRCULO ES”,A
END PROGRAM AREA_CIRCULO

10.- Escribir un algoritmo que encuentre el salario semanal de un trabajador, dada la


tarifa horaria y el número de horas trabajadas diariamente.

PROGRAM SALARIO1
REAL::SALARIO_HORA,HORA_DIARIA
PRINT*,"INGRESE EL PAGO POR HORA"
READ*,SALARIO_HORA
PRINT*,"INGRESE LAS HORAS DE TRABAJO POR DIA"
READ*,HORA_DIARIA
SALARIO=SALARIO_HORA*HORA_DIARIA
PRINT*,"EL SALARIO SEMANAL ES DE",SALARIO," SOLES"
END PROGRAM SALARIO1

11.- Elabore un programa que pida un número del 1 al 5 y diga si es primo o no.

PROGRAM NUMEROPRIMO
REAL::NUMERO
PRINT*,"INGRESE EL NUMERO"
READ*,NUMERO
IF(NUMERO==1) THEN
PRINT*,"EL NUMERO NO ES PRIMO"
STOP
ENDIF
IF(NUMERO==4) THEN
PRINT*,"EL NUMERO NO ES PRIMO"
STOP
ELSE
PRINT*,"EL NUMERO ES PRIMO"
ENDIF
END PROGRAM NUMEROPRIMO

12.- Elabore un programa que pida un número y diga si es par o impar.

PROGRAM PAR
PRINT*,"ESCRIBE EL NUMERO"
READ*,N
IF(MOD(N,2)==0)THEN
PRINT*,"ES PAR"
ELSE
PRINT*,"ES IMPAR"
ENDIF
END PROGRAM PAR

13.- Elabore un programa que pida un número del 1 al 7 y diga el día de la semana
correspondiente.

PROGRAM SEMANA
REAL::S
PRINT*,"INGRESE EL NUMERO DEL 1 AL 7"
READ*,S
IF(S==1) THEN
PRINT*,"ES LUNES"
ELSE
IF(S==2) THEN
PRINT*,"ES MARTES"
ELSE
IF(S==3) THEN
PRINT*,"ES MIERCOLES"
ELSE
IF(S==4) THEN
PRINT*,"ES JUEVES"
ELSE
IF(S==5) THEN
PRINT*,"ES VIERNES"
ELSE
IF(S==6) THEN
PRINT*,"ES SABADO"
ELSE
IF(S==7) THEN
PRINT*,"ES DOMINGO"
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
END PROGRAM SEMANA

14.- Elabore un programa que pida un número del 1 al 12 y diga el nombre del mes
correspondiente.

PROGRAM MES
REAL::M
PRINT*,"INGRESE EL NUMERO DEL 1 AL 12"
READ*,M
IF(M==1) THEN
PRINT*,"ES ENERO"
ELSE
IF(M==2) THEN
PRINT*,"ES FEBRERO"
ELSE
IF(M==3) THEN
PRINT*,"ES MARZO"
ELSE
IF(M==4) THEN
PRINT*,"ES ABRIL"
ELSE
IF(M==5) THEN
PRINT*,"ES MAYO"
ELSE
IF(M==6) THEN
PRINT*,"ES JUNIO"
ELSE
IF(M==7) THEN
PRINT*,"ES JULIO"
ELSE
IF(M==8) THEN
PRINT*,"ES AGOSTO"
ELSE
IF(M==9) THEN
PRINT*,"ES SEPTIEMBRE"
ELSE
IF(M==10) THEN
PRINT*,"ES OCTUBRE"
ELSE
IF(M==11) THEN
PRINT*,"ES NOVIEMBRE"
ELSE
IF(M==12) THEN
PRINT*,"ES DICIEMBRE"
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDI
ENDIF
ENDIF
ENDIF
END PROGRAM MES

15.- Elabore un programa que pida pida 3 números y los muestre en pantalla de menor
a mayor.
PROGRAM MENOR_A_MAYOR
PRINT*,"INGRESE EL NUMERO"
READ*,A
PRINT*,"INGRESE EL NUMERO"
READ*,B
PRINT*,"INGRESE EL NUMERO"
READ*,C
IF(A<B.AND.A<C)THEN
IF(B<C)THEN
PRINT*,A,B,C
ELSE
PRINT*,A,C,B
ENDIF
ENDIF
IF(B<A.AND.B<C)THEN
IF(C<A)THEN
PRINT*,B,C,A
ELSE
PRINT*,B,A,C
END IF
ELSE
IF(C<A.AND.C<B)THEN
IF(A<B)THEN
PRINT*,C,A,B
ELSE
PRINT*,C,B,A
END IF
END IF
END IF
END PROGRAM MENOR_A_MAYOR

16.- Elabore un programa que pida 3 números y los muestre en pantalla de mayor a
menor.

PROGRAM MAYOR_A_MENOR
PRINT*,"INGRESE EL NUMERO"
READ*,A
PRINT*,"INGRESE EL NUMERO"
READ*,B
PRINT*,"INGRESE EL NUMERO"
READ*,C
IF(A>B.AND.A>C)THEN
IF(B>C)THEN
PRINT*,A,B,C
ELSE
PRINT*,A,C,B
endif
endif
IF(B>A.AND.B>C)THEN
IF(C>A)THEN
PRINT*,B,C,A
ELSE
PRINT*,B,A,C
END IF
ELSE
IF(C>A.AND.C>B)THEN
IF(A>B)THEN
PRINT*,C,A,B
ELSE
PRINT*,C,B,A
ENDIF
ENDIF
ENDIF
END PROGRAM MAYOR_A_MENOR

17.- Elabore un programa que pida 3 números y los muestre en pantalla de mayor a
menor en líneas distintas. En caso de haber números iguales se escriben en la misma
línea.

PROGRAM PROGRESION
PRINT*,"INGRESE EL NUMERO"
READ*,A
PRINT*,"INGRESE EL NUMERO"
READ*,B
PRINT*,"INGRESE EL NUMERO"
READ*,C
IF(A==B)THEN
IF(A>C)THEN
PRINT*,A,B
PRINT*,C
ELSE
PRINT*,C
PRINT*,A,B
ENDIF
ELSE
IF(A==B.AND.B==C)THEN
PRINT*,C,B,A
ELSE
IF(B==C)THEN
IF(B>A)THEN
PRINT*,B,C
PRINT*,A
ELSE
PRINT*,A
PRINT*,B,C
END IF
ELSE
IF(C==A)THEN
IF(C>B)THEN
PRINT*, C,A
PRINT*,B
ELSE
PRINT*,B
PRINT*,C,B
ENDIF
ELSE
IF(A>B.AND.A>C)THEN
IF(B>C)THEN
PRINT*,A
PRINT*,B
PRINT*,C
ELSE
PRINT*,A
PRINT*,C
PRINT*,B
END IF
END IF
IF(B>A.AND.B>C)THEN
IF(C>A)THEN
PRINT*,B
PRINT*,C
PRINT*,A
ELSE
PRINT*,B
PRINT*,A
PRINT*,C
END IF
ELSE
IF(C>A.AND.C>B)THEN
IF(A>B)THEN
PRINT*,C
PRINT*,A
PRINT*,B
ELSE
PRINT*,C
PRINT*,B
PRINT*,A
END IF
END IF
END IF
END IF
END IF
END IF
END IF
END PROGRAM PROGRESION

18.- Elabore un programa que pida un número y diga si es positivo o negativo.

PROGRAM NEGATIVO
PRINT*,"ESCRIBE EL NUMERO"
READ*,N
IF(N>0)THEN
PRINT*,"ES POSITIVO"
ELSE
PRINT*,"ES NEGATIVO"
ENDIF
END PROGRAM NEGATIVO

19.-Elabore un programa que pida pida un número y diga si es mayor de 100.

SOLUCIÓN:

PROGRAM MAYOR_100
REAL::X
PRINT*, "INGRESE UN NUMERO"
READ*,X
IF (X>100) THEN
PRINT*, "EL NUMERO ES MAYOR QUE 100"
ELSE
IF (X==100) THEN
PRINT*,"EL NUMERO ES 100"
ELSE
PRINT*, "EL NUMERO ES MENOR QUE 100"
END IF
END IF
END PROGRAM MAYOR_100

20.-Elabore un programa que pida una letra y detecte si es una vocal.

SOLUCIÓN:

PROGRAM DETECTAR_VOCAL
CHARACTER::LETRA
PRINT*, "INGRESE UNA LETRA"
READ*,LETRA
SELECT CASE (LETRA)
CASE ("E","A","I","O","U")
PRINT*, "LA LETRA ES UNA VOCAL"
CASE ("B","C","D","F","G","H","J","K","L","M","N","P","Q","R","S","W ","T","Y","X","Z")
PRINT*, "ES UNA CONSONANTE"
END SELECT
END PROGRAM DETECTAR_VOCAL

21.-Elabore un programa que pida tres números y detecte si se han introducido en


orden creciente.

Solución:

PROGRAM ORDEN_CRECIENTE
REAL::X,Y,Z
PRINT*,"INGRESE EL PRIMER NUMERO"
READ*,X
PRINT*,"INGRESE EL SEGUNDO NUMERO"
READ*,Y
PRINT*,"INGRESE EL TERCER NUMERO"
READ*,Z
IF (X<Y .AND. Y<Z) THEN
PRINT*, "EL ORDEN DE LOS NUMEROS ES CRECIENTE"
ELSE
PRINT*,"EL ORDEN DE LOS NUMEROS NO ES CRECIENTE"
END IF
END PROGRAM ORDEN_CRECIENTE

22.-Elabore un programa que pida tres números y detecte si se han introducido en


orden decreciente

Solución:
PROGRAM ORDEN_DECRECIENTE
REAL::X,Y,Z
PRINT*,"INGRESE EL PRIMER NUMERO"
READ*,X
PRINT*,"INGRESE EL SEGUNDO NUMERO"
READ*,Y
PRINT*,"INGRESE EL TERCER NUMERO"
READ*,Z
IF (X>Y .AND. Y>Z) THEN
PRINT*, "EL ORDEN DE LOS NUMEROS ES DECRECIENTE"
ELSE
PRINT*,"EL ORDEN DE LOS NUMEROS NO ES DECRECIENTE"
END IF
END PROGRAM ORDEN_DECRECIENTE

23.-Elabore un programa que pida tres números e indicar si el tercero es igual a la


suma del primero y el segundo.

PROGRAM SUMA_NUMEROS
REAL::X,Y,Z,W
PRINT*,"INGRESE EL PRIMER NUMERO"
READ*,X
PRINT*,"INGRESE EL SEGUNDO NUMERO"
READ*,Y
PRINT*,"INGRESE EL TERCER NUMERO"
READ*,Z
W=X+Y
IF (Z==W) THEN
PRINT*, "EL TERCER NUMERO ES LA SUMA DEL PRIMERO Y EL SEGUNDO"
ELSE
PRINT*, "EL TERCER NUMERO NO ES LA SUMA DEL PRIMERO Y EL SEGUNDO"
END IF
END PROGRAM SUMA_NUMEROS

24.-Elabore un programa que muestre un menú que contemple las opciones “Archivo”,
“Buscar” y “Salir”, en caso de que no se introduzca una opción correcta se notificará por
pantalla.

PROGRAM MENÚ
CHARACTER(LEN=15)::OPCIÓN
PRINT*,”INGRESE LA OPCIÓN”
READ*,OPCIÓN
IF(OPCIÓN==”ARCHIVO”.OR.OPCION==”BUSCAR”.OR.OPCION==”SALIR”) THEN
PRINT*,”OPCIÓN CORRECTA”
ELSE
PRINT*,”OPCIÓN INCORRECTA”
END IF
END PROGRAM MENÚ

25.-Elabore un programa que tome dos números y diga si ambos son pares o impares.

PROGRAM PAR_IMPAR
REAL::X,Y,T
T=2
PRINT*,"INGRESE EL PRIMER NUMERO"
READ*,X
PRINT*,"INGRESE EL SEGUNDO NUMERO"
READ*,Y
Q1=INT(X/T)
Q2=INT(Y/T)
R1=X-(T*Q1)
X=(T*Q1)+R1
R2=Y-(T*Q2)
Y=(T*Q2)+R2
IF (R1==0 .AND. R2==0)THEN
PRINT*, "AMBOS NUMEROS SON PARES"
ELSE
IF (R1/=0 .AND. R2/=0) THEN
PRINT*, "AMBOS NUMEROS SON IMPARES"
ELSE
IF (R1==0 .AND. R2/=0)THEN
PRINT*, "EL PRIMERO ES PAR Y EL SEGUNDO ES IMPAR"
ELSE
IF (R1/=0 .AND. R2==0)THEN
PRINT*, "EL PRIMERO ES IMPAR Y EL SEGUNDO ES PAR"
END IF
END IF
END IF
END IF
END PROGRAM PAR_IMPAR
27.-Elabore un programa que pida tres números y diga si el tercero es el resto de la
división de los dos primeros.

PROGRAM RESTO_DIVISION
REAL::X,Y,Z,R
INTEGER::Q

PRINT*,"INGRESE EL PRIMER NUMERO"


READ*,X
PRINT*,"INGRESE EL SEGUNDO NUMERO"
READ*,Y
PRINT*,"INGRESE EL TERCER NUMERO"
READ*,Z
Q=AINT(X/Y)
R=X-(Y*Q)
X=(Y*Q)+R
IF (Z==R) THEN
PRINT*, "EL TERCER NUMERO ES EL RESTO DE DIVIDIR PRIMERO Y EL SEGUNDO"
ELSE
PRINT*, "EL TERCER NUMERO NO ES EL RESTO DE DIVIDIR EL PRIMERO Y EL SEGUNDO"
END IF
END PROGRAM RESTO_DIVISION

28.-Elabore un programa que muestre un menú donde las opciones sean “Equilátero”,
“Isósceles” y “Escaleno”, pida una opción y calcule el perímetro del triángulo
seleccionado.

Solución:

PROGRAM PERIMETRO
REAL::A,B,C,P
INTEGER::F
!INSTRUCCIONES
PRINT*,"MENU PARA SELECCIONAR EL TIPO DE TRIANGULO"
PRINT*," ***************"
PRINT*,"INSERTE EL NUMERO DEL MENU"
PRINT*,"PARA PROCEDER A CALCULAR"
PRINT*,"EL PERIMETRO DEL TRIANGULO"
PRINT*,"***********"
PRINT*,"(1)PARA ISOSCELES"
PRINT*,"(2)PARA ESCALENO"
PRINT*,"(3)PARA EQUILATERO"
PRINT*,"***********"
READ*,F
PRINT*,"*********"
!BLOQUE DE CONDICIONALES
IF(F==1)THEN
PRINT*,"INTRODUZCA EL VALOR DE LOS LADOS IGUALES"
READ*,A
PRINT*,"INTRODUZCA EL VALOR DE LADO RESTANTE"
READ*,C
P=(2*A)+C
PRINT*,"EL VALOR DEL PERIMETRO ES ",P
ELSE IF(F==2)THEN
PRINT*,"INTRODUZCA EL VALOR DEL PRIMER LADO"
READ*,A
PRINT*,"INTRODUZCA EL VALOR DEL SEGUNDO LADO"
READ*,B
PRINT*,"INTRODUZCA EL VALOR DEL TERCER LADO"
READ*,C
P=A+B+C
PRINT*,"EL VALOR DEL PERIMETRO ES ",P
ELSE IF(F==3)THEN
PRINT*,"INTRODUZCA EL VALOR DEL LADO"
READ*,A
P=3*A
PRINT*,"EL VALOR DEL PERIMETRO ES ",P
END IF
END PROGRAM PERIMETRO

29.-Elabore un programa que lea un importe bruto y calcule su importe neto, si es


mayor de 15.000 se le aplicará un 16% de impuestos, en caso contrario se le aplicará
un 10%.

SOLUCIÓN:

PROGRAM IMPORTE
IMPLICIT NONE
REAL::IB
REAL::IN
PRINT*,"INTRODUZCA SU IMPORTE TOTAL"
READ*,IB
IN=IB*84/100
IF(IB>15000) THEN
PRINT*,"SU IMPORTE NETO SERA",IN
ELSE IF (IB<=15000) THEN
IN=IB*90/100
PRINT*,"SU IMPORTE NETO SERA",IN
END IF
END PROGRAM IMPORTE

30.-Elabore un programa que lea una hora en hora:minutos:segundos y diga la hora


que es un segundo después.

Solución:

PROGRAM HORA
IMPLICIT NONE
REAL::H
REAL::M
REAL::S
PRINT*,"DAME LA HORA"
READ*,H
IF(H>0 .AND. H<24) THEN
PRINT*,"DAME LOS MINUTOS"
READ*,M
PRINT*,"DAME LOS SEGUNDOS"
READ*,S
PRINT*,"SON LAS ", H,"horas",M,"minutos",S+1,"segundos"
ELSE
IF(H<0 .AND. H>24)THEN
PRINT*, "NO ESTA DENTRO DEL RANGO DE 24 HORAS"
END IF
END IF
END PROGRAM HORA

31.-Elabore un programa que calcule el sueldo que le corresponde al trabajador de una


empresa que cobra 40,000 dólares anuales, el programa debe realizar los cálculos en
función de los siguientes criterios:
a. Si lleva más de 10 años en la empresa se le aplica un aumento del 10%.
b. Si lleva menos de 10 años pero más que 5 se le aplica un aumento del 7%.
c. Si lleva menos de 5 años pero más que 3 se le aplica un aumento del 5%.
d. Si lleva menos de 3 años se le aplica un aumento del 3%.

Solución:

PROGRAM SUELDO
IMPLICIT NONE
REAL::SF
REAL::A
REAL::C
C=40000
PRINT*,"Introduzca la cantidad de años de servicio"
READ*,A
IF(A>10) THEN
SF=C*110/100
PRINT*,"SU SUELDO FINAL ES ",SF
ELSE IF(A<10 .AND. A>5) THEN
SF=C*107/100
PRINT*,"SU SUELDO FINAL ES ",SF
ELSE IF(A<5 .AND. A>3) THEN
SF=C*105/100
PRINT*,"SU SUELDO FINAL ES ",SF
ELSE IF (A<3) THEN
SF=C*103/100
PRINT*,"SU SUELDO FINAL ES ",SF
END IF
END PROGRAM SUELDO

32.-Elabore un programa que convierte de grados Fahrenheit a grados Celsius

Solución:

PROGRAM CONVERTIR_F_TO_C
IMPLICIT NONE
REAL:: F
REAL:: C
PRINT*, " PROGRAMA PARA CONVERTIR EL VALOR DE TEMPERATURA DE GRADOS
FARENHEIT A GRADOS CELSIUS”
PRINT*, " INTRODUZCA EL VALOR DE F"
READ*,F
C=(F-32)*5/9
PRINT*, "EL VALOR EN GRADOS CELSIUS ES ",C
END PROGRAM CONVERTIR_F_TO_C

33.-Escriba un programa que te imprima un mensaje de presentación, te pregunte


cómo te llamas y te salude

PROGRAM MENSAJE
CHARACTER(LEN=10)::NOMBRE, MEN=7, MEN25
PRINT*,"INGRESE SU NOMBRE"
READ*,NOMBRE
MEN="!HOLA"
MEN2="BIENVENIDOS A FORTRAN 90!"
PRINT*, MEN, NOMBRE, MEN2
END PROGRAM MENSAJE

34.-Programa que pide la calificación de un alumno y muestra un mensaje según le


corresponda

PROGRAM NOTAS
REAL::NOTA
PRINT*,"LA NOTA ES"
READ*,NOTA
IF(NOTA>=11) THEN
PRINT*,"ESTA APROBADO"
END IF
IF (NOTA<11) THEN
PRINT*,"ESTA DESAPROBADO"
END IF
END PROGRAM NOTAS

35.-Realizar un programa que lea un número en pies y calcule e imprima su


equivalente en yardas, pulgadas, centímetros o metros según sea la opción que
seleccione el usuario

PROGRAM CONVER
REAL::PIES,YARD,PULG,CENT,MET
INTEGER::X
PRINT*,”INGRESE LA MEDIDA EN PIES”
READ*, PIES
YARD=PIES*(1/3)
PULG=(12*PIES)
MET=PIES*0.3048
CENT=PIES*30.48
PRINT*,”1.YARDAS”
PRINT*,”2.PULGADAS”
PRINT*,”3.METROS”
PRINT*,”4.CENTIMETROS”
PRINT*,”INGRESE LA OPCION”
READ*,X
SELECT CASE(X)
CASE(1)
PRINT*,”EL EQUIVALENTE EN YARDAS ES”,YARD
CASE(2)
PRINT*,”EL EQUIVALENTE EN PULGADAS ES”,PULG
CASE(3)
PRINT*,”EL EQUIVALENTE EN METROS ES”,MET
CASE(4)
PRINT*,”EL EQUIVALENTE EN CENTIMETROS ES”,CENT
END SELECT
END PROGRAM CONVER

36.-Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobara si su


promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario

PROGRAM NOTAS
REAL::NOTA, PROMEDIO
PRINT*,"INGRESE LA PRIMERA NOTA"
READ*,"PRIMERA"
PRINT*,"INGRESE LA SEGUNDA NOTA"
READ*,"SEGUNDA"
PRINT*,"INGRESE LA TERCERA NOTA"
READ*,TERCERA
PROMEDIO=(PRIMERA+SEGUNDA+TERCERA)/3
IF(NOTA>=70) THEN
PRINT*,"ESTA APROBADO"
END IF
IF (NOTA<70) THEN
PRINT*,"ESTA DESAPROBADO"
END IF
END PROGRAM NOTAS

37.-Evalúe el siguiente menú MENU “A” Calcular el promedio de 5 calificaciones. “B”


Calcular el área de un circulo. “C” Calcular el número mayor de tres valores.

PROGRAM PROMEDIO
REAL:: NUM1, NUM2 , NUM3, NUM4, NUM5
REAL::PROM
PRINT*, "INGRESE VALOR DE NUM1"
READ*, NUM1
PRINT*, "INGRESE VALOR DE NUM2"
READ*, NUM2
PRINT*, "INGRESE VALOR DE NUM3"
READ*, NUM3
PRINT*, "INGRESE VALOR DE NUM4"
READ*, NUM4
PRINT*, "INGRESE VALOR DE NUM5"
READ*, NUM5
PROM=(NUM1+NUM2+NUM3+NUM4+NUM4)/5
PRINT*,"EL PROMEDIO DE LOS 5 NUMEROS ES ",PROM
END PROGRAM PROMEDIO

PROGRAM AREA_CIRCULO
REAL:: RADIO
REAL:: A
REAL,PARAMETER::PI=3.1416
PRINT*, "INGRESE EL VALOR DEL RADIO"
READ*, RADIO
A=PI*(RADIO**2)
PRINT*,"EL AREA EL CIRCULO ES", AEND PROGRAM AREA_CIRCULO

PROGRAM VALORES
REAL::NUM1,NUM2,NUM3
PRINT*,"INGRESE VALOR DE NUM1"
READ*,NUM1
PRINT*,"INGRESE VALOR DE NUM2"
READ*,NUM2
PRINT*,"INGRESE VALOR DE NUM3"
READ*,NUM3
IF(NUM1==NUM2) THEN
PRINT*,"LAS VARIABLES 1 Y 2 SON IGUALES"
ELSE
IF(NUM2==NUM3) THEN
PRINT*,"LAS VARIABLES 2 Y 3 SON IGUALES"
ELSE
IF (NUM3==NUM2) THEN
PRINT*,"LAS VARIABLES 3 Y 2 SON IGUALES"
ELSE
IF(NUM1>NUM2.AND.NUM1>NUM3) THEN
PRINT*,"LA VARIABLE 1 ES LA MAYOR"
ELSE
IF(NUM2>NUM1.AND.NUM2>NUM3) THEN
PRINT*,"LA VARIABLE 2 ES LA MAYOR"
ELSE
IF(NUM3>NUM2.AND.NUM3>NUM1) THEN
PRINT*,"LA VARIABLE 3 ES LA MAYOR"
END IF
END IF
END IF
END IF
END IF
END IF
END PROGRAM VALORES

38.-Diseñe un programa que lea los coeficientes de una ecuación de segundo grado
ax2+bx+c=0 y calcule sus dos soluciones. Se supone que la ecuación tiene soluciones
reales.

PROGRAM EQ
REAL::A,B,C
REAL::P,S
PRINT*,"INGRESE EL VALOR DE A"
READ*,A
PRINT*,"INGRESE EL VALOR DE B"
READ*,B
PRINT*,"INGRESE EL VALOR DE C"
READ*,C
P=(-B+SQRT(B*B-4*A*C))/2*A
S=(-B-SQRT(B*B-4*A*C))/2*A
PRINT*,"LAS SOLUCIONES DE LA ECUACION SON", P
END PROGRAM EQ

39.-Diseñe un programa que lea los coeficientes de un sistema de dos ecuaciones


lineales con dos incógnitas y calcule su solución. Se supone que el sistema de
ecuaciones es compatible determinado.
ax + by = c
dx + ey = f

PROGRAM ECUACIONES
REAL::A,B,C,D
REAL::E,F,X,Y
C=A*X + B*Y
F=D*X + E*Y
PRINT*,"INGRESE EL VALOR DE A"
READ*,A
PRINT*,"INGRESE EL VALOR DE B"
READ*,B
PRINT*,"INGRESE EL VALOR DE C"
READ*,C
PRINT*,"INGRESE EL VALOR DE D"
READ*,D
X=(C*E-F*B)/(A*E-D*B)
Y=(A*F-D*C)/(A*E-D*B)
PRINT*,"LAS SOLUCIONES SON", X , Y
END PROGRAM ECUACIONES

40.- Implemente un programa que, dados los tres vértices de un triángulo, calcule el
área del mismo. Puede aplicar la siguiente fórmula: 𝑆 = √𝑇(𝑇 − 𝑆1 )(𝑇 − 𝑆2 )(𝑇 − 𝑆3 )
donde S1, S2 y S3 son las longitudes de los tres lados del triángulo y T es la mitad de su
perímetro.

PROGRAM AREA_TRIANGULO
REAL::S,S1,S2,S3,T
PRINT*,"EL VALOR DEL LADO S1 DEL TRIANGULO ES"
READ*, S1
PRINT*,"EL VALOR DEL LADO S2 DEL TRIANGULO ES"
READ*, S2
PRINT*,"EL VALOR DEL LADO S3 DEL TRIANGULO ES"
READ*, S3
T=(S1+S2+S3)/2
S= SQRT(T*(T-S1)*(T-S2)*(T-S3))
PRINT*,"EL AREA DEL TRIANGULO ES ", S
END PROGRAM AREA_TRIANGULO

41.- Dada una medida de tiempo expresada en horas, minutos y segundos con valores
arbitrarios, elabore un programa que transforme dicha medida en una expresión
correcta. Por ejemplo, dada la medida 3h 118m 195s, el programa deberá obtener
como resultado 5h 1m 15s

PROGRAM CONVERSION
INTEGER::H,M,S,A,B,X,Y,H1,M1,S1
PRINT*,"INGRESE LA HORA,MINUTOS Y SEGUNDOS"
READ*,H,M,S
IF(S>=60) THEN
A=MOD(S,60)
X=INT(S/60)
END IF
S1=A
M1=M+X
IF(M1>=60) THEN
B=MOD(M1,60)
Y=INT(M1/60)
END IF
M1=B
H1=H+Y
PRINT 10,"LA HORA CORRECTA SERIA ",H1," HORAS ",M1," MINUTOS ",S1," SEGUNDOS "
10 FORMAT(1X,A30,2X,I2,1X,A7,2X,I4,1X,A8,2X,I4,1X,A8)
END PROGRAM CONVERSION

42.- Programa que sume y muestre por pantalla todos los números naturales del 1
hasta el 5, ambos incluidos. Lo mismo pero de 1 a 50, lo mismo pero de 1 a 500.

PROGRAM NUMEROS
INTEGER::I,J
DO I=1,5,1
J=I
PRINT*,"ESCRIBE LOS NUMEROS DEL 1 HASTA EL 5",J
END DO
END PROGRAM NUMEROS

PROGRAM NUMEROS
INTEGER::I,J
DO I=1,50,1
J=I
PRINT*,"ESCRIBE LOS NUMEROS DEL 1 HASTA EL 5",JEND DO
END PROGRAM NUMEROS

PROGRAM NUMEROS
INTEGER::I,J
DO I=1,500,1
J=I
PRINT*,"ESCRIBE LOS NUMEROS DEL 1 HASTA EL 5",J
END DO
END PROGRAM NUMEROS

43.-Programa que sume el número 5 y sus múltiplos hasta el 100 inclusive y muestre el
resultado por pantalla.

PROGRAM NUMEROS
INTEGER::I,J
DO I=0,100,5
J=I
PRINT*,"ESCRIBE LOS NUMEROS DEL 1 HASTA EL 5",J
END DO
END PROGRAM NUMEROS
46.-Programa que lea un número natural y diga si es o no es triangular. A saber: un
numero N es triangular si, y solamente si, es la suma de los primeros N números
naturales, para algún valor de M. Ejemplo: 6 es triangular pues 6=1 + 2 +3. Una forma
de obtener los números triangulares es aplicando la formula n(n+1)/2, nEN.

PROGRAM NUM_TRI
REAL::N
REAL::T
PRINT*,"DAR VALOR A N"
READ*,N
IF(N>=0)THEN
T=(N*(N+1))/2
PRINT*,"EL NUMERO TRIANGULAR SERA",T
ELSE
IF(N<0)THEN
PRINT*,"ERROR"
END IF
END IF
END PROGRAM NUM_TRI

48.-Programa que muestre la serie de Fibonacci 0,1,1,2,3,5,8,13,21,…. Los primeros


términos son 0 y 1, los siguiente suma de los dos anteriores.

PROGRAM EJERC48
INTEGER:: A0, A1, A, TERM, N
PRINT*,"INGRES CUANTOS TERMINOS DESEA EN LA SERIE DE FIBONACCI"
READ*, TERM
A0=0
A1=1
WRITE(*,*) A0
WRITE(*,*) A1
DO N=3,TERM,1
A=A0+A1
WRITE(*,*) A
A0=A1
A1=A
END DO
END PROGRAM EJERC48

54.- Programa que pida un numero por teclado y diga si es primo o no mostrando todos
sus divisores.
PROGRAM PRIMOS
IMPLICIT NONE
INTEGER N, I, PRIM
PRINT*,"INTRODUCE UN NUMERO"
READ*, N
IF (N==2) THEN
GO TO 100
END IF
DO I=2,((N/2)+1),1
PRIM=MOD(N,I)
IF(PRIM==0) THEN
PRINT*,"SU NUMERO NO ES PRIMO"
GO TO 110
END IF
PRINT*,"LOS DIVISORES SON"
I=N
DO WHILE(I>0)
IF(MOD(N,I)==0) PRINT*,I
I=I-1
END DO
END DO
100 PRINT*,"SU NUMERO ES PRIMO"
110 READ(*,*)
STOP
END PROGRAM PRIMOS

S-ar putea să vă placă și