Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

“Año de la unidad, la paz y el desarrollo”

UNIVERSIDAD NACIONAL MAYOR DE SAN


MARCOS
UNIVERSIDAD DEL PERÚ, DECANA DE AMÉRICA
FACULTAD DE CIENCIAS
FÍSICAS

ESCUELA PROFESIONAL DE INGENIERÍA MECÁNICA


DE FLUIDOS

 CURSO: Lenguaje de Programación


 PROFESOR: William Wilfredo Chauca Nolasco
 ESTUDIANTE: Santivañez Sachahuaman Kevin Jesús

Lima-Perú

2023
4.1 Un profesor tiene un salario inicial de $1500, y recibe un incremento de 10 % anual
durante 6 años. ¿Cuál es su salario al cabo de 6 años? ¿Qué salario ha recibido en cada
uno de los 6 años? Realice el programa.

DO DO WHILE

PROGRAM SALARIO_A PROGRAM SALARIO_A


INTEGER:: I INTEGER:: I
REAL:: SALARIO REAL:: SALARIO

SALARIO = 1500 SALARIO = 1500

DO I = 1,6,1 I=1

SALARIO = (SALARIO*1.1) DO WHILE (I<=6)

PRINT*,"EL SALARIO EN ",I," AÑOS ES $ ",SALARIO SALARIO = (SALARIO*1.1)

END DO PRINT*,"EL SALARIO EN ",I," AÑOS ES $ ",SALARIO

PRINT*,"EL SALARIO EN 6 AÑOS ES $ ",SALARIO I= I+1

END DO
END PROGRAM SALARIO_A
PRINT*,"EL SALARIO EN 6 AÑOS ES $ ",SALARIO

END PROGRAM SALARIO_A


4.2 “El náufrago satisfecho” ofrece hamburguesas sencillas (S), dobles (D) y triples (T),
las cuales tienen un costo de $20, $25 y $28 respectivamente. La empresa acepta tarjetas
de crédito con un cargo de 5 % sobre la compra. Suponiendo que los clientes adquieren N
hamburguesas, las cuales pueden ser de diferente tipo, realice un programa para
determinar cuánto deben pagar.

DO DO WHILE

PROGRAM HAMBURGUESAS PROGRAM HAMBURGUESAS

IMPLICIT NONE IMPLICIT NONE


INTEGER :: N , I INTEGER:: N,TIPO,TIPO_PAGO
REAL:: PRECIO, TOTAL REAL:: TOTAL, CARGO
CHARACTER(2):: TIPO, TARJETA
PRINT*, "INGRESA EL NUMERO DE HAMBURGUESAS"
PRINT*,"INGRESE EL NUMERO DE HAMBURGUESAS:" READ*, N
READ*, N
DO WHILE(TIPO<1.OR.TIPO>3)
DO I=1,N PRINT*,"INGRESA EL TIPO DE HAMBURGUESA"
PRINT*, "QUE TIPO DE HAMBURGUESA QUIERE: SENCILLAS PRINT*,"1 = SENCILLA $20"
(S), DOBLES (D) Y TRIPLES (T)." PRINT*,"2 = DOBLE $25"
READ*, TIPO PRINT*,"3 = TRIPLE $28"
IF (TIPO=="S") THEN READ*, TIPO
PRECIO = 20 IF(TIPO==1)THEN
ELSEIF (TIPO=="D") THEN TOTAL=N*20
PRECIO = 25 ELSEIF(TIPO==2)THEN
ELSEIF (TIPO=="T") THEN TOTAL=0*25
PRECIO= 28 ELSEIF(TIPO==3)THEN
END IF TOTAL=0*28
PRECIO= PRECIO + PRECIO ELSE
END DO PRINT*,"INGRESA UN TIPO DE HAMBURGUESA VALIDO"
END IF
PRINT*, "DESEA PAGAR CON TARJETA" END DO
READ*, TARJETA
DO WHILE(TIPO_PAGO<1.OR.TIPO_PAGO>2)
IF (TARJETA=="SI") THEN PRINT*,"INGRESA EL METODO DE PAGO",TIPO_PAGO
TOTAL= 5 + PRECIO PRINT*,"1 = OTRO MEDIO DE PAGO"
PRINT*,"2 = TARJETA DE CREDITO"
ELSEIF (TARJETA=="NO")THEN READ*, TIPO_PAGO
TOTAL= PRECIO IF(TIPO_PAGO==1)THEN
PRINT*,"EL TOTAL A PAGAR ES: $",TOTAL
END IF ELSE IF(TIPO_PAGO==2)THEN
PRINT*, "EL COSTO TOTAL ES ",TOTAL CARGO=TOTAL*0.05
PRINT*,"EL TOTAL A PAGAR ES: $",TOTAL+CARGO
END PROGRAMA HAMBURGUESAS PRINT*,"EL CARGO APLICADO ES: $",CARGO
ELSE
PRINT*,"INGRESE UN TIPO DE PAGO CORRECTO"
END IF

END DO
END PROGRAM HAMBURGUESAS
4.3 Se requiere un programa para determinar, de N cantidades, cuántas son cero, cuántas
son menores a cero, y cuántas son mayores a cero.

DO DO WHILE

PROGRAM CANTIDADES PROGRAM CANTIDADES


IMPLICIT NONE IMPLICIT NONE
INTEGER::CERO,MEN_CERO,MAY_CERO INTEGER::CERO,MEN_CERO,MAY_CERO
INTEGER::I,N,CANT INTEGER::I,N,CANT
CERO = 0 CERO = 0
MEN_CERO = 0 MEN_CERO = 0
MAY_CERO = 0 MAY_CERO = 0
I=0 I=1
N=0 N=0
PRINT*,"INGRESA EL VALOR DE N:" PRINT*,"DIGITE LA CANTIDAD DE N:"
READ*, N READ*, N
DO I=-1,N DO WHILE (I<N)
PRINT*, "DIGITE UN NUMERO ENTERO:"
PRINT*, "DIGITE UN NUMERO ENTERO:" READ*, CANT
READ*, CANT IF (CANT == 0) THEN
IF (CANT == 0) THEN CERO = CERO+1
CERO = CERO+1 END IF
END IF IF (CANT < 0) THEN
IF (CANT < 0) THEN MEN_CERO = MEN_CERO+1
MEN_CERO = MEN_CERO+1 END IF
END IF IF (CANT > 0) THEN
IF (CANT > 0) THEN MAY_CERO = MAY_CERO+1
MAY_CERO = MAY_CERO+1 END IF
END IF I=I+1
END DO END DO
PRINT*, "VALOR DE CANTIDADES CERO: ", CERO PRINT*, "VALOR IGUAL A CERO: ", CERO
PRINT*, "VALOR DE MENORES A CERO: ", PRINT*, "VALOR MENOR A CERO: ",
MEN_CERO MEN_CERO
PRINT*, "VALOR DE MAYORES A CERO: ", PRINT*, "VALOR MAYOR A CERO: ",
MAY_CERO MAY_CERO
END PROGRAM CANTIDADES END PROGRAM CANTIDADES
4.4 Una compañía fabrica focos de colores (verdes, blancos y rojos). Se desea
contabilizar, de un lote de N focos, el número de focos de cada color que hay en
existencia. Desarrolle un programa para determinar esto.

DO

PROGRAM FOCOS

IMPLICIT NONE

INTEGER:: FOCO, VERDE, BLANCO , ROJO


INTEGER:: N, I

PRINT*, "INGRESE LA CANTIDAD DE FOCOS QUE HAY"


READ*, N

DO I=1,N

PRINT*,"INGRESE EL COLOR DEL FOCO: 1)VERDE 2)BLANCO 3)ROJO "

READ*, FOCO

IF (FOCO==1) THEN

VERDE=VERDE+1

ELSEIF (FOCO==2) THEN

BLANCO=BLANCO+1

ELSEIF (FOCO==3) THEN


ROJO=ROJO+1

END IF

END DO

PRINT*, "EL NUMERO DE FOCOS VERDES ES", VERDE

PRINT*, "EL NUMERO DE FOCOS BLANCOS ES", BLANCO

PRINT*, "EL NUMERO DE FOCOS ROJOS ES", ROJO

END PROGRAM FOCOS


DO WHILE

PROGRAM FOCOS

IMPLICIT NONE

INTEGER :: N, I, VERDE, BLANCO, ROJO

CHARACTER(LEN=10) :: COLOR

VERDE = 0
BLANCO = 0
ROJO = 0

PRINT*, "INGRESE LA CANTIDAD DE FOCOS QUE HAY"


READ*, N
I=1

DO WHILE (I<=N)

PRINT*,"INGRESE EL COLOR DEL FOCO: VERDE O BLANCO O ROJO "


READ*, COLOR
IF (COLOR == "VERDE") THEN
VERDE = VERDE + 1
ELSE IF (COLOR == "BLANCO") THEN
BLANCO = BLANCO + 1
ELSE IF (COLOR == "ROJO") THEN
ROJO = ROJO + 1
END IF
I=I+1
END DO

PRINT*, "EL NUMERO DE FOCOS VERDES ES", VERDE

PRINT*, "EL NUMERO DE FOCOS BLANCOS ES", BLANCO

PRINT*, "EL NUMERO DE FOCOS ROJOS ES", ROJO

END PROGRAM FOCOS


4.5 Se requiere un programa para determinar cuánto ahorrará en pesos una persona
diariamente, y en un año, si ahorra 3¢ el primero de enero, 9¢ el dos de enero, 27¢ el 3
de enero y así sucesivamente todo el año.

DO

PROGRAM AHORRANDO

INTEGER::I
REAL::AHORRO

AHORRO=0

DO I=1,15,1

AHORRO=(3**I)

PRINT*,"EL AHORRO EN EL DIA ",I," DEL MES ES $",AHORRO

END DO

END PROGRAM AHORRANDO


DO WHILE

PROGRAM AHORRANDO

INTEGER::I
REAL::AHORRO

I=1

DO WHILE (I<=15)

AHORRO =(3**I)

PRINT*,"EL AHORRO EN EL DIA ",I," DEL MES ES $",AHORRO

I=I+1

END DO

END PROGRAM AHORRANDO


4.6 Realice el programa para determinar cuánto pagará una persona que adquiere N
artículos, los cuales están de promoción. Considere que si su precio es mayor o igual a
$200 se le aplica un descuento de 15%, y si su precio es mayor a $100 pero menor a $200,
el descuento es de 12%; de lo contrario, sólo se le aplica 10%. Se debe saber cuál es el
costo y el descuento que tendrá cada uno de los artículos y finalmente cuánto se pagará
por todos los artículos obtenidos.

DO DO WHILE

PROGRAM ARTICULOS PROGRAM ARTICULOS

REAL::PRECIO,DSC REAL::PRECIO,DSC
INTEGER::N,I INTEGER::N,I

PT=0 PT=0
PRINT*,"INGRESE EL VALOR DE N:" PRINT*,"INGRESE EL VALOR DE N:"
READ*, N; READ*, N;
DO WHILE (I<N) DO I=1,N
PRINT*,"" PRINT*,""
PRINT*,"INGRESA EL VALOR DE PRECIO:" PRINT*,"INGRESA EL VALOR DE PRECIO:"
READ*, PRECIO READ*, PRECIO
DSC=PRECIO*0.1 DSC=PRECIO*0.1
IF (PRECIO>=200) THEN IF (PRECIO>=200) THEN
DSC = PRECIO*0.15 DSC = PRECIO*0.15
END IF END IF
IF (PRECIO>100 .AND. PRECIO<200) THEN IF (PRECIO>100 .AND. PRECIO<200) THEN
DSC = PRECIO*0.12 DSC = PRECIO*0.12
END IF END IF

COSTO = PRECIO-DSC COSTO = PRECIO-DSC


PT = PT+COSTO PT = PT+COSTO

PRINT*, "VALOR DE COSTO: ", COSTO PRINT*, "VALOR DE COSTO: ", COSTO
PRINT*, "VALOR DE DESCUENTO: ", DSC PRINT*, "VALOR DE DESCUENTO: ", DSC
PRINT*,"" PRINT*,""
I=I+1 END DO
END DO PRINT*, "VALOR DE PAGO POR TODO: ", PT
PRINT*, "VALOR DE PAGO POR TODO: ", PT
END PROGRAM ARTICULOS
END PROGRAM ARTICULOS
4.7 Un cliente de un banco deposita equis cantidad de pesos cada mes en una cuenta de
ahorros. La cuenta percibe un interés fijo durante un año de 10 % anual. Realice un
programa para determinar el total de la inversión final de cada año en los próximos N
años.

DO WHILE
DO

PROGRAM BANCO_INVERSION PROGRAM BANCO_INVERSION

IMPLICIT NONE IMPLICIT NONE

INTEGER:: TIEMPO,I,T INTEGER:: TIEMPO,I


REAL:: S,INT,TOTAL,DEP REAL:: S,INT,TOTAL,DEP

PRINT*,"CUANTO TIEMPO AHORRASTE (EN PRINT*,"CUANTO TIEMPO


ANOS):" AHORRASTE (EN ANOS):"
READ*,TIEMPO READ*,TIEMPO

DEP=0 DEP=0
S=0 S=0
INT=0 INT=0

DO T=1,TIEMPO DO WHILE (TIEMPO>0)


DO I=1,12 DO I=1,12
PRINT*,"INGRESA DEPOSITO MENSUAL" PRINT*,"INGRESA DEPOSITO
READ*,DEP MENSUAL"
S=S+DEP READ*,DEP
END DO S=S+DEP
INT=INT+(S*0.10) END DO
TOTAL=S+INT INT=INT+(S*0.10)
PRINT*,"TU AHORRO EN ESTE TIEMPO ES: ",S," TOTAL=S+INT
SOLES" PRINT*,"TU AHORRO EN ESTE TIEMPO
PRINT*,"INTERES: ",INT," SOLES" ES: ",S," SOLES"
PRINT*,"AHORRO CON INTERESES: ",TOTAL," PRINT*,"INTERES: ",INT," SOLES"
SOLES" PRINT*,"AHORRO CON INTERESES:
END DO ",TOTAL," SOLES"
END PROGRAM BANCO_INVERSION TIEMPO=TIEMPO-1
END DO
END PROGRAM BANCO_INVERSION
4.8 Los directivos de equis escuela requieren determinar cuál es la edad promedio de cada
uno de los M salones y cuál es la edad promedio de toda la escuela. Realice un programa
para determinar estos promedios.
DO WHILE
DO
PROGRAM PROMEDIOE

PROGRAM PROMEDIOE_ IMPLICIT NONE

IMPLICIT NONE INTEGER :: N, I, J,M, EDAD, EDADT


REAL :: PROMEDIO, PROMEDIOT
INTEGER :: N, I, J, EDAD, EDADT
REAL :: PROMEDIO, PROMEDIOT PRINT*, "INGRESE EL NUMERO DE SALONES:"
READ*, N
PRINT*, "INGRESE EL NUMERO DE SALONES:"
READ*, N PROMEDIOT = 0.0
EDADT = 0
PROMEDIOT = 0.0
EDADT = 0 I=1

DO I = 1, N DO WHILE (I <=N)
PRINT*, "INGRESE EL NUMERO DE ESTUDIANTES EN EL PRINT*, "INGRESE EL NUMERO DE ESTUDIANTES EN EL
SALON", I, ":" SALON", I, ":"
READ*, J READ*, J

PROMEDIO = 0.0 PROMEDIO = 0.0

DO J = 1, J M=1
PRINT*, "INGRESE LA EDAD DEL ESTUDIANTE:"
READ*, EDAD DO WHILE (M <= J)
PRINT*, "INGRESE LA EDAD DEL ESTUDIANTE:"
PROMEDIO = PROMEDIO + EDAD READ*, EDAD
EDADT = EDADT + EDAD
PROMEDIO = PROMEDIO + EDAD
EDADT = EDADT + EDAD
END DO
M=M+1
PROMEDIO = PROMEDIO / REAL(J)
PROMEDIOT = PROMEDIOT + PROMEDIO END DO

PROMEDIO = PROMEDIO / REAL(J)


PROMEDIOT = PROMEDIOT + PROMEDIO
PRINT*, "EL PROMEDIO DE EDAD DEL SALON", I, " ES:",
PROMEDIO
END DO
PRINT*, "EL PROMEDIO DE EDAD DEL SALON", I, " ES:",
PROMEDIOT = PROMEDIOT / REAL(N) PROMEDIO
PRINT*, "EL PROMEDIO DE EDAD DE TODA LA ESCUELA
ES:", PROMEDIOT
I=I+1
END PROGRAM PROMEDIOE
END DO

PROMEDIOT = PROMEDIOT / REAL(N)


PRINT*, "EL PROMEDIO DE EDAD DE TODA LA ESCUELA
ES:", PROMEDIOT

END PROGRAM PROMEDIOE


4.9 Realice un programa para obtener una función exponencial, la cual está dada por:

DO DO WHILE

PROGRAM EULER PROGRAM EULER

IMPLICIT NONE IMPLICIT NONE

REAL :: N, I, FACT REAL :: N, I, FACT


REAL :: EXPONENTE ,A REAL :: EXPONENTE ,A
REAL:: RSPTA, DIV REAL:: RSPTA, DIV

PRINT*, "INGRESE VARIABLE REPETICION"


PRINT*, "INGRESE VARIABLE REPETICION" READ*, A
READ*, A
PRINT*, "INGRESE UN NUMERO ENTERO:" PRINT*, "INGRESE UN NUMERO ENTERO:"
READ*, N READ*, N
FACT = 1
FACT = 1
DO I = 1, A I=1
EXPONENTE = N**I
FACT = FACT * I DO WHILE (I <= A)
DIV= (EXPONENTE/FACT) + DIV
END DO EXPONENTE = N**I
RSPTA= 1 + DIV
PRINT*, "EL FACTORIAL DE", N, " ES", RSPTA FACT = FACT * I
DIV= (EXPONENTE/FACT) + DIV
I=I+1
END PROGRAM EULER
END DO

RSPTA= 1 + DIV

PRINT*, "EL FACTORIAL DE", N, " ES", RSPTA

END PROGRAM EULER


4.10 Se desea saber el total de una caja registradora de un almacén, se conoce el número de
billetes y monedas, así como su valor. Realice un programa para determinar el total.

DO WHILE
DO

PROGRAM CAJA PROGRAM CAJA

INTEGER :: N_BILLETES, N_MONEDAS, I INTEGER :: N_BILLETES, N_MONEDAS, I


REAL :: V_BILLETE, V_MONEDA, TOTAL REAL :: V_BILLETE, V_MONEDA, TOTAL

PRINT*, "INGRESE EL NÚMERO DE BILLETES: " PRINT*, "INGRESE EL NÚMERO DE BILLETES: "
READ*, N_BILLETES READ*, N_BILLETES

PRINT*, "INGRESE EL VALOR DE CADA BILLETE: " PRINT*, "INGRESE EL VALOR DE CADA BILLETE: "
READ*, V_BILLETE READ*, V_BILLETE

PRINT*, "INGRESE EL NÚMERO DE MONEDAS: " PRINT*, "INGRESE EL NÚMERO DE MONEDAS: "
READ*, N_MONEDA READ*, N_MONEDA

PRINT*, "INGRESE EL VALOR DE CADA MONEDA: " PRINT*, "INGRESE EL VALOR DE CADA MONEDA: "
READ*, V_MONEDA READ*, V_MONEDA

TOTAL = 0.0 I=1


TOTAL = 0.0
DO I = 1, N_BILLETES
TOTAL = TOTAL + V_BILLETE DO WHILE(I <= N_BILLETES)
END DO TOTAL = TOTAL + V_BILLETE
I=I+1
DO I = 1, N_MONEDAS END DO
TOTAL = TOTAL + V_MONEDA
END DO I=1
PRINT *, "EL TOTAL EN LA CAJA REGISTRADORA DO WHILE(I <= N_MONEDAS)
ES: $", TOTAL TOTAL = TOTAL + V_MONEDA
I=I+1
END PROGRAM CAJA END DO

PRINT *, "EL TOTAL EN LA CAJA REGISTRADORA


ES: $", TOTAL

END PROGRAM CAJA


4.11 Un vendedor ha realizado N ventas y desea saber cuántas fueron por 10,000 o menos,
cuántas fueron por más de 10,000 pero por menos de 20,000, y cuánto fue el monto de las
ventas de cada una y el monto global. Realice un programa para determinar los totales.

DO DO WHILE

PROGRAM VENTAS PROGRAM VENTAS


INTEGER::V,Q,Y,M INTEGER::V,Q,I,M
REAL::T,T1,T2,T3 REAL::T,T1,T2,T3
PRINT*,"INGRESE EL NUMERO DE VENTAS" PRINT*,"INGRESE EL NUMERO DE VENTAS"
READ*,V READ*,V
Q=0 Q=0
I=0 I=0
M=0 M=0
T=0 T=0
T1=0 T1=0
T2=0 T2=0
T3=0 T3=0
DO I=1,V DO WHILE(V>0)
PRINT*,"DIGITE EL MONTO DE LA VENTA" PRINT*,"DIGITE EL MONTO DE LA VENTA"
READ*,VENT READ*,VENT
IF (VENT<=10000) THEN IF (VENT<=10000) THEN
Q = Q+1 Q = Q+1
T1=T1+VENT T1=T1+VENT
ELSE IF (VENT<20000) THEN ELSE IF (VENT<20000) THEN
I=I+1 I=I+1
T2=T2+VENT T2=T2+VENT
ELSE ELSE
M=M+1 M=M+1
T3=T3+VENT T3=T3+VENT
END IF END IF
T=T+VENT T=T+VENT
END DO V=V-1
PRINT*,"" END DO
PRINT*, "VENTAS MENORES A 10,000: ",Q PRINT*,""
PRINT*, "TOTAL DE VENTAS MENORES A 10,000 PRINT*, "VENTAS MENORES A 10,000: ",Q
ES: ",T1," SOLES" PRINT*, "TOTAL DE VENTAS MENORES A
PRINT*,"" 10,000 ES: ",T1," SOLES"
PRINT*, "VENTAS MAYORES A 10,000 Y PRINT*,""
MENORES QUE 20,000: ",Y PRINT*, "VENTAS MAYORES A 10,000 Y
PRINT*, "TOTAL DE VENTAS ENTRE 10,000 Y MENORES QUE 20,000: ",Y
20,000 ES: ",T2," SOLES" PRINT*, "TOTAL DE VENTAS ENTRE 10,000 Y
PRINT*,"" 20,000 ES: ",T2," SOLES"
PRINT*, "VENTAS MAYORES A 20,000: ",M PRINT*,""
PRINT*, "TOTAL DE VENTAS MAYORES 20,000 PRINT*, "VENTAS MAYORES A 20,000: ",M
ES: ",T3," SOLES" PRINT*, "TOTAL DE VENTAS MAYORES
PRINT*,"" 20,000 ES: ",T3," SOLES"
PRINT*, "MONTO TOTAL: ",T," SOLES" PRINT*,""
END PROGRAM VENTAS PRINT*, "MONTO TOTAL: ",T," SOLES"
END PROGRAM VENTAS
4.12 Realice un programa para leer las calificaciones de N alumnos y determine el número
de aprobados y reprobados.

DO DO WHILE

PROGRAM CALIFICACIONES PROGRAM CALIFICACIONES


IMPLICIT NONE IMPLICIT NONE
INTEGER::N , I, NOTA INTEGER::N , I, NOTA
INTEGER::APROBADO,DESAPROBADO INTEGER::APROBADO,DESAPROBADO

PRINT*, "INGRESE LA CANTIDAD DE ALUMNOS" PRINT*, "INGRESE LA CANTIDAD DE ALUMNOS"


READ*, N READ*, N
APROBADO=0 APROBADO=0
DESAPROBADO=0 DESAPROBADO=0
DO I=1,N I=1
PRINT*,"INGRESE LA NOTA DEL ALUMNO",I DO WHILE (I<=N)
READ*, NOTA
PRINT*,"INGRESE LA NOTA DEL ALUMNO",I
IF (NOTA>10) THEN READ*, NOTA
APROBADO=APROBADO+1 IF (NOTA>10) THEN
ELSE APROBADO=APROBADO+1
ELSE
DESAPROBADO=DESAPROBADO+1
ENDIF DESAPROBADO=DESAPROBADO+1

ENDIF
END DO
I=I+1
PRINT*,"LA CANTIDAD DE ALUMNOS APROBADOS END DO
ES: ", APROBADO

PRINT*,"LA CANTIDAD DE ALUMNOS PRINT*,"LA CANTIDAD DE ALUMNOS APROBADOS


DESAPROBADOS ES: ", DESAPROBADO ES: ", APROBADO

PRINT*,"LA CANTIDAD DE ALUMNOS


END PROGRAM CALIFICACIONES DESAPROBADOS ES: ", DESAPROBADO

END PROGRAM CALIFICACIONES


4.13 Realice un programa que determine el sueldo semanal de N trabajadores considerando
que se les descuenta 5% de su sueldo si ganan entre 0 y 150 pesos. Se les descuenta 7% si
ganan más de 150 pero menos de 300, y 9% si ganan más de 300 pero menos de 450. Los
datos son horas trabajadas, sueldo por hora y nombre de cada trabajador.

PROGRAM SUELDOSE

IMPLICIT NONE

INTEGER:: N, HORAS,I
REAL:: SUELDOH,SUELDOSE,SUELDOFN
CHARACTER(10):: NOMBRE

PRINT*, "INGRESE EL NUMERO DE TRABAJADORES"


READ*, N

DO I=1,N

PRINT*, "INGRESE EL NOMBRE DEL TRABAJADOR"


READ*, NOMBRE

PRINT*, "INGRESE LAS HORAS TRABAJADAS "


READ*, HORAS
DO
PRINT*, "INGRESE CUANTO GANA POR HORA"
READ*, SUELDOH

SUELDOSE=SUELDOH*HORAS

IF ( SUELDOSE >0) THEN

SUELDOFN= SUELDOSE*0.95
ELSEIF (SUELDOSE >=150) THEN

SUELDOFN= SUELDOSE*0.93

ELSEIF (SUELDOSE >=300) THEN

SUELDOFN= SUELDOSE*0.91

ELSEIF (450>SUELDOSE) THEN

SUELDOFN= SUELDOSE*1

ENDIF

PRINT*, "EL SUELDO SEMANAL DE ", NOMBRE, " ES


", SUELDOFN

END DO

END PROGRAM SUELDOSE


4.14 Realice un programa donde, dado un grupo de números naturales positivos, calcule e
imprima el cubo de estos números.

DO DO WHILE

PROGRAM CUBO_NUMEROS
PROGRAM CUBO_NUMEROS
INTEGER :: N, I
REAL :: NUMERO, CUBO INTEGER :: N, I
REAL :: NUMERO, CUBO
PRINT*, "INGRESE LA CANTIDAD DE NUMEROS A
CALCULAR: " PRINT*, "INGRESE LA CANTIDAD DE NUMEROS A
READ*, N CALCULAR: "
READ*, N
DO I = 1,N
I=1
PRINT*,"INGRESE EL NUMERO ", I
READ*, NUMERO DO WHILE (I<=N)

CUBO = NUMERO ** 3 PRINT*,"INGRESE EL NUMERO ", I


READ*, NUMERO
PRINT*, "EL CUBO DEL NUMERO ", NUMERO, " ES
", CUBO, "." CUBO = NUMERO ** 3
I= I + 1
END DO
PRINT*, "EL CUBO DEL NUMERO ", NUMERO, " ES
END PROGRAM CUBO_NUMEROS ", CUBO, "."

END DO

END PROGRAM CUBO_NUMEROS


4.15 Realice un programa para obtener la tabla de multiplicar de un entero K comenzando
desde el 1.

DO WHILE

DO

PROGRAM MULTI

IMPLICIT NONE

INTEGER::B,X,M,PRODUCTO
PROGRAM MULTI
PRINT*,"DIGITA EL NUMERO"
INTEGER::M,I READ*,M
PRINT*,"DIGITE NUMERO PARA GENERAR TABLA" PRINT*,"DIGITA LA LONGITUD DE LA
READ*,M TABLA"
READ*,X
DO I=10,1,-1 B=1
PRINT*,M," X ",I," = ",M*I DO WHILE (B<=X)
END DO PRODUCTO=M*B
PRINT*,M," X ",B," = ",PRODUCTO
END PROGRAM MULTI B=B+1
END DO

END PROGRAM MULTI


4.16 En 1961, una persona vendió las tierras de su abuelo al gobierno por la cantidad de
$1500. Suponga que esta persona ha colocado el dinero en una cuenta de ahorros que
paga 15% anual. ¿Cuánto vale ahora su inversión? 𝑷(𝟏 + 𝒊)𝒏 . Realice un programa
para obtener este valor.

DO WHILE
DO

PROGRAM INVERSION_TIERRAS PROGRAM INVERSION_TIERRAS

INTEGER:: TIEMPO,A
INTEGER :: TIEMPO, A REAL:: INV
REAL :: INV

PRINT*, "DIGITA EL AÑO ACTUAL" PRINT*, "DIGITA EL AÑO ACTUAL"


READ*, A READ*,A
TIEMPO = A - 1961
INV = 1500
TIEMPO = A - 1961
INV = 1500 DO WHILE (TIEMPO > 0)
DO TIEMPO = A - 1961, 1, -1 INV = INV + (INV * .15)
INV = INV + (INV * 0.15) PRINT*, "LA INVERSION EN
",TIEMPO," ES ", INV," SOLES"
PRINT*, "LA INVERSION EN ",TIEMPO," ES
TIEMPO = TIEMPO - 1
", INV, " SOLES" END DO
END DO
END PROGRAM INVERSION_TIERRAS
END PROGRAM INVERSION_TIERRAS
4.17 El gerente de una compañía automotriz desea determinar el impuesto que va a
pagar por cada uno de los automóviles que posee, además del total que va a pagar por
cada categoría y por todos los vehículos, basándose en la siguiente clasificación:
Los vehículos con clave 1 pagan 10% de su valor.
Los vehículos con clave 2 pagan 7% de su valor.
Los vehículos con clave 3 pagan 5% de su valor.
Realice un programa para obtener la información. Los datos son la clave y costo de cada
uno.
PROGRAM AUTOMOVILES
IMPLICIT NONE

INTEGER :: CLAVE, CANT_AUTOS, I


REAL :: COSTO, IMP
REAL :: T1, T2, T3, T_GRAL

T1 = 0
T2 = 0
T3 = 0
T_GRAL = 0

PRINT*, "INGRESE LA CANTIDAD DE AUTOS:"


READ*, CANT_AUTOS

DO I=1, CANT_AUTOS
PRINT*, "INGRESE LA CLAVE (1,2 O 3) Y EL COSTO DEL
AUTO NUMERO", I
READ*, CLAVE, COSTO
DO
IF (CLAVE==1) THEN
IMP = COSTO * 0.1
T1 = T1 + IMP

ELSEIF (CLAVE==2) THEN


IMP = COSTO * 0.07
T2 = T2 + IMP
ELSEIF (CLAVE==2) THEN
IMP = COSTO * 0.05
T3 = T3 + IMP
ELSE
PRINT*, 'CLAVE DE AUTO INCORRECTA'

CYCLE
END IF

T_GRAL = T_GRAL + IMP

PRINT*, "EL IMPUESTO DEL AUTO NUMERO ", I, "ES DE


$", IMP

END DO

PRINT*, "TOTAL IMPUESTO PARA CLAVE 1: $", T1


PRINT*, "TOTAL IMPUESTO PARA CLAVE 2: $", T2
PRINT*, "TOTAL IMPUESTO PARA CLAVE 3: $", T3
PRINT*, "TOTAL IMPUESTO PARA TODOS LOS AUTOS: $",
T_GRAL

END PROGRAM AUTOMOVILES


PROGRAM AUTOMOVILES

IMPLICIT NONE

INTEGER :: CLAVE, CANT_AUTOS, I


REAL :: COSTO, IMP
REAL :: T1, T2, T3, T_GRAL

T1 = 0
T2 = 0
T3 = 0
T_GRAL = 0

PRINT*, "INGRESE LA CANTIDAD DE AUTOS:"


READ*, CANT_AUTOS

I=1

DO WHILE(I<=CANT_AUTOS)

PRINT*, "INGRESE LA CLAVE (1,2 O 3) Y EL COSTO DEL


AUTO NUMERO", I
READ*, CLAVE, COSTO

IF (CLAVE==1) THEN
IMP= COSTO * 0.1
DO WHILE T1 = T1 + IMP

ELSEIF (CLAVE==2) THEN


IMP = COSTO * 0.07
T2 = T2 + IMP
ELSEIF (CLAVE==3) THEN
IMP = COSTO * 0.05
T3 = T3 + IMP
ELSE
PRINT*, "CLAVE DE AUTO INCORRECTA"

END IF

I=I+1

T_GRAL = T_GRAL + IMP

PRINT*, "EL IMPUESTO DEL AUTO NUMERO ", I, "ES DE


$", IMP

END DO

PRINT*, "TOTAL IMPUESTO PARA CLAVE 1: $", T1


PRINT*, "TOTAL IMPUESTO PARA CLAVE 2: $", T2
PRINT*, "TOTAL IMPUESTO PARA CLAVE 3: $", T3
PRINT*, "TOTAL IMPUESTO PARA TODOS LOS AUTOS: $",
T_GRAL

END PROGRAM AUTOS


4.18 Realice un programa para obtener el seno de un ángulo

DO

PROGRAM SENO

IMPLICIT NONE

REAL :: X, SEN, TERMINO, SIGNO


INTEGER :: N, I, J, FACT

PRINT*,"INGRESE EL ANGULO EN RADIANES"


READ*,X
PRINT*,"INGRESE EL NUMERO DE TERMINOS A UTILIZAR"
READ*,N
SEN = 0.0
SIGNO = 1.0
DO I = 0, N-1
FACT = 1
DO J = 1, 2*I+1
FACT = FACT * J
END DO
TERMINO = SIGNO * x**(2*I+1) / REAL(FACT)
SEN = SEN + TERMINO
SIGNO = -SIGNO
END DO
PRINT*,"EL SENO DE ", X, " ES ", SEN

END PROGRAM SENO


4.19 Realice un programa para determinar qué cantidad de dinero hay en un monedero,
considerando que se tienen monedas de diez, cinco y un peso, y billetes de diez, veinte y
cincuenta pesos.

DO WHILE

PROGRAM MONEDERO
REAL::CANT,TOTAL
CANT = 1
TOTAL = 0
DO WHILE (CANT /= 0)
PRINT*, "INGRESA UNA CANTIDAD"
PRINT*, "1 = $1"
PRINT*, "5 = $5"
PRINT*, "10 = $10"
PRINT*, "20 = $20"
PRINT*, "50 = $50"
PRINT*, "0 = SALIR"
READ*, CANT
IF (CANT /= 0) THEN
IF (CANT == 1) THEN
TOTAL = TOTAL + CANT
ELSE
IF (CANT == 5) THEN
TOTAL = TOTAL + CANT
ELSE
IF (CANT == 10) THEN
TOTAL = TOTAL + CANT
ELSE
IF (CANT == 20) THEN
TOTAL = TOTAL +
CANT
ELSE
IF (CANT == 50) THEN
TOTAL = TOTAL +
CANT
ELSE
PRINT*, "NO EXISTE”
END IF
END IF
END IF
END IF
END IF
END IF
END DO
PRINT*, "EL MONEDERO TIENE: ",TOTAL," SOLES"
END PROGRAM MONEDERO
4.20 El banco “Bandido de peluche” desea calcular para cada uno de sus N clientes su saldo
actual, su pago mínimo y su pago para no generar intereses. Además, quiere calcular el
monto de lo que ganó por concepto interés con los clientes morosos. Los datos que se
conocen de cada cliente son: saldo anterior, monto de las compras que realizó y pago que
depositó en el corte anterior. Para calcular el pago mínimo se considera 15% del saldo
actual, y el pago para no generar intereses corresponde a 85% del saldo actual,
considerando que el saldo actual debe incluir 12% de los intereses causados por no realizar
el pago mínimo y $200 de multa por el mismo motivo. Realice el programa.

DO

PROGRAM BANCO_BANDIDO PAGO_SIN_INTE = 0.85 * SALDO_ACT +


INTERESES_CAUSADOS + MULTA
IMPLICIT NONE
IF (SALDO_ACT < PAGO_MINI) THEN
! DECLARACIÓN DE VARIABLES GANANCIA_INTE = GANANCIA_INTE+
INTEGER :: N, I INTERESES_CAUSADOS + MULTA
REAL :: SALDO_AN, COMPRAS_REALIZADAS, PAGO_AN, END IF
SALDO_ACT, PAGO_MINI, PAGO_SIN_INTE,
INTERESES_CAUSADOS, MULTA, GANANCIA_INTE PRINT*, "………………………………………………"
CHARACTER(10) :: NOMBRE_DEL_CLIENTE PRINT*, "INFORMACIÓN DEL CLIENTE ",
NOMBRE_DEL_CLIENTE
PRINT*, "INGRESE LA CANTIDAD DE CLIENTES A PRINT*, "SALDO ANTERIOR: $", SALDO_AN
PROCESAR:" PRINT*, "COMPRAS REALIZADAS: $",
READ(*,*) N COMPRAS_REALIZADAS
PRINT*, "PAGO ANTERIOR: $", PAGO_AN
! PROCESAR INFORMACIÓN DE CADA CLIENTE PRINT*, "SALDO ACTUAL: $", SALDO_ACT
DO I = 1, N PRINT*, "PAGO MÍNIMO: $", PAGO_MINI
! PEDIR DATOS DEL CLIENTE PRINT*, "PAGO SIN GENERAR INTERESES: $",
PRINT*, "INGRESE EL NOMBRE DEL CLIENTE:" PAGO_SIN_INTE
READ(*,*) NOMBRE_DEL_CLIENTE PRINT*, "…………………………………………………"
PRINT*, "INGRESE EL SALDO ANTERIOR DEL CLIENTE ", END DO
NOMBRE_DEL _CLIENTE, ":"
READ(*,*) SALDO_AN PRINT*, "LA GANANCIA POR INTERESES CON CLIENTES
PRINT*, "INGRESE EL MONTO DE COMPRAS REALIZADAS MOROSOS ES DE $", GANANCIA_INTE
POR EL CLIENTE ", NOMBRE_DEL_CLIENTE, ":"
READ(*,*) COMPRAS_REALIZADAS END PROGRAM BANCO_BANDIDO
PRINT*, "INGRESE EL PAGO DEPOSITADO POR EL CLIENTE
", NOMBRE_DEL_CLIENTE, " EN EL CORTE ANTERIOR:"
READ(*,*) PAGO_AN

SALDO_ACT = SALDO_AN + COMPRAS_REALIZADAS -


PAGO_AN

PAGO_MINI= 0.15 * SALDO_ACT

INTERESES_CAUSADOS = 0.12 * SALDO_ACT


MULTA = 200.0

You might also like