Вы находитесь на странице: 1из 24

Trabajo de Informática

Trabajo de Informática Realizado por: Alberto Olid Sampedro. 1º I.T.I. Mecánica. Autor: Alberto Olid Sampedro 0
Trabajo de Informática Realizado por: Alberto Olid Sampedro. 1º I.T.I. Mecánica. Autor: Alberto Olid Sampedro 0

Realizado por:

Alberto Olid Sampedro. 1º I.T.I. Mecánica.

Trabajo de Informática Realizado por: Alberto Olid Sampedro. 1º I.T.I. Mecánica. Autor: Alberto Olid Sampedro 0
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).

que hacer para realizar una determinada función y un ejemplo de prueba con datos). Autor: Alberto
que hacer para realizar una determinada función y un ejemplo de prueba con datos). Autor: Alberto

Trabajo de Informática

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

PROCEDIMIENTO

(vector ) vector)

ENTRADA vector: ARRAY[1

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

MaxFil][1

MaxCol]

de ENTEROS, parámetro que representa la

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 valorESCRIBIR 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) Mostrar( vector

ENTRADA: vector: ARRAY[1

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

MaxFil][1

MaxCol]

de ENTEROS, parámetro que representa la

PARA k=1 HASTA MaxFil CON INCREMENTO DE 1 HACER

INICIO

PARA z=1 HASTA MaxCol CON INCREMENTO DE 1 HACER

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

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

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.

MaxFil][1

MaxCol]

de ENTEROS, parámetro que representa la

INICIO

Infvector(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

Infvector(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

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

Trabajo de Informática

PROCEDIMIENTO

Colores
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

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

256]

de ENTEROS, vector donde se almacenarán los colores que

REPETIR

ESCRIBIR

ESCRIBIR El programa le ofrece la posibilidad de realizar cualquiera de las siguientesESCRIBIR 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

i256

FIN_SI

SI NO

INICIO

ivector(k, z)

( k , z ) = 0 ) ENTONCES INICIO i  256 FIN_SI SI NO
( k , z ) = 0 ) ENTONCES INICIO i  256 FIN_SI SI NO

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

Suma0

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

SumaSuma+1

FIN_SI

FIN_PARA

FIN_PARA

SI (Suma0)

ENTONCES

INICIO

INICIO Suma  Suma + 1 FIN_SI FIN_PARA FIN_PARA SI ( Suma ╪ 0 ) ENTONCES
INICIO Suma  Suma + 1 FIN_SI FIN_PARA FIN_PARA SI ( Suma ╪ 0 ) ENTONCES

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

MaxCol]

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

ENTRADA: vector: ARRAY[1

MaxFil][1

de ENTEROS, parámetro que representa la

PARA k2 HASTA MaxFil-1 CON INCREMENTO DE 1 HACER

INICIO

PARA z2 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
ESCRIBIR
Mostrar
(vector)Inf

DEVOLVER vector(k, z)

FIN

PROCEDIMIENTO

Coordenadas

(vector)

ENTRADA: vector: ARRAY[1

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.

MaxFil][1

MaxCol]

de ENTEROS, parámetro que representa la

las columnas del Array. MaxFil ][1 MaxCol ] de ENTEROS, parámetro que representa la Autor: Alberto
las columnas del Array. MaxFil ][1 MaxCol ] de ENTEROS, parámetro que representa la Autor: Alberto

Trabajo de Informática

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

INICIO

Suma0

PARA k1 HASTA MaxFil CON INCREMENTO DE 1 HACER

INICIO

PARA z1 HASTA MaxCol CON INCREMENTO DE 1 HACER

INICIO

SumaSuma+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 tienenESCRIBIR un valor inferior a la media son:

ESCRIBIR

PARA k2 HASTA MaxFil-1 CON INCREMENTO DE 1 HACER

INICIO

PARA k2 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

CONSTANTES: MaxFil3

MaxCol3

Fotochopped

ENTRADA: vector: ARRAY[1

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.

MaxFil][1

MaxCol]

de ENTEROS, parámetro que representa la

las columnas del Array. MaxFil ][1 MaxCol ] de ENTEROS, parámetro que representa la Autor: Alberto
las columnas del Array. MaxFil ][1 MaxCol ] de ENTEROS, parámetro que representa la Autor: Alberto

Trabajo de Informática

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

INICIO

Escribir (vector) Mostrar (vector) REPETIR
Escribir
(vector)
Mostrar
(vector)
REPETIR

ESCRIBIR El programa le ofrece la posibilidad de realizar cualquiera de las siguientesESCRIBIR operaciones:

ESCRIBIR

ESCRIBIR 1.- El programa devuelve el valor más bajo de la imagen

ESCRIBIR introducidaESCRIBIR 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 noESCRIBIR 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ú.”
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
ESCRIBIR ESCRIBIR “Pulse una tecla para volver al menú.” LEER FIN 4: INICIO Autor: Alberto Olid
ESCRIBIR ESCRIBIR “Pulse una tecla para volver al menú.” LEER FIN 4: INICIO Autor: Alberto Olid

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

HASTA QUE Opcion = 0 ESCRIBIR “ Pulse INTRO para salir del programa. ” LEER FIN
HASTA QUE Opcion = 0 ESCRIBIR “ Pulse INTRO para salir del programa. ” LEER FIN

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));

writeln; End ; Until ((vector[k][z] >= 0 ) and (vector[k][z] <= 255 )); Autor: Alberto Olid
writeln; End ; Until ((vector[k][z] >= 0 ) and (vector[k][z] <= 255 )); Autor: Alberto Olid

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

en la matriz} Repeat For k:= 1 To MaxFil Do Begin For z:= 1 To MaxCo
en la matriz} Repeat For k:= 1 To MaxFil Do Begin For z:= 1 To MaxCo

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('

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);

y las veces que están contenidos en ella.');

el programa.' ); readln(Option); y las veces que están contenidos en ella.' ); Autor: Alberto Olid
el programa.' ); readln(Option); y las veces que están contenidos en ella.' ); Autor: Alberto Olid

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

End;

End;

End;

2 en la posición 2

menos el 0, que se corresponderá con la

posición 256}

y así sucesivamente,

2 menos el 0, que se corresponderá con la posición 256} y así sucesivamente, Autor: Alberto
2 menos el 0, que se corresponderá con la posición 256} y así sucesivamente, Autor: Alberto

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;

desde 0) para obtener el total de apariciones en la imagen del color} End ; End
desde 0) para obtener el total de apariciones en la imagen del color} End ; End

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;

en el extremo de la misma, le sumamos el menor valor que contiene ésta} End ;
en el extremo de la misma, le sumamos el menor valor que contiene ésta} End ;

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

son:' ); writeln; For k:= 2 To MaxFil- 1 Do Begin For z:= 2 To MaxCol-
son:' ); writeln; For k:= 2 To MaxFil- 1 Do Begin For z:= 2 To MaxCol-

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('

writeln('4.- El programa muestra las coordenadas de los valores que no están');

writeln('

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);

estén en los bordes, el valor más bajo de la imagen.');

en los bordes de la imagen y tienen un valor inferior al de la');

Case Opcion Of

1:

Begin

writeln;

imagen y tienen un valor inferior al de la' ); Case Opcion Of 1 : Begin
imagen y tienen un valor inferior al de la' ); Case Opcion Of 1 : Begin

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;

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

Trabajo de Informática

End.

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

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

pidiendo los valores (de 0 a 255) de la matriz de la imagen: A continuación, le

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):

(A) y un menú para elegir la operación que desee realizar con el programa (B): Autor:
(A) y un menú para elegir la operación que desee realizar con el programa (B): Autor:
(A) y un menú para elegir la operación que desee realizar con el programa (B): Autor:

Trabajo de Informática

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

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

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

de la matriz: Si seleccionamos la opción 2, podremos elegir entre otras dos opciones: Autor: Alberto
de la matriz: Si seleccionamos la opción 2, podremos elegir entre otras dos opciones: Autor: Alberto
de la matriz: Si seleccionamos la opción 2, podremos elegir entre otras dos opciones: Autor: Alberto

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)

la imagen y las veces que aparecen en ella: Opción 1) Opción 2) Pulsando 0 el

Opción 2)

y las veces que aparecen en ella: Opción 1) Opción 2) Pulsando 0 el programa vuelve

Pulsando 0 el programa vuelve al menú principal.

en ella: Opción 1) Opción 2) Pulsando 0 el programa vuelve al menú principal. Autor: Alberto
en ella: Opción 1) Opción 2) Pulsando 0 el programa vuelve al menú principal. Autor: Alberto

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:

al borde de la matriz y mostrará la imagen resultante: La cuarta opción hace que el

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:

de la media y que no están en el borde de la imagen: Al finalizar cada

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

opción, se debe pulsar cualquier tecla para continuar con la ejecución del programa. Autor: Alberto Olid
opción, se debe pulsar cualquier tecla para continuar con la ejecución del programa. Autor: Alberto Olid

Trabajo de Informática

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

Para salir de cualquier menú hay que marcar la opción 0: Este programa ha sido realizado

Este programa ha sido realizado por:

Alberto Olid Sampedro.

que marcar la opción 0: Este programa ha sido realizado por: Alberto Olid Sampedro. Autor: Alberto
que marcar la opción 0: Este programa ha sido realizado por: Alberto Olid Sampedro. Autor: Alberto