Array bidimensional

De Ejercicios

Contenido

Enunciado

Un terreno puede representarse mediante un array bidimensional en el que los indices del array representan las coordenadas enteras (x,y) y el valor almacenado en la posición (x,y) del array representa la altura del terreno en dichas coordenadas.

Realizar los siguientes apartados:

a) Un sugalgoritmo al que se le pase un array que representa un terreno y un valor lógico que indique si lo que queremos realizar es la lectura del array o lo que queremos es mostrar por pantalla dicho array y actúe en consecuencia.

b) Un subalgoritmo que se le pase un terreno representado mediante un array y obtenga en otro array el terreno invertido, por ejemplo, si las cotas estan comprendidas en el intervalo 23-530, la cota 530 debe cambiarla a la cota 23, la 529 debe cambiarse a 24, la 528 a la 25 y asi sucesivamente.

Soluciones

Diseño en pseudocódigo

Apartado a

 PROCEDIMIENTO LeerEscribir (VAR Terreno, VAR nf, VAR nc, tipo)
 ENTRADAS: 
    tipo: LOGICO  (* VERDAD si se utiliza el procedimiento para lectura de datos y
                     FALSO si se utiliza para escritura de datos *)
    Terreno: ARRAY (1..1000, 1..1000) DE REALES  (* Altura de los distintos puntos de un terreno *)
    nf, nc: ENTEROS    (* Número de filas y de columnas de Terreno *)
 SALIDAS:
    (* Ninguna si tipo=FALSO *)
    Terreno: ARRAY (1..1000, 1..1000) DE REALES  (* Altura de los distintos puntos de un terreno *)
    nf, nc: ENTEROS    (* Número de filas y de columnas de Terreno *)
 VARIABLES:
    i, j: ENTEROS.
 INICIO
    SI tipo ENTONCES
       ESCRIBIR "Introduzca las dimensiones del terreno:"
       LEER nf, nc
       PARA i<--1 HASTA nf HACER
          PARA j<--1 HASTA nc HACER
             ESCRIBIR "Introduzca la posición (", i, ",", j, ") del terreno:"
             LEER Terreno(i,j)
          FIN_PARA
       FIN_PARA
    SI_NO
       PARA i<--1 HASTA nf HACER
          PARA j<--1 HASTA nc HACER
             ESCRIBIR "Posicion (", i, ",", j, "):", Terreno(i,j)
          FIN_PARA
       FIN_PARA
    FIN_SI
 FIN

Apartado b

 PROCEDIMIENTO Invierte (Terreno, nf, nc, VAR Invertido)
 ENTRADAS:
    Terreno: ARRAY (1..1000, 1..1000) DE REALES   (* Altura de los distintos puntos de un terreno *)
    nf, nc: ENTEROS     (* Número de filas y de columnas de Terreno *)
 SALIDAS:
    Invertido: ARRAY (1..1000, 1..1000) DE REALES  (* Altura de los distintos puntos del terreno de entrada pero invertidas *)
 VARIABLES:
    i, j: ENTEROS
    max,min: REALES
 INICIO
    (* Encontrar el mayor y menor valor de altura del terreno *)
    max<--Terreno(1,1)
    min<--Terreno(1,1)
    PARA i<--1 HASTA nf HACER
       PARA j<--1 HASTA nc HACER
          SI Terreno(i,j)>max ENTONCES
             Max<--Terreno(i,j)
          FIN_SI
          SI Terreno(i,j)<min ENTONCES
             Min<--Terreno(i,j)
          FIN_SI
       FIN_PARA
    FIN_PARA
 
    (* Invertir los valores del terreno *)
    PARA i<--1 HASTA nf HACER
       PARA j<--1 HASTA nc HACER
          Invertido(i,j)<--max-(Terreno(i,j)-min)
       FIN_PARA
    FIN_PARA
 FIN
Tipos de soluciones