[ Foro de Pascal ]

leer matriz

26-Feb-2014 12:43
Invitado (rocioJ)
5 Respuestas

hola buenas, soy nueva en esto de la programacion y buscando ayuda encontre este foro esper puedan ayudarme en mi problema.
necesito leer una matriz de 2xN ( 2 filas y N columnas), pero debe cumplirse que la primera fila este formada por enteros positivos y la segunda por enteros entre 1 y N,
Normalmente he leido por teclado matrices con valores que introduce el usuario, de esta forma


     for i:=1 to M do
      for j:=1 to N do
       begin
        write('elemento[', i, ' ',j, ']: ');
        readln(A[i,j]);
    end;


pero claro asi como me lo pide el programa no se como hacerlo pues para cada fila especifica un contenido de valores diferentes, espero puedan ayudarme.desde caracas, venezuela gracias


26-Feb-2014 14:51
Invitado (rocioJ)

Me refiero a como validar para que tanto la primera y segunda fila cumplan con lo requerido, gracias


26-Feb-2014 23:16
Nacho Cabanes (+84)

Cada "readLn" debería estar encerrado en un "repeat..until" que no permita salir hasta que el valor sea aceptable.

Por ejemplo, si los valores debieran estar entre 10 y, 15 podrías hacer:


repeat
    readln(A[i,j]);
until (A[i,j] >= 10) and (A[i,j] <= 15);


(lo habitual es incluir también un "if" que avise al usuario de que ha introducido un dato incorrecto, de modo que el programa resulte más amigable.


27-Feb-2014 00:01
Invitado (rocioJ)

ok profesor, pero y si la matriz fuera de mas filas, en ese caso seria conveniente un case por cada valor de i, o habria una forma mas compacta o reducida de hacerlo, imaginate si la matriz fuera de 4 filas, como podria hacer para cada pasada de i que se manejaran condiciones distintas para  cada fila o necesariamente tendria que hacerse a traves de if o de case para cada pasada del for i???  gracias por tu respuesta y ayuda


27-Feb-2014 00:20
Nacho Cabanes (+84)

No necesitas ningún "case". Es simplemente un "if" (muy similar al "until"), que diga algo como "El valor introducido no es correcto, debe estar entre 1 y N", para que el usuario entienda por qué se le vuelve a pedir que lo introduzca.

Ese "repeat" no es más que una "entrada de datos mejorada", así que en tu programa original iría dentro del doble "for" anidado.


27-Feb-2014 14:53
Invitado (rocioJ)

ah ok profesor ahora lo entiendo gracias.muy bueno el foro, he leido que inicias un nuevo curso y quiero unirme a el que debo hacer? me gustaria saber si vas a tocar el tema de graficos pues al final de curso el proyecto sera un juego grafico, vas a realizar algun juego en el curso, seria interesante, dicen que a traves de juegos se aprende a programar mucho.espero noticias gracias






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)