You are on page 1of 6

Universidad Nacional de Asuncin

Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

ARREGLOS: PROPOSITO, CARACTERISTICAS, DECLARACION, ACCESO A


COMPONENTES

1. En LENGUAJE SL

1.1. Diagrama sintctico de la definicin de un vector


vector [ <tamao_constante> ] <tipo_dato>
vector [ * ] <tipo_dato> // Vector abierto

Para acceder a un componente:


v[<indice_entero>]

Funciones asociadas
dim() : dimensiona un vector declarado abierto.
Ejemplo:
var
v : vector [*] numerico
inicio
dim(v, 10)
v[1] = 0
...

alen() : determina el tamao del vector que se le pasa como parmetro.

1.2. Diagrama sintctico de la definicin de una matriz


matriz [ <dim1>, <dim2>, <dim3..>] <tipo_dato_componente>
matriz [ *,* ] <tipo_dato> // matriz abierta

Para acceder a un componente:


v[<indice_entero>]

Ejemplos:
matriz de 10 filas y 10 columnas de componentes numricos
M : matriz[10,10] numerico

Definicin de matriz abierta:


var
A : matriz[*,*] numerico
inicio
dim(V,10) // hace que el vector tenga capacidad para 10
elementos.
dim(A,10,10) // hace que la matriz tenga 10 filas y 10 columnas
alen(A[1]) // retorna la cantidad de columnas de la primera fila
alen(A) // retorna la cantidad de filas

1
Universidad Nacional de Asuncin
Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

1.3. Ejemplos
a. Leer un vector de 100 elementos e imprimir el mayor, menor, suma y promedio
programa ver_arreglos
var
A : vector[100] numerico
suma, prom, k : numerico
menor, mayor : numerico
inicio
// lectura del vector
desde k=1 hasta alen(A) {
leer(A[k])
}

menor = A[1]
mayor = A[1]
suma = A[1]
desde k=2 hasta alen(A) {
suma = suma + A[k]
si ( A[k] < menor ) {
menor = A[k]
}
si ( A[k] > mayor ) {
mayor = A[k]
}
}
prom = suma / n
imprimir(suma, prom, menor, mayor)

fin

b. Ordenar un vector por burbuja


var
A : vector[10] numerico
k,j : numerico
menor: numerico
inicio
leer(A)
// Ordenamos por burbuja
desde k=1 hasta alen(A) {
desde j=k+1 hasta alen(A) {
si ( A[k] > A[j] ) {
intercambiar(A[k],A[j])
}
}
}
imprimir(A)
fin

c. Ordenar un vector por seleccin


var
A : vector[10] numerico
k,j : numerico
menor: numerico
inicio
leer(A)
// Ordenamos por seleccion
desde k=1 hasta alen(A) {
menor = k
desde j=k+1 hasta alen(A) {
si ( A[j] < A[menor] ) {
menor = j
}
}
intercambiar (A[k], A[menor])
}
imprimir(A)
fin

2
Universidad Nacional de Asuncin
Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

d. Ejemplos de utilizacin de matrices


programa matriz1
var
A : matriz [3,3] numerico
i,j,k : numerico
mayor,suma : numerico
inicio
A = { {1,2,4},
{5,6,7},
{8,9,6}}

/* suma de la diagonal principal */


desde i=1 hasta alen(A) {
suma = suma + A[i,i]
}

imprimir (La suma de la diagonal principal es , suma )

/* para hallar el mayor elemento */


mayor = A[1,1]

desde i=1 hasta alen(A) {


desde j=i+1 hasta alen(A[i]) {
imprimir("\nA[", i, ",", j , "]=" , A[i,j])
si ( A[i,j] > mayor ) {
mayor = A[i,j]
}
}
}

imprimir("\n Mayor: ", mayor)

/* Intercambio de filas : intercambiar los elementos de la primera fila


con los
elementos de la fila M, la segunda fila con la fila M-1, la tercera
fila con la
fila M-2, hasta la fila M/2 con la fila M/2-1 */

imprimir("\Original: \n", A)

desde i=1 hasta int(alen(A)/2) {


desde j=1 hasta alen(A[i]) {
intercambiar(A[i,j], A[alen(A)-i+1,j])
}
}

imprimir("\Cambiado: \n", A)

// Traspuesta

imprimir("\Antes de la traspuesta : ", A)

desde i=1 hasta alen(A) {


desde j=i+1 hasta alen(A[i]) {
intercambiar(A[i,j],A[j,i])
}
}

imprimir("\Traspuesta : ", A)
fin

3
Universidad Nacional de Asuncin
Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

2. PROBLEMAS SOBRE ARREGLOS

Problema #21

Se tiene un vector (como mximo de 100 componentes) que contiene palabras, separadas por uno
o mas asteriscos. Extraer e imprimir cada palabra. Imprimir tambin la longitud de la palabra mas
larga. El ltimo elemento procesable del vector tiene '/'.

Ejemplo:

l a p i z * h o l a * * * m a q u i n a * * d e * * * * p o r /

lapiz
hola
maquina
de
por
...

Longitud de la palabra ms larga: 7

Problema #22

Dado un vector A de N elementos, escribir un programa que permita hallar la o las modas. La moda
es el elemento que ms veces se repite. Si no existe moda imprimir el mensaje correspondiente.
Los elementos van del 0 al 9. Para hallar la moda el vector debe estar ordenado en forma
creciente.

Problema #23

Haga una funcin que reciba como parmetro un vector no ordenado de nmeros y que devuelva la
mediana de esos nmeros. La mediana es el nmero que se encuentra en medio de un conjunto
ordenado de nmeros, es decir, la mitad de los nmeros es mayor que la mediana y la otra mitad
es menor. Si la cantidad de nmeros en el conjunto es par, la mediana es el promedio de los
nmeros centrales.

La mediana de 1,2,3,4,8 es igual a 3


La mediana de 1, 2, 3, 4, 8, 20 es igual a 3,5, el promedio de 3 y 4

Problema #24

Leer un vector A de n componentes y crear e imprimir un vector B, que est compuesto por todos
los componentes del vector A que no estn repetidos.
Ejemplo:
A = (4,0,2,1,2,0,0,1,2,3 )
B = (4,3)

4
Universidad Nacional de Asuncin
Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

Problema #25

Se lee un vector K de m elementos y un vector L, de n elementos, cada uno de los cuales


contienen nmeros enteros positivos diferentes.
a) Almacenar en otro vector la interseccin de los vectores K y L, o sea aquellos elementos
que estn tanto en K como en L.
b) Almacenar en otro vector la unin de los vectores K y L, o sea aquellos elementos que
estn en K, en L o en ambos.
c) Almacenar en otro vector la diferencia simtrica de los vectores K y L, o sea aquellos
elementos que estn en K o en L, pero no en ambos.
Problema #26

Dadas las declaraciones siguientes:


Const
SEMANAS : 5
EQUIPOS : 6
Var
VtaEntradas : matriz [EQUIPOS,SEMANAS] numerico

Escribir subrutinas que realicen las siguientes tareas.

a) Determinar el equipo que vendi ms entradas durante la primera semana de la venta de


entradas.
b) Determinar la semana en la que el segundo equipo vendi ms entradas.
c) Determinar la semana en la que se vendieron ms entradas.
d) Determinar el equipo que vendi ms entradas.

Problema #27

Se desea obtener un resumen y un informe estadstico que indique la frecuencia de notas


obtenidas por un curso en un determinado examen final. Para ello se debe leer el puntaje (del 1 al
100) que obtuvo cada uno de los 15 alumnos en el examen. La escala de notas es la siguiente:

Puntaje
Nota Desde Hasta
--------------------
A 0 59
B 60 69
C 70 79
D 80 93
E 94 100

El informe debe parecer al siguiente:

Nro. de Alumno Puntaje Obtenido Nota Final


--------------------------------------------------
1 72 C
2 87 D
3 63 B
4 52 A
5 79 C
6 82 D
7 96 E
8 28 A
9 70 C
10 91 D
11 46 A
12 78 C
13 88 D
14 67 B
15 75 C

Histograma de frecuencias

5
Universidad Nacional de Asuncin
Facultad Politcnica
Carrera: Licenciatura en Ciencias Informticas
Prof. Victor E. Hermosilla Mechetti
ALGORTMICA II

-------------------------
*
* *
* * *
* * * *
* * * * *
-----------------------------
A B C D E

Problema #28
Leer un vector V de K elementos NO repetidos ( K= int(M/2)+ M%2) y una matriz A de tamao M*N.
Imprimir para cada fila de la matriz A la(s) columna(s) en la que se inician las coincidencias; en el
caso de que no existan imprimir un mensaje como se muestran en los ejemplos que figura mas
abajo.
Se considera coincidencias cuando en las filas de la matriz se encuentran los mismos elementos
del vector V considerando su valor y la secuencia de aparicin.

Ejemplo 1)
V =

5 8 7

A = (el fondo gris indica la coincidencia de elementos con el vector V)

5 8 7 4 5

2 3 5 8 7

5 8 7 7 8

2 5 7 8 1

2 5 8 7 2

Se debe imprimir:
Fila = 1 Columna=1
Fila = 2 Columna=3
Fila = 3 Columna =1
Fila = 4 No existe coincidencia
Fila = 5 Columna=2

Ejemplo 2)

5 8 7 5 8 7

2 3 5 8 7 6

5 8 7 7 8 8

2 7 1 2 1 2

2 5 8 7 2 1

Se debe imprimir:
Fila = 1 en Columna= 1 y 4
Fila = 2 en Columna = 3
Fila = 3 en Columna= 1
Fila = 4 No existe coincidencia
Fila = 5 en Columna= 2

You might also like