Sunteți pe pagina 1din 10

Ing.

William Chauca Nolasco

LENGUAJE DE PROGRAMACION - TERCERA PRCTICA DOMICILIARIA


ELABORE PROGRAMAS EN FORTRAN,

1.- Elabore un programa que pida dos nmeros naturales y use una funcin lgica
para saber si ambos son cuadrones pares o no. A saber: dos nmeros son
cuadrones pares si al sumarlos y restarlos se obtienen cuadrados perfectos.
Ejemplo: 10 y 26 son cuadrones pares pues: 10+26 =36 (cuadrado perfecto) y 26-10
= 16 (cuadrado perfecto).

2.- Elabore un programa que lea por teclado una matriz 3x3 y calcula su determinante.
Utilizar la funcin siguiente para calcular adjuntos: (No es obligatorio puede usar otro
mtodo)
INTEGER FUNCTION adjto (a,b,c,d)
INTEGER, INTENT(IN):: a,b,c,d
adjto=a*d-b*c
END FUNCTION adjto

3.-Del programa 2., en vez que sea un subprograma function, que esta sea una
subrutina.

4.- Elabore un programa que pida por teclado una matriz cuadrada de 4X4 y calcule
su traza y la suma de los elementos por encima y por debajo de la diagonal principal.
Usar una subrutina para la lectura de la matriz, una funcin para calcular la traza y
una subrutina para las dos sumas pedidas.

5.- Elabore un programa que desplace los valores de las componentes del vector
A(5,10,15,20,25,30,35) una posicin hacia la derecha de modo que el valor de la
ltima componente pase a la primera, es decir, despus del desplazamiento, el vector
resultante es A(35,5,10,15,20,25,30). Usar una subrutina para realizar el
desplazamiento a la derecha.

6.- Lo mismo que en el ejercicio 5, pero desplazando los valores de las componentes
del vector A(5,10,15,20,25,30,35) una posicin hacia la izquierda de modo que el valor
de la primera componente pase a la ltima, es decir, despus del desplazamiento, el
vector resultante es A(10,15,20,25,30,35,5). Usar una subrutina para realizar el
desplazamiento a la izquierda.

7.- Elabore un programa que calcule el producto de 2 matrices de 5X3 y 3X5,


respectivamente. Usar una subrutina para la lectura de las dos matrices a multiplicar
y otra subrutina para calcular la matriz producto.

8.- Escriba un subprograma FUNCTION que aproxime a la funcin exponencial ex


mediante:

xi x 2 x3 x 4
e 1 x ...
x

i 0 i ! 2! 3! 4!

1
Ing. William Chauca Nolasco

9.- Elabore un programa que lea una matriz a travs de un subrutina y a travs de una
segunda subrutina calcule la matriz transpuesta de cualquier matriz de orden M x N.

10.- Elabore un programa que lea un arreglo de M filas y N columnas a travs de una
subrutina y con una funcin calcule la suma de los elementos de la diagonal principal.

11.- Realice un programa que lea los nombres y las edades de diez alumnos a travs
de una subrutina, 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.

12.- Se tiene la siguiente subrutina para ordenar los elementos de un vector,


implemente el programa principal y que funcione completamente al ejecutarlo.
program problema_12
implicit none
integer::i
real,dimension(5)::vector

do i=1,5
print*,"ingrese el vector",i
read*,vector(i)
end do
call orden (5,vector)
print*,"Ordenado de menos a mayor",orden(5,vector)
end program problema_12

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,intent(in):: NELEM
REAL, DIMENSION(NELEM),intent(out):: 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
ENDIF
ENDDO
ENDDO
RETURN
END SUBROUTINE ORDEN

13.- Se tiene la siguiente subrutina para ordenar los elementos de un vector,


implemente el programa principal y que funcione completamente al ejecutarlo.
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

2
Ing. William Chauca Nolasco

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.- Se tiene la siguiente subrutina para ordenar los elementos de un vector,


implemente el programa principal y que funcione completamente al ejecutarlo.
SUBROUTINE ORDEN (NELEM,ARREG)
ORDENACION POR SELECCION 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, INDICE
REAL:: AUX
IF (NELEM<2) RETURN
DO J= NELEM,2,-1
INDICE = 1
DO I =2,J
IF (ARREG(I)>ARREG(INDICE)) INDICE = I
ENDDO
IF (INDICE/=J) THEN
AUX = ARREG(INDICE)
ARREG(INDICE) = ARREG(J)
ARREG(J) = AUX
ENDIF
ENDDO
RETURN
END SUBROUTINE ORDEN

15.- Se tiene la siguiente subrutina para ordenar los elementos de un vector,


implemente el programa principal y que funcione completamente al ejecutarlo.
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, J, 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

3
Ing. William Chauca Nolasco

CLAVE = .TRUE.
ENDIF
END DO
POS = K
ARREG(POS) = AUX
ENDDO
RETURN
END SUBROUTINE ORDEN

16.- Determine el pago semanal en la poca de Navidad para un empleado de la


Empresa WIWIDATA este sueldo se da una semana antes de la navidad siendo el
sueldo que recibe de la siguiente manera:
El empleado recibe un sueldo ordinario que es igual a las horas de trabajos y el sueldo
por horas, si el empleado trabaja ms de 40 horas su sueldo ser: el sueldo ordinario
ms un 50% para las horas en exceso), ms un bono de 100, 50 o 25 soles (segn si
el empleado ha trabajado al menos 10 aos, al menos 5, o menos de 5).
Elabore el programa conteniendo los siguientes subprogramas.
Programa principal
Subprograma Subrutina, en este subprograma se debe calcular el sueldo ordinario y
el sueldo por navidad, adems debe llamar al subprograma Function donde
determinara la bonificacin segn el nmero de aos que tenga el empleado en la
empresa.
17.- Para el programa anterior elabore un mdulo que contenga a los dos
subprogramas y resuelvan el mismo problema.
18.- Escriba un programa para una compaa de televisin. El programa debe pedir al
usuario que ingrese por teclado cuantos televisores se necesitan. El subprograma
(subrutina) ENC_COSTO debe calcular el costo total, basndose en la siguiente: Los
televisores se venden al distribuidor a $250 dlares. S ste compra ms de 1000
unidades, cada televisor adicional tiene un descuento de 10%. Por cada televisor
despus de 5000, el descuento es de 70%. Si el distribuidor ordena 5500 televisores,
paga el precio de lista por los primeros 1000; obtiene 10% de descuentos en los
siguiente 4000, y un 20% en los 500 restantes. En el subprograma ENC_COSTO se
har una referencia a la funcin (function) ENC_DESCUENTO que regresara la
cantidad de dinero que se ahorrar el distribuidor. No olvidar que la subrutina
ENC_COSTO imprimir el nmero de televisores pedidos, el costo sin incluir
descuentos, y el costo final de la renta.
19.- Para el programa (18) anterior elabore un mdulo que contenga a los dos
subprogramas y resuelvan el mismo problema.
20.- Una tienda vende 5 artculos, cuyos nmeros de identificacin son 101, 102, 103,
104, 105, respectivamente. Un archivo de texto contiene los siguientes pares de datos:
102 5 104 9 102 7 105 8 101 2 104 9
103 9 105 4 101 8 101 5 104 8 103 2

4
Ing. William Chauca Nolasco

Se puede suponer que cada par de datos aparece en una lnea, representando cada
par la venta de un artculo. El primer nmero da el nmero de identificacin ID del
artculo, y el segundo indica cuntas unidades se vendieron, As, 105 5 significan que
se vendieron 5 unidades del articulo nmero 102. Escriba un programa para imprimir
una tabla que d los nmeros de identificacin ID 101 a 105 y el nmero de unidades
vendidas por cada artculo, implementar una subrutina para esta operacin.
20.- Para el problema 19 determine que artculos ms se vendieron y el que menos
se vendieron utilice un subprograma function.

21.- Elaborar un programa que utilice un subprograma funcin para evaluar g(x)=x2-
5x+2, para x=1,2,...20

22.- Elabore un programa que calcule el mayor de tres nmeros A,B,C, adems nos
de la suma de los tres nmeros, el programa debe utilizar subrutina.

23.- Disear una funcin que calcule la media de tres nmeros ledos del teclado y
poner un ejemplo de su aplicacin.

24.- Disear la funcin FACTORIAL que calcule el factorial de un nmero entero en el


rango 100 a 1,000.

25.- Disear un programa para calcular el mximo comn divisor de cuatro nmeros
basado en un subprograma funcin mcd (mximo comn divisor de dos nmeros).

26.- Disear una funcin que encuentre el mayor de dos nmeros enteros.

27.- Disear una funcin que calcule xn para x, variable real y n variable entera.

5
Ing. William Chauca Nolasco

28.- Disear una subrutina que acepte un nmero de mes, un nmero de da y un


nmero de ao y los visualice en el formato
dd/mm/aa
Por ejemplo, los valores 19,09,1987 se visualizaran como
19/9/87
y para los valores 3, 9 y 1905
3/9/05

29.- Realizar un procedimiento que realice la conversin de coordenadas polares (r,


) a coordenadas cartesianas (x, y) x = r.cos (), y = r.sen()

30.- Escribir una funcin Salario que calcule los salarios de un trabajador para un
nmero dado de horas trabajadas y un salario hora. Las horas que superen las 40
horas semanales se pagarn como extras con un salario hora 1,5 veces el salario
ordinario.

31.- Disear una funcin que permita devolver el valor absoluto de un nmero.

32.- Realizar una subrutina que obtenga la divisin entera y el resto de la misma
utilizando nicamente los operadores suma y resta.

33.- Escribir una funcin que permita deducir si una fecha leda del teclado es vlida.

34.-Escribir un programa que transforme un nmero introducido por teclado en


notacin decimal a notacin romana. El nmero ser entero positivo y no exceder de
3,000

35.- Escribir el programa de una funcin recursiva que: a) calcule el factorial de un


nmero entero positivo, b) la potencia de un nmero entero positivo.

36.- Construir una funcin que reciba como parmetro un entero y retorne su ltimo
dgito.

37.- Construir una funcin que reciba como parmetro un entero y retorne sus dos
ltimos dgitos.

38.- Construir una funcin que reciba como parmetro un entero y retorne la cantidad
de dgitos.

39.- Construir una funcin que reciba como parmetro un entero y retorne la cantidad
de dgitos pares.

40.-Construir una funcin que reciba como parmetro un entero y retorne la cantidad
de dgitos primos.

41.- Construir una funcin que reciba como parmetro un entero y retorne el carcter
al cual pertenece ese entero como cdigo ASCII.

6
Ing. William Chauca Nolasco

42.-Construir una funcin que reciba como parmetro un carcter y retorne el cdigo
ASCII asociado a l.

43- Construir una funcin que reciba como parmetro un entero y retorne 1 si dicho
entero est entre los 30 primeros elementos de la serie de Fibonacci. Deber retornar
0 si no es as.

44.-Construir una funcin que reciba un entero y le calcule su factorial sabiendo que
el factorial de un nmero es el resultado de multiplicar sucesivamente todos los
enteros comprendidos entre 1 y el nmero dado. El factorial de 0 es 1. No estn
definidos los factoriales de nmeros negativos.

45.-Construir una funcin que reciba como parmetro un entero y retorne el primer
dgito de este entero.

46.-Construir una funcin que reciba como parmetro un entero y un dgito y retorne
1 si dicho entero es mltiplo de dicho dgito y 0 si no es as.

43.-Construir una funcin que reciba como parmetro un entero y un dgito y retorne
1 si dicho dgito est en dicho entero y 0 si no es as.

44.-Construir una funcin que reciba como parmetro un entero y un dgito y retorne
la cantidad de veces que se encuentra dicho dgito en dicho entero.

45.- Construir una funcin que reciba como parmetros dos nmeros enteros y retorne
el valor del mayor.

46.-Construir una funcin que reciba como parmetros dos nmeros enteros y retorne
si el primer nmero es mltiplo del segundo y 0 si no.
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.

48.-Construir una funcin que reciba como parmetro un entero y retorne 1 si


corresponde al cdigo ASCII de un dgito (Los cdigos ASCII de las letras minsculas
van desde 48 que es el cdigo del dgito 0 hasta 57 que es el cdigo del dgito 9).
Deber retornar 0 si no es as.

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.

50.-Construir una funcin que reciba como parmetro un entero y retorne 1 si dicho
valor es un nmero de mnimo 3 dgitos. Deber retornar 0 si no es as.

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.

7
Ing. William Chauca Nolasco

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.

53.- Construir una funcin que reciba como parmetro un entero y retorne 1 si dicho
valor es mltiplo de 5. Deber retornar 0 si no es as.

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.

55.- Construir una funcin que reciba como parmetro dos enteros de dos dgitos cada
uno y retorne 1 si son inversos. Ejemplo: 83 es inverso de 38. Deber retornar 0 si no
es as.

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.

57.-Construir una funcin que reciba como parmetro un vector de 10 posiciones


enteras y retorne el mayor de los datos del vector.

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.

59.-Construir una funcin que reciba como parmetro un vector de 10 posiciones


enteras y retorne la cantidad de nmeros primos almacenados en el vector.

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.
61.-Construir una funcin que reciba como parmetro un vector de 10 posiciones
enteras y retorne la posicin del mayor nmero primo almacenado en el vector.

62.- Construir una funcin que reciba como parmetro un vector de 10 posiciones
enteras y retorne el promedio entero del vector.

63.-Construir una funcin que reciba como parmetro un vector de 10 posiciones


enteras y retorne el promedio real del vector.

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.

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.

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.

8
Ing. William Chauca Nolasco

67.-Construir una funcin que reciba como parmetro un entero y retorne ese
elemento de la serie de Fibonacci.

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.

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.

70.- Construir una funcin que reciba como parmetros un vector de 10 posiciones
enteras y un dgito y que retorne la cantidad de veces que dicho dgito se encuentra
en el vector. No se olvide que un mismo dgito puede estar varias veces en un solo
nmero.

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.

72.-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 en donde dicho
dgito est de penltimo.

73.- Construir una funcin que reciba como parmetro una matriz de 3x4 entera y
retorne la cantidad de veces que se repite el mayor dato de la matriz.

74.- Construir una funcin que reciba como parmetro una matriz 3x4 entera y retorne
a cantidad de nmeros primos almacenados en la matriz.
75.- Construir una funcin que reciba como parmetro una matriz 3x4 entera y retorne
la cantidad de veces que se repite el mayor nmero primo de la matriz.

76.- Construir una funcin que reciba como parmetros una matriz 4x4 entera y un
valor entero y retorne la cantidad de veces que se repite dicho valor en la matriz.

77.- Construir una funcin que reciba como parmetro una matriz 4x4 entera y retorne
el nmero de la fila en donde se encuentre por primera vez el nmero mayor de la
matriz.

78.-Construir una funcin que reciba como parmetro una matriz 4x4 entera y retorne
el nmero de la columna en donde se encuentre por primera vez el nmero mayor de
la matriz.

79.- Construir una funcin que reciba como parmetro una matriz 4x4 entera y retorne
la posicin exacta en donde se encuentre almacenado el mayor nmero primo.

80.-Construir una funcin que reciba una matriz 5x5 y retorne el valor de su moda. La
moda de un conjunto de datos es el dato que mas se repite.

9
Ing. William Chauca Nolasco

84.-Construir una funcin que reciba una matriz 5x5 y retorne la cantidad de veces
que se repite su moda.

La sucesin de Fibonacci, en ocasiones tambin conocida como secuencia de


Fibonacci o incorrectamente como serie de Fibonacci, es en s una sucesin
matemtica infinita. Consta de una serie de nmeros naturales que se suman de a 2,
a partir de 0 y 1. Bsicamente, la sucesin de Fibonacci se realiza sumando siempre
los ltimos 2 nmeros (Todos los nmeros presentes en la sucesin se llaman
nmeros de Fibonacci) de la siguiente manera:

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: xn = xn-1 + xn-2

10

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