You are on page 1of 15

PROBLEMAS PROPUESTOS DE DATOS ESTRUCTURADOS ARREGLOS (ARRAYS) Autor: Ing. William Chauca Nolasco 1.

- Responda a las siguientes preguntas: . Diga que otros nombres reciben los arreglos. . Explique que es un arreglo. . De un ejemplo de un arreglo uni dimensional (vector). . De un ejemplo de un arreglo bi dimensional (matriz). . De un ejemplo de un arreglo tridimensional (cubo). . Pueden existir arreglos de ms de tres dimensiones (polidimensionales ) ? . Si tenemos un arreglo uni dimensional de cinco elementos Cmo localiza el contenido de la tercera unidad? . Qu son los subndices en un arreglo? . Un subndice puede llegar a ser no entero, si, no por que? . Se puede tener como subndice una expresin matemtica?; si, no y Cmo deber de ser el resultado? . Puede el nmero de subndice ser menor a lo declarado? . Puede ser el numero de subndice ser mayor a lo declarado, porque? . A que se le denomina arreglo esttico? . A que se le llama arreglo dinmico? . Es posible que los subndices sea negativos? . Cuntos subndices utiliza un arreglo matricial? . Cuntos subndices utiliza un arreglo cbico? . Qu principal ventaja puede presentar el uso de arreglos?

2.-Elaborar un programa que pida el grado de un polinomio (menor a diez), sus coeficientes y un valor de x para evaluar el polinomio.

3.-Elaborar un programa que pida los grados de dos polinomios (inferior a diez y no tienen porqu ser iguales), sus coeficientes y muestre por pantalla el polinomio suma.

4.- Elaborar un programa que pida los grados de dos polinomios (inferior a diez y no tienen porqu ser iguales), sus coeficientes y muestre el polinomio producto.

5.-Elaborar un programa que pida las coordenadas cartesianas de los extremos de dos vectores, escriba el ngulo que forman (en grados) y su producto escalar utilizand o el coseno del ngulo comprendido entre ambos.

6.-Elabore un programa que pida las temperaturas de los das de la semana. Posteriormente escribir los nmeros de los das que superen la temperatura media.

7.-Elabore un programa que calcule el mximo y el mnimo de un vector de 10 elemento s de tipo real.

8.-Elabore un programa que lea un nmero natural por teclado, almacenando cada dgit o del mismo en un elemento de un vector y compruebe si es narcisista. A saber: un nmero de n dgitos es narcisista si coincide con la suma de las potencias de orden n de sus

dgitos. Ejemplo: 153, pues 13+53+33= 1+125+27=153. Los nmeros 370 y 371 son tambin narcisistas. Cmo buscaras todos los nmeros narcisistas de dos y de 4 dgitos?

9.-Elabore un programa que lea por teclado una matriz 3x3 y muestre su matriz traspuesta.

10.-Elabore un programa que obtenga la recta de regresin y=mx+b de n parejas de valores (x,y) y el coeficiente de correlacin lineal r.

11.-Elabore un programa que lea por teclado una matriz M(3x3) y muestre las matr ices M+M y MxM.

12.-Elabore un programa que calcule el mximo de cada columna par y el mnimo de cada columna impar de una matriz de 5 filas por 6 columnas.

13.- Desarrolle un programa que permita el ingreso de una serie de nmeros enteros en forma dinmica en un vector y determine el numero mayor y menor. Deber visualizar e l vector entero y los numero mayor y menor.

14.- El siguiente programa esta incompleto, escriba las sentencias que faltan pa ra que ordene una serie de nmeros en forma ascendente. (Realice un rastreo manual), La asignacin es dinmica Program ascendente .. ... Print*, Ingrese cantidad de nmeros que tendr el vector

Allocate( .) Print*, . Localizando los elementos Do j=1, n Ingrese Datos al vector

Do k=j, n If (vector(j) Temp=vector(j) Vector(j)=Vector(k) Vector(k)=Temp .. . Vector(k) then

.. Print*, Vector ordenado en forma ascendente . End Program ascendente

15.- El siguiente programa esta incompleto, escriba las sentencias que faltan pa ra que ordene una serie de nmeros en forma ascendente. La asignacin es dinmica. El programa utiliza el mtodo de mnimos. (Realice un rastreo manual) Mtodo de mnimo: Consiste en buscar el numero mnimo y situarlo como primer elemento de la lista, luego buscara el mnimo de la lista(vector) que resta y colocarlo como segundo elemento, y asi suce sivamente. Program Metodo_minimo .. ... Print*, Ingrese cantidad de nmeros que tendr el vector

Allocate( .) Print*, . Bsqueda de mnimos Do i = 1, n Temp = vector(i) .. Do j = i, n If (vector(j) k = j Temp=vector(k) End If . temp) then Ingrese Datos al vector

vector(...) = vector(i) vector(i) = temp print*,vector(i) .. End Program Metodo_minimo

16.- El siguiente programa esta incompleto, escriba las sentencias que faltan pa

ra que ordene una serie de nmeros en forma ascendente. El vector tiene 5 elementos. El programa utiliza el mtodo de la burbuja. (Realice un rastreo manual) El mtodo de la burbuja consiste en recorrer sucesivamente el vector comparando lo s elementos consecutivos e intercambindolos cuando este descolocados. Este mtodo va colocando en cada pasada el mayor elemento de los tratados en la ultima posicin quedando colocado y por lo tanto excluido de los el ementos a tratar en la siguiente pasada. Program Burbuja .. ... Print*, . Bsqueda por el mtodo de la burbuja Do i = 5, 2, .. Ingrese Datos al vector

Do j = 1, i-1 If (vector(j) . vector(j+1)) temp = vector(j) = vector(j+1) vector(j+ ) = temp End If ..

End do !imprimir el vector ordenado en forma ascendente .. End Program Metodo_minimo

A continuacin, se presenta un conjunto de programas que no tienen un enunciado co mo los vistos en los problemas anteriores, copie cada programa en un proyecto nuevo , compile, ejectelo y segn lo que resulte escriba correctamente el enunciado.

17.PROGRAM SumaMat IMPLICIT NONE INTEGER, PARAMETER :: fil=4, col=4 INTEGER, DIMENSION(fil,col) :: a,b,c INTEGER :: i, j ! Leemos las matrices PRINT*, "Dime la matriz A:" DO i=1,fil DO j=1,col PRINT*, "Elemento (", i, ",", j, ")" READ*, a(i,j) ENDDO ENDDO PRINT*, "Dime la matriz B:" DO i=1,fil DO j=1,col PRINT*, "Elemento (", i, ",", j, ")" READ*, b(i,j) ENDDO ENDDO ! Calculamos la suma elemento a elemento DO i=1,fil DO j=1,col c(i,j) = a(i,j) + b(i,j) ENDDO

ENDDO ! Imprimimos el resultado DO i=1,fil DO j=1,col PRINT*, "C(",i,",",j,") = ",c(i,j) ENDDO ENDDO END PROGRAM SumaMat

18.PROGRAM SumaMat IMPLICIT NONE INTEGER, PARAMETER :: fil=4, col=4 INTEGER, DIMENSION(fil,col) :: a,b,c INTEGER :: i, j ! Lo hacemos todo elemento a elemento con dos nicos bucles DO i=1,fil DO j=1,col ! Leemos el elemento de A PRINT*, "Dime el elemento (", i, ",", j, ") de A" READ*, a(i,j) ! Leemos el elemento de B PRINT*, "Dime el elemento (", i, ",", j, ") de B" READ*, b(i,j)

! Sumamos los dos elementos c(i,j) = a(i,j) + b(i,j) ! Mostramos el resultado PRINT*, "C(",i,",",j,") = ",c(i,j) ENDDO ENDDO END PROGRAM SumaMat

19.PROGRAM MediaVector IMPLICIT NONE ! Lectura de un vector de 10 elementos y clculo de la media ! Declaracin de constantes INTEGER, PARAMETER :: NumElementos=10 ! Declaracin de variables REAL, DIMENSION(NumElementos) :: vector INTEGER :: i REAL :: media ! Leemos el vector PRINT*, "Dime ",NumElementos," nmeros" DO i=1,NumElementos READ*, vector(i) ENDDO ! Calculamos la media media=0 DO i=1,NumElementos media = media + vector(i) ENDDO media = media / NumElementos ! Mostramos el resultado

PRINT*, "La media es ",media END PROGRAM MediaVector

20.PROGRAM LeeMatriz IMPLICIT NONE INTEGER, DIMENSION(10,12) :: a INTEGER :: i ! Leemos las matrices por filas PRINT*, "Dime la matriz A (por filas)" DO i=1,10 READ*, a(i,1:12) ENDDO PRINT*, "El orden de los elementos almacenados es:" PRINT*, a PRINT*, "La matriz, escrita por filas, es:" DO i=1,10 PRINT*, a(i,1:12) ENDDO END PROGRAM LeeMatriz

21.PROGRAM CopiaSeccion IMPLICIT NONE INTEGER, DIMENSION(10,12) :: a INTEGER, DIMENSION(4,8) :: b INTEGER :: i, j ! Leemos las matrices por columnas PRINT*, "Dime la matriz A (por columnas)" READ*, a PRINT*, "Dime la matriz B (por columnas)" READ*, b ! Solucin 1: DO i=4,7 DO j=3,10 a(i,j) = b(i-3,j-2) ENDDO ENDDO ! Solucin 2: a(4:7,3:10) = b ! Imprimimos el resultado (por filas y una fila por lnea) DO i=1,10 PRINT*, (a(i,j),j=1,12) ENDDO END PROGRAM CopiaSeccion

22.PROGRAM MultMat IMPLICIT NONE INTEGER, DIMENSION(2,4) :: m1 INTEGER, DIMENSION(4,2) :: m2

INTEGER, DIMENSION(2,2) :: r INTEGER :: i ! Leemos la matriz PRINT*, "Dime los elementos de la matriz:" DO i=1,2 PRINT*, "Fila = ",i READ*, m1(i,:) ENDDO ! Calculamos la traspuesta y la ponemos en m2 m2 = TRANSPOSE(m1) PRINT*, "Su traspuesta es:" DO i=1,4 PRINT*, m2(i,:) ENDDO ! Multiplicamos m1 y m2 y ponemos el resultado en r r = MATMUL(m1,m2) PRINT*, "Su producto es:" DO i=1,2 PRINT*, r(i,:) ENDDO END PROGRAM MultMat

23.PROGRAM MaximoMatriz IMPLICIT NONE INTEGER, DIMENSION(3,4) :: mat INTEGER :: maximo,i INTEGER, DIMENSION(2) :: posi INTEGER, DIMENSION(2) :: dimensiones ! Preguntamos las dimensiones de la matriz dimensiones = SHAPE(mat) ! Leemos la matriz PRINT*, "Dime los elementos de la matriz:" DO i=1,dimensiones(1) PRINT*, "Fila = ",i READ*, mat(i,1:dimensiones(2)) ENDDO ! Calculamos el mximo y su posicin posi = MAXLOC(mat) maximo = mat(posi(1),posi(2)) ! Mostramos los resultados PRINT*, "El mximo es: ", maximo PRINT*, "Est en la fila ", posi(1), " y columna ", posi(2) END PROGRAM MaximoMatriz

24.PROGRAM EjemploAlloc IMPLICIT NONE INTEGER, DIMENSION(:), ALLOCATABLE :: mat IF (ALLOCATED(mat)) THEN PRINT*, "Ya tenemos memoria" ELSE

PRINT*, "An no tenemos memoria" ENDIF ALLOCATE(mat(10)) IF (ALLOCATED(mat)) THEN PRINT*, "Ya tenemos memoria" ELSE PRINT*, "An no tenemos memoria" ENDIF DEALLOCATE(mat) IF (ALLOCATED(mat)) THEN PRINT*, "Ya tenemos memoria" ELSE PRINT*, "An no tenemos memoria" ENDIF END PROGRAM EjemploAlloc

You might also like