Está en la página 1de 24

Trabajo de Informática

Realizado por:
Alberto Olid Sampedro.
1º I.T.I. Mecánica.

Autor: Alberto Olid Sampedro 0


Trabajo de Informática

-----------------------------------------------Ejercicio-----------------------------------------------

Se desea diseñar un sistema de reconocimiento de imágenes para un satélite. El software


asociado debe realizar distintos tipos de operaciones con imágenes almacenadas en
matrices de m x n elementos. Cada punto de la imagen está representado por un color
codificado mediante un entero en el rango 0-255.

a) Diseñar un subalgoritmo que devuelva el valor más bajo de la imagen.


b) Diseñar un subalgoritmo que cree un vector con todos los colores utilizados en
la imagen y otro vector con las veces que ha aparecido dicho color.
c) Diseñar un algoritmo al que se le de una imagen y le sume el valor más bajo
(usar la función del primer apartado) a todos los elementos de la misma, excepto
a aquellos que estén en el borde.
d) Diseñar un subalgoritmo que lea una imagen y muestre en pantalla las
coordenadas de aquellos puntos que, no siendo puntos del borde, tienen un color
por debajo de la media.

Hacer un menú en el programa principal con las opciones que se han indicado y llamar a
los procedimientos a partir de ese menú. Además este menú se podrá ejecutar un
número ilimitado de veces (hasta que el usuario introduzca 0).
Además deberemos implementar las siguientes funciones:
Inicializar matriz, dado un número de filas y columnas (habrá un Máximo de filas y
columnas que será constante).
Mostrar matriz.
(Estos dos módulos también pueden incluirse en el menú).

Normativa

Para cada problema se deberá entregar una definición completa del mismo, el
algoritmo y el código del programa resultante. Además se incluirá una pequeña
documentación sobre cómo utilizar el programa (cómo se introducen los datos, qué se
tiene que hacer para realizar una determinada función y un ejemplo de prueba con
datos).

Autor: Alberto Olid Sampedro 1


Trabajo de Informática

----------------------------------------------Algoritmo----------------------------------------------

PROCEDIMIENTO Escribir(vector)
ENTRADA vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
SALIDA: vector(k, z): ENTERO, parámetro donde se almacenan los valores del Array.
VARIABLES: k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

INICIO
PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER
INICIO
PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER
INICIO
REPETIR
ESCRIBIR “Introduzca un valor, para el elemento de la imagen, comprendido entre 0 y
255.”
LEER vector(k, z)
ESCRIBIR
SI ((vector(k, z)>255) O (vector(k, z)<0))
ENTONCES
INICIO
ESCRIBIR “El número introducido no es válido. Por favor, escriba un valor”
ESCRIBIR “dentro del rango aceptado.”
ESCRIBIR
FIN_SI

HASTA QUE ((vector(k, z)≥0) Y (vector(k, z)≤255))

FIN_PARA
FIN_PARA
ESCRIBIR
FIN

PROCEDIMIENTO Mostrar(vector)
ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
SALIDA: Ninguna. Este procedimiento lee los valores del teclado.
VARIABLES: k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

INICIO
PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER
INICIO
PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER

Autor: Alberto Olid Sampedro 2


Trabajo de Informática

INICIO
ESCRIBIR vector(k, z)
ESCRIBIR “ ”
FIN_PARA
ESCRIBIR
FIN_PARA
ESCRIBIR
ESCRIBIR
FIN

FUNCIÓN Valor_Inferior(vector): ENTERO


ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
SALIDA: Un entero que representa el valor mínimo de los elementos del Array.
VARIABLES: Inf: ENTERO, parámetro donde se almacenará el valor mínimo del Array.
k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

INICIO
Infvector(1, 1)

REPETIR

PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER


INICIO
PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER
INICIO
SI (vector(k, z)<Inf)
ENTONCES
INICIO
Infvector(k, z)
FIN_SI

FIN_PARA
FIN_PARA
HASTA QUE (vector(k, z)=vector[MaxFil][MaxCol])

ESCRIBIR ”El valor más bajo de la imagen es: “, Inf)


ESCRIBIR
DEVOLVER Inf
FIN

Autor: Alberto Olid Sampedro 3


Trabajo de Informática

PROCEDIMIENTO Colores(vector)
ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
SALIDA: Numeros: ARRAY[1..256] de ENTEROS, vector donde se almacenarán los colores que
formal la imagen.
VARIABLES: k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.
i: ENTERO, parámetro para recorrer las columnas del vector para almacenar los valores
del Array.
Contador: ENTERO, parámetro donde se almacenará los colores que aparecen en el
Array.
Suma: ENTERO, parámetro donde se almacenará las veces que un color aparece en el
Array.
Option: ENTERO, parámetro que indica la opción del menú seleccionada.

INICIO
REPETIR

ESCRIBIR
ESCRIBIR ”El programa le ofrece la posibilidad de realizar cualquiera de las siguientes”
ESCRIBIR ”operaciones:”
ESCRIBIR
ESCRIBIR ”1.- El programa muestra los colores que conforman la imagen.”
ESCRIBIR ”2.- El programa muestra los colores que aparecen en la imagen”
ESCRIBIR ” y las veces que están contenidos en ella.”
ESCRIBIR ”0.- Pulse 0 si desea volver al menú principal del programa.”
ESCRIBIR
ESCRIBIR ”Indique la operación que desea realizar con el programa.”
LEER Option
EN CASO DE QUE Option VALGA
1:
INICIO
PARA i=1 HASTA 256 CON INCREMENTO DE 1 HACER
INICIO
Numeros(i)-2
FIN_PARA
PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER
INICIO
PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER
INICIO
SI (vector(k, z)=0)
ENTONCES
INICIO
i256
FIN_SI

SI NO
INICIO
ivector(k, z)

Autor: Alberto Olid Sampedro 4


Trabajo de Informática

FIN_SI

MIENTRAS Numeros(i)╪vector(k, z) HACER


INICIO
Numeros(i)vector(k, z)

FIN_MIENTRAS
FIN_PARA
FIN_PARA
PARA i=1 HASTA 256 CON INCREMENTO DE 1 HACER
INICIO
SI (Numeros(i)≥0)
ENTONCES

INICIO
ESCRIBIR
ESCRIBIR ”La imagen contiene al color: ”, Numeros(i),”.”
FIN_SI

FIN_PARA
ESCRIBIR
ESCRIBIR
ESCRIBIR “Pulse una tecla para continuar.”
LEER
FIN
2:
INICIO
PARA Contador=0 HASTA 255 CON INCREMENTO HACER
INICIO
Suma0
PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER
INICIO
PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER
INICIO
SI (Contador=vector(k, z))
ENTONCES
INICIO
SumaSuma+1
FIN_SI
FIN_PARA
FIN_PARA
SI (Suma╪0)
ENTONCES
INICIO

Autor: Alberto Olid Sampedro 5


Trabajo de Informática

ESCRIBIR
ESCRIBIR “El color ”, Contador,” se repite ”, Suma,” veces.”
FIN_SI
FIN_PARA
ESCRIBIR
ESCRIBIR
ESCRIBIR “Pulse una tecla para continuar.”
LEER
FIN
FIN_CASO
HASTA QUE Option=0
FIN

FUNCIÓN Combinacion(vector, Inf): ENTERO


ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
Inf: ENTERO, parámetro donde se almacenará el valor mínimo del Array.
SALIDA: Un entero que representa el valor de los elementos del Array, una vez modificado éste.
VARIABLES: vector(k, z): ENTERO, parámetro que representa el elemento del Array en la posición
(k,z).
k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

INICIO
PARA k2 HASTA MaxFil-1 CON INCREMENTO DE 1 HACER
INICIO
PARA z2 HASTA MaxCol-1 CON INCREMENTO DE 1 HACER
INICIO
vector(k, z)vector(k, z)+Inf
FIN_PARA
FIN_PARA
ESCRIBIR “La matriz final queda de la siguiente forma:”
ESCRIBIR
Mostrar(vector)Inf

DEVOLVER vector(k, z)
FIN

PROCEDIMIENTO Coordenadas(vector)
ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la
imagen introducida a analizar por el programa.
SALIDA: Media: REAL, parámetro donde se almacenará la media de los valores del Array.
VARIABLES: k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

Autor: Alberto Olid Sampedro 6


Trabajo de Informática

Suma: ENTERO, parámetro donde se almacenará la suma de todos los elementos del
Array.

INICIO
Suma0

PARA k1 HASTA MaxFil CON INCREMENTO DE 1 HACER


INICIO
PARA z1 HASTA MaxCol CON INCREMENTO DE 1 HACER
INICIO
SumaSuma+vector(k, z)
FIN_PARA
FIN_PARA
Media(Suma)/(MaxFil*MaxCol)
ESCRIBIR “El valor medio es: ”, Media
ESCRIBIR
ESCRIBIR “Las coordenadas de los puntos que no están en el borde y tienen”
ESCRIBIR “un valor inferior a la media son:”
ESCRIBIR
PARA k2 HASTA MaxFil-1 CON INCREMENTO DE 1 HACER
INICIO
PARA k2 HASTA MaxFil-1 CON INCREMENTO DE 1 HACER
INICIO
SI (vector(k, z)<Media)
ENTONCES
INICIO
ESCRIBIR “(”, k,”,”, z,”)”
FIN_SI
FIN_PARA
FIN_PARA
ESCRIBIR
FIN

(* Programa Principal *)
ALGORITMO Fotochopped
CONSTANTES: MaxFil3
MaxCol3

ENTRADA: vector: ARRAY[1..MaxFil][1..MaxCol] de ENTEROS, parámetro que representa la


imagen introducida a analizar por el programa.
SALIDA: Inf: ENTERO, parámetro donde se almacenará el valor mínimo del Array.
vector(k, z): ENTERO, parámetro donde se suma el valor inferior al valor propio del
elemento, siempre que éste no esté en los bordes del Array.
Media: REAL, parámetro donde se almacenará la media de los valores del Array.
VARIABLES: k: ENTERO, parámetro para recorrer las filas del Array.
z: ENTERO, parámetro para recorrer las columnas del Array.

Autor: Alberto Olid Sampedro 7


Trabajo de Informática

Opcion: ENTERO, parámetro que indica la opción del menú seleccionada.

INICIO
Escribir(vector)
Mostrar(vector)

REPETIR

ESCRIBIR “El programa le ofrece la posibilidad de realizar cualquiera de las siguientes”


ESCRIBIR “operaciones:”
ESCRIBIR
ESCRIBIR “1.- El programa devuelve el valor más bajo de la imagen”
ESCRIBIR “ introducida”
ESCRIBIR “2.- El programa crea una matriz con los colores usados por”
ESCRIBIR “ la imagen y otra con el número de veces que ese color aparece”
ESCRIBIR “ en la imagen.”
ESCRIBIR “3.- El programa suma, a todos los elementos de la imagen que no”
ESCRIBIR “ estén en los bordes, el valor más bajo de la imagen.”
ESCRIBIR “4.- El programa muestra las coordenadas de los valores que no están”
ESCRIBIR “ en los bordes de la imagen y tienen un valor inferior al de la”
ESCRIBIR “ media”
ESCRIBIR “0.- Pulse 0 si no desea realizar ninguna opción del programa.”
ESCRIBIR “”
ESCRIBIR “Indique la operación que desea realizar con el programa.”
LEER Opcion
EN CASO DE QUE Opcion VALGA
1:
INICIO
ESCRIBIR
InfValor_Inferior(vector)
ESCRIBIR
ESCRIBIR “Pulse una tecla para volver al menú.”
LEER
FIN
2:
INICIO
ESCRIBIR
Colores(vector)
ESCRIBIR
ESCRIBIR “Pulse una tecla para volver al menú.”
LEER
FIN
3:
INICIO
ESCRIBIR
vector(k, z)Combinacion(vector, Valor_Inferior(vector))
ESCRIBIR
ESCRIBIR “Pulse una tecla para volver al menú.”
LEER
FIN
4:
INICIO

Autor: Alberto Olid Sampedro 8


Trabajo de Informática

ESCRIBIR
Coordenadas(vector)
ESCRIBIR
ESCRIBIR “Pulse una tecla para volver al menú.”
LEER
FIN
FIN_CASO
ESCRIBIR
HASTA QUE Opcion=0
ESCRIBIR “Pulse INTRO para salir del programa.”
LEER
FIN

Autor: Alberto Olid Sampedro 9


Trabajo de Informática

------------------------------------------------Código------------------------------------------------

Program Fotochopped;

Uses Crt;

Const
MaxFil=3;
MaxCol=3;

Type
a=Array[1..MaxFil,1..MaxCol] of Integer;
b=Array[1..256] of Integer;

Var
k,z,Inf,Opcion: Integer;
vector: a;

{----------------------------------------------------------------------------}

Procedure Escribir(var vector:a);

Var
k,z: Integer;

Begin

For k:=1 To MaxFil Do


Begin

For z:=1 To MaxCol Do


Begin

Repeat
writeln('Introduzca un valor, para el elemento la imagen, comprendido entre 0
y 255.'); {Se le pide al usuario que introduzca los valores de la
imagen en la matriz}
readln(vector[k][z]);
writeln;

If ((vector[k][z] > 255) Or (vector[k][z] < 0))


Then
Begin
writeln('El número introducido no es válido. Por favor, escriba un valor');
writeln('dentro del rango aceptado.');
writeln;
End;

Until ((vector[k][z] >= 0) and (vector[k][z] <= 255));

Autor: Alberto Olid Sampedro 10


Trabajo de Informática

End;

End;

writeln;
End;

{----------------------------------------------------------------------------}

Procedure Mostrar(var vector:a);

Var
k,z: Integer;

Begin

For k:=1 To MaxFil Do


Begin

For z:=1 To MaxCol Do


Begin
write(vector[k][z]); {Escribe la matriz en la pantalla}
write(' ');
End;

writeln;
End;

writeln;
writeln;
End;

{----------------------------------------------------------------------------}

Function Valor_Inferior(var vector:a): Integer;

Var
k,z,Inf: Integer;

Begin

Inf:=vector[1][1]; {Mínimo valor introducido en la matriz}

Repeat

For k:=1 To MaxFil Do


Begin

For z:=1 To MaxCol Do

Autor: Alberto Olid Sampedro 11


Trabajo de Informática

Begin

If vector[k,z] < Inf


Then
Begin
Inf:=vector[k][z]; {Si el valor del elemento a[i,j] es menor que el de Inf,
éste último pasará a valer lo del primero}
End;

End;

End;

Until vector[k][z]=vector[MaxFil][MaxCol]; {Se repite la búsqueda del valor


mínimo hasta que ya se hayan
comparado todos los elementos de la
matriz}

writeln('El valor más bajo de la imagen es: ', Inf); {Escribe en la pantalla el valor
mínimo de la matriz}
writeln;
Valor_Inferior:= Inf;
End;

{----------------------------------------------------------------------------}

Procedure Colores(var vector:a); {El procedimiento mostrará los colores que aparecen
en la imagen y cuantas veces está presente en ella}

Var
k,z,i,Option,Contador,Suma: Integer;
Numeros: b;

Begin

Repeat

writeln;
writeln('El programa le ofrece la posibilidad de realizar cualquiera de las
siguientes');
writeln('operaciones:');
writeln;
writeln('1.- El programa muestra los colores que conforman la imagen.');
writeln('2.- El programa muestra los colores que aparecen en la imagen');
writeln(' y las veces que están contenidos en ella.');
writeln('0.- Pulse 0 si desea volver al menú principal del programa.');
writeln;
writeln('Indique la operación que desea realizar con el programa.');
readln(Option);

Autor: Alberto Olid Sampedro 12


Trabajo de Informática

Case Option Of
1:
Begin

For i:=1 To 256 Do {Es hasta 256 porque el rango de la imagen es 0-255, lo
que indica que puede haber 256 valores distintos}
Begin
Numeros[i]:=-2; {Inicializa el vector de almacenamiento "Números" en -2,
ya que en la imagen puede haber valores 0}
End;

For k:=1 To MaxFil Do {Recorre la matriz de la imagen para seleccionar los


valores}
Begin

For z:=1 To MaxCol Do


Begin

If vector[k][z]=0
Then
Begin
i:=256;
End

Else
Begin
i:=vector[k][z];
End;

While Numeros[i]<>vector[k][z] Do {Compara el valor de la imagen en


una determinada posición con el
valor del vector "Numeros" en la
posición del mismo valor}
Begin
Numeros[i]:=vector[k][z]; {Si el valor del vector en la posición que
indica el valor de la imagen es -2 (lo
inicializamos con ese valor), pasa a ser
igual al valor de la imagen en esa
posición}
{De esta forma se sitúa el color 1 de la
imagen en la posición 1 del vector, el color
2 en la posición 2... y así sucesivamente,
menos el 0, que se corresponderá con la
posición 256}
End;

End;

End;

Autor: Alberto Olid Sampedro 13


Trabajo de Informática

For i:=1 To 256 Do {En esta parte, recorremos el vector "Numeros" para
mostrar en pantalla los colores que conforman la imagen
de la matriz}
Begin

If Numeros[i]>=0
Then
Begin
writeln;
writeln('La imagen contiene al color: ', Numeros[i],'.');
End;

End;

writeln;
writeln;
writeln('Pulse una tecla para continuar.');
readln;
End;
2:
Begin

For Contador:=0 To 255 Do {En esta parte se mostrarán los colores que
conforman la matriz y las veces que aparecen en
ella}
Begin

Suma:=0;
For k:=1 To MaxFil Do
Begin

For z:=1 To MaxCol Do


Begin

If (Contador=vector[k][z]) {Así contamos sólo aquellos valores de la


imagen que se corresponden con el del
Contador. Contamos los valores uno a
uno}
Then
Begin
Suma:=Suma+1; {Se incrementan las veces que está ese vector en
1 (partimos desde 0) para obtener el total de
apariciones en la imagen del color}
End;

End;

End;

Autor: Alberto Olid Sampedro 14


Trabajo de Informática

If Suma<>0 {Aquí es donde mostramos por pantalla los colores existentes


en la imagen y las veces que aparecen}
{Ponemos la condición de que Suma sea distinto de 0 para
mostrar sólo aquellos colores que conforman la imagen}
{Nótese que seleccionamos "Suma" para la condición. No se
puede poner para ello "Contador", pues el 0 también es un color
que puede formar parte de la imagen}
Then
Begin
writeln;
writeln('El color ', Contador,' se repite ', Suma,' veces.');
End;

End;

writeln;
writeln;
writeln('Pulse una tecla para continuar.');
readln;
End;

End;

Until Option=0;
End;

{----------------------------------------------------------------------------}

Function Combinacion(var vector:a; Inf:Integer): Integer; {La función sumará, a todos


los elementos que no
estén el los extremos, el
menor valor de la matriz}

Begin

For k:=2 To MaxFil-1 Do {Para evitar las filas de los extremos, comenzamos el
bucle a partir de la segunda fila y lo finalizamos en la
penúltima fila}
Begin

For z:=2 To MaxCol-1 Do {Para evitar las columnas de los extremos,


comenzamos el bucle a partir de la segunda columna
y lo finalizamos en la penúltima columna}
Begin
vector[k][z]:=vector[k][z]+Inf; {A cada elemento de la matriz, que esté
situado en el extremo de la misma, le sumamos
el menor valor que contiene ésta}
End;

End;

Autor: Alberto Olid Sampedro 15


Trabajo de Informática

writeln('La matriz final queda de la siguiente forma:');


writeln;

Mostrar(vector); {Muestra en pantalla la matriz final}

Combinacion:= vector[k][z];
End;

{----------------------------------------------------------------------------}

Procedure Coordenadas(var vector:a); {Este procedimiento debe mostrar por pantalla


las coordenadas de aquellos valores de la
matriz que, no estando en el borde, sean
inferiores a la media}

Var
Media: Real;
Suma,k,z: Integer;

Begin

Suma:=0; {Como "Suma" es un contador,la igualamos a 0 antes de comenzar el


bucle}

For k:=1 To MaxFil Do


Begin

For z:=1 To MaxCol Do


Begin
Suma:=Suma+vector[k][z]; {"Suma" pasa a tener el valor anterior más el del
elemento de la matriz por el que vaya el bucle}
End;

End;

Media:=(Suma)/(MaxFil*MaxCol); {"Media" es el resultado de dividir "Suma"


entre el máximo de filas por el de columnas,
ya que estos últimos indican el total de
elementos que posee la matriz}
writeln('El valor medio es: ', Media:3:4);
writeln;
writeln('Las coordenadas de los puntos que no están en el borde y tienen');
writeln('un valor inferior a la media son:');
writeln;

For k:=2 To MaxFil-1 Do


Begin

For z:=2 To MaxCol-1 Do

Autor: Alberto Olid Sampedro 16


Trabajo de Informática

Begin

If vector[k][z] < Media


Then
Begin
writeln('(',k,',',z,')'); {Aquí se muestran por pantallas las coordenadas de los
puntos que tienen un valor inferior al de la media y no
están en el borde}
End;

End;

End;

writeln;
End;

{----------------------------------------------------------------------------}

Begin

ClrScr;

Escribir(vector);
Mostrar(vector);

Repeat

writeln('El programa le ofrece la posibilidad de realizar cualquiera de las siguientes');


writeln('operaciones:');
writeln;
writeln('1.- El programa devuelve el valor más bajo de la imagen');
writeln(' introducida.');
writeln('2.- El programa crea una matriz con los colores usados por la');
writeln(' imagen y otra con el número de veces que ese color aparece en');
writeln(' la imagen.');
writeln('3.- El programa suma, a todos los elementos de la imagen que no');
writeln(' estén en los bordes, el valor más bajo de la imagen.');
writeln('4.- El programa muestra las coordenadas de los valores que no están');
writeln(' en los bordes de la imagen y tienen un valor inferior al de la');
writeln(' media.');
writeln('0.- Pulse 0 si no desea realizar ninguna opción del programa.');
writeln;
writeln('Indique la operación que desea realizar con el programa.');
readln(Opcion);

Case Opcion Of
1:
Begin
writeln;

Autor: Alberto Olid Sampedro 17


Trabajo de Informática

Inf:= Valor_Inferior(vector); {Llama a la función para que averigüe cuál es el


valor mínimo de los elementos de la matriz}
writeln;
writeln('Pulse una tecla para volver al menú.');
readln;
End;
2:
Begin
writeln;
Colores(vector);
writeln;
writeln('Pulse una tecla para volver al menú.'); {Llama al procedimiento para
que indique qué colores forman
parte de la imagen y cuantas
veces aparecen en ella}
readln;
End;
3:
Begin
writeln;
vector[k][z]:= Combinacion(vector, Valor_Inferior(vector)); {Llama a la
función para que
le sume el valor
más bajo de los
elementos de la
matriz a aquellos
valores que no
están en los bordes
de la misma}
writeln('Pulse una tecla para volver al menú.');
readln;
End;
4:
Begin
writeln;
Coordenadas(vector); {Llama a la función para que muestre por pantalla las
coordenadas de aquellos elementos de la matriz que
tienen un valor más bajo que la media}
writeln;
writeln('Pulse una tecla para volver al menú.');
readln;
End;

End;

writeln;

Until Opcion=0;
writeln('Pulse INTRO para salir del programa.');
readln;

Autor: Alberto Olid Sampedro 18


Trabajo de Informática

End.

-------------------------------------Ejecutando el Programa-------------------------------------

El programa comienza pidiendo los valores (de 0 a 255) de la matriz de la imagen:

A continuación, le será mostrada la matriz de la imagen para que compruebe que los
colores introducidos son los correctos (A) y un menú para elegir la operación que desee
realizar con el programa (B):

Autor: Alberto Olid Sampedro 19


Trabajo de Informática

Si elegimos la opción 1, el programa mostrará el valor más bajo de la matriz:

Si seleccionamos la opción 2, podremos elegir entre otras dos opciones:

Autor: Alberto Olid Sampedro 20


Trabajo de Informática

La opción 1 muestra los colores que aparecen en la imagen; la 2 muestra los colores que
forman la imagen y las veces que aparecen en ella:

Opción 1)

Opción 2)

Pulsando 0 el programa vuelve al menú principal.

Autor: Alberto Olid Sampedro 21


Trabajo de Informática

Ahora, si escogemos la opción 3, el programa sumará el valor mínimo de los elementos


de la matriz a todos aquellos que no pertenecen al borde de la matriz y mostrará la
imagen resultante:

La cuarta opción hace que el programa muestre las coordenadas de aquellos valores de
la imagen que son menores de la media y que no están en el borde de la imagen:

Al finalizar cada opción, se debe pulsar cualquier tecla para continuar con la ejecución
del programa.

Autor: Alberto Olid Sampedro 22


Trabajo de Informática

Para salir de cualquier menú hay que marcar la opción 0:

Este programa ha sido realizado por:


Alberto Olid Sampedro.

Autor: Alberto Olid Sampedro 23