[ Foro de Pascal ]

duda: validar entrada

03-Apr-2014 10:50
Invitado (nain)
4 Respuestas

hola foro.
podrian indicarme en caso de tener que validar cada entrada por fila de una matriz de 2*2 mas que todo por validar porejemplo rangos que deba cumplir cada valor de sus filas ,de momento no debo hacerlo con registros,cual seria la mejor opcion, por ejemplo estaria correcto o eficiente preguntar algo asi:


for i;=1 to M do
 case i of
  1: begin
       for j:=1 to N do
         repeat

         until  condicion;
 2: begin
      for j:=1 to N do
         repeat

         until  condicion;


podrian orientarme, gracias


04-Apr-2014 00:23
Nacho Cabanes (+83)

No acabo de entender la pregunta... ¿quieres saber qué debería aparecer en lugar de "condición"?

Y no está correcto del todo: es innecesario ese "case", porque en los dos casos estás comprobando la misma condición.


06-Apr-2014 15:26
Invitado (nain)

profesor buenas,
no profesor la idea es que presisacmnte las condiciones para cada fila sean distintas, quiza en mi estructura de ejemplo lo veas asi("porque en los dos casos estás comprobando la misma condición. ") pero la idea es que existen dos validadaciones por cada una de las dos filas de la matrz (2*2), asi que lo que quiero saber no es " ¿quieres saber qué debería aparecer en lugar de "condición"? " sino mas bien la parte del case sabiendo que las condiciones para los elementos de cada una de las dos filas de la matriz son diferentes, queria enntonces saber si en ese caso si es correcto utilizar el case o si hay alguna forma mas eficiente de validar los valores de cada fila en caso de una matriz de 2*2, espero haberme hecho entender, y gracias por tu ayuda


06-Apr-2014 23:16
Nacho Cabanes (+83)

En ese caso, el "case" es más ineficiente (e incluso más largo) que incluir el código de validación cada una de las líneas sin "case", uno tras otro.

Es decir, si tu propuesta original era algo como


for i:=1 to M do
 case i of
  1: begin
       for j:=1 to N do
         repeat
             matriz[i,j] := ...
         until  condicion;
 2: begin
      for j:=1 to N do
         repeat
             matriz[i,j] := ...
         until  condicion;


Sería más compacto y más rápido hacer:


for j:=1 to N do
    repeat
        matriz[1,j] := ...
    until  condicion;

for j:=1 to N do
    repeat
        matriz[2,j] := ...
    until  condicion;



07-Apr-2014 12:29
Invitado (nain)

buen dia profesor, gracias inmensas , has resuelto exactamente mi duda, era algo que en los ejercicios tenia gran duda respecto a eficiencia, pues hacerse como lo hago supongo que es valido pues de alguna manera hace lo que se pide pero gracias a ti ahora se que es mas eficiente y compacta tu propuesta.gracias por aclararmelo






(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.)