• Jueves 28 de Marzo de 2024, 15:26

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - i77

Páginas: [1]
1
Pascal / Re: Validar datos en pascal
« en: Martes 6 de Agosto de 2002, 20:04 »
Hola, soy nuevo en pascal y en otro foro preguntaron esto :
Como validar datos nunericos para que, si alguien ingresa una letra, el compilador no tire un error...
Ante que nadie respodia, yo ofreci esto
Esta bien ?

Program CharToInt;
USES Crt;

{ð=-=-=-=-=-=-=-=-=-=< CONVERTIR UNA CADENA EN INTEGER >=-=-=-=-=-=-=-=-=-=ð
  Y bueno, este codigo fue lo mejor que se me ocurrio.
  Pero duden de todo lo que hice ya que aun me falta mucho por aprender !
  Fijense que es todo un trabajo de hormiga tan solo para 2 digitos.
  Pueden extender la capacidad a mas digitos, no es dificil, pero si tedioso.
  Huelga aclarar que si alguien tiene criticas para hacerme sobre este
  codigo, seran  bienvenidas, ya que para aprender estoy...

  En este foro o a i77@writeme.com
ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð}

CONST
    MaxDigitos = 2;

VAR
  i, Num : Word;
  CadStr : Array[0..MaxDigitos] of Char;

BEGIN
    ClrScr;
    i := 0;
    Write('Ingrese un valor : ');

   {Leo todo como caracteres para que el compilador no me tire un
    error si el usuario ingresa un caracter en lugar de un numero}
    While(Not Eoln) Do
     begin
       Read(CadStr);
       Inc(i);
     end;
    WriteLn;

{ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð
 Y tooooooodo lo que sigue desde ahora, es la conversion de char a integer.
 Ah! fijate los valores que estan entre '' comillas simples.
 Cualquier cosa que le ingreses distinto de 0..9, no lo tendra en cuenta.
 ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð}


   (* Lectura y asignacion para 1 solo digito *)
   For i := 0 To High(CadStr) Do
      begin
    case CadStr of
       '0'  :   Num := 0;
       '1'  :   Num := 1;
       '2'  :   Num := 2;
       '3'  :   Num := 3;
       '4'  :   Num := 4;
       '5'  :   Num := 5;
       '6'  :   Num := 6;
       '7'  :   Num := 7;
       '8'  :   Num := 8;
       '9'  :   Num := 9;
   end;
      end;

 (*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð
     Lectura y asignacion para 2 digitos...
     Fijate que en este caso, antes de asigar un valor a Num, primero me
     fijo en que valor se habia ingresado antes, y asignar en consecuencia
  ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*)

     Case CadStr[1] of
   '0'  : begin
        case CadStr[0] of
           '1'   : Num := 0 + 10;
           '2'   : Num := 0 + 20;
           '3'   : Num := 0 + 30;
           '4'   : Num := 0 + 40;
           '5'   : Num := 0 + 50;
           '6'   : Num := 0 + 60;
           '7'   : Num := 0 + 70;
           '8'   : Num := 0 + 80;
           '9'   : Num := 0 + 90;
        end;
          end;
   '1'  : begin
        case CadStr[0] of
           '1'   : Num := 1 + 10;
           '2'   : Num := 1 + 20;
           '3'   : Num := 1 + 30;
           '4'   : Num := 1 + 40;
           '5'   : Num := 1 + 50;
           '6'   : Num := 1 + 60;
           '7'   : Num := 1 + 70;
           '8'   : Num := 1 + 80;
           '9'   : Num := 1 + 90;
        end;
          end;
   '2'  : begin
        case CadStr[0] of
           '1'   : Num := 2 + 10;
           '2'   : Num := 2 + 20;
           '3'   : Num := 2 + 30;
           '4'   : Num := 2 + 40;
           '5'   : Num := 2 + 50;
           '6'   : Num := 2 + 60;
           '7'   : Num := 2 + 70;
           '8'   : Num := 2 + 80;
           '9'   : Num := 2 + 90;
        end;
          end;
   '3'  : begin
        case CadStr[0] of
           '1'   : Num := 3 + 10;
           '2'   : Num := 3 + 20;
           '3'   : Num := 3 + 30;
           '4'   : Num := 3 + 40;
           '5'   : Num := 3 + 50;
           '6'   : Num := 3 + 60;
           '7'   : Num := 3 + 70;
           '8'   : Num := 3 + 80;
           '9'   : Num := 3 + 90;
        end;
          end;
   '4'  : begin
        case CadStr[0] of
           '1'   : Num := 4 + 10;
           '2'   : Num := 4 + 20;
           '3'   : Num := 4 + 30;
           '4'   : Num := 4 + 40;
           '5'   : Num := 4 + 50;
           '6'   : Num := 4 + 60;
           '7'   : Num := 4 + 70;
           '8'   : Num := 4 + 80;
           '9'   : Num := 4 + 90;
        end;
          end;
   '5'  : begin
        case CadStr[0] of
           '1'   : Num := 5 + 10;
           '2'   : Num := 5 + 20;
           '3'   : Num := 5 + 30;
           '4'   : Num := 5 + 40;
           '5'   : Num := 5 + 50;
           '6'   : Num := 5 + 60;
           '7'   : Num := 5 + 70;
           '8'   : Num := 5 + 80;
           '9'   : Num := 5 + 90;
        end;
          end;
   '6'  : begin
        case CadStr[0] of
           '1'   : Num := 6 + 10;
           '2'   : Num := 6 + 20;
           '3'   : Num := 6 + 30;
           '4'   : Num := 6 + 40;
           '5'   : Num := 6 + 50;
           '6'   : Num := 6 + 60;
           '7'   : Num := 6 + 70;
           '8'   : Num := 6 + 80;
           '9'   : Num := 6 + 90;
        end;
          end;
   '7'  : begin
        case CadStr[0] of
           '1'   : Num := 7 + 10;
           '2'   : Num := 7 + 20;
           '3'   : Num := 7 + 30;
           '4'   : Num := 7 + 40;
           '5'   : Num := 7 + 50;
           '6'   : Num := 7 + 60;
           '7'   : Num := 7 + 70;
           '8'   : Num := 7 + 80;
           '9'   : Num := 7 + 90;
        end;
          end;
   '8'  : begin
        case CadStr[0] of
           '1'   : Num := 8 + 10;
           '2'   : Num := 8 + 20;
           '3'   : Num := 8 + 30;
           '4'   : Num := 8 + 40;
           '5'   : Num := 8 + 50;
           '6'   : Num := 8 + 60;
           '7'   : Num := 8 + 70;
           '8'   : Num := 8 + 80;
           '9'   : Num := 8 + 90;
        end;
          end;
   '9'  : begin
        case CadStr[0] of
           '1'   : Num := 9 + 10;
           '2'   : Num := 9 + 20;
           '3'   : Num := 9 + 30;
           '4'   : Num := 9 + 40;
           '5'   : Num := 9 + 50;
           '6'   : Num := 9 + 60;
           '7'   : Num := 9 + 70;
           '8'   : Num := 9 + 80;
           '9'   : Num := 9 + 90;
        end;
          end;
    End;

{ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð
 Bueno, y lo que sigue es una prueba de que esto funciona.
 Queda en vos extender la capacidad de digitos y/o convertir esto en un
 procedimiento para poder ser usado en un fuente o una unit; osea, adaptalo
 o modificalo segun tu necesidad. Espero haber ayudado con este codigo. Bye!
ð=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=ð}

    Write('Ingresaste el numero [',Num,'] ...y ', Num,' * ');
    TextColor(LightBlue+128);
    Write('77 ');
    NormVideo;
    Num := Num * 77;
    Write('= ',Num);

    Repeat Until KeyPressed; {pausa}
END.

Páginas: [1]