• Sábado 21 de Diciembre de 2024, 15:04

Autor Tema:  No puedo resolver un error en pascal  (Leído 2461 veces)

hokker

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
No puedo resolver un error en pascal
« en: Martes 23 de Abril de 2013, 03:22 »
0
Código: Pascal
  1.  
El error me ocurre en las ultimas 2 lineas del programa
ESTE ES EL ERROR : convertidor.pas(70,2) Fatal: Syntax error, ";" expected but "UNTIL" found

ESTE ES EL PROGRAMA

{ Introduccion a Algoritmica y Programacion. }
{ Trabajo Practico Numero 4, Ejercicio 16. }
{ Apellido y Nombre: Vergelin Isaias }
{ Este programa convierte unos tipos de unidades a otras de dos magnitudes dadas }
Program ConvertidorDeUnidades;
Var
   c1,c2,c3,c4: Real; {c1, c2, c3, c4 son variables que representan la operacion de conversion de ciertas unidades }
   num: Real; { "num" es el dato numerico que ingresa el usuario para convertirlo }
   mag: Integer;   { "mag" es una variable que representa el tipo de magnitud }
   conver: Integer; { "conver" es una variable que representa la conversion a realizar }
   resp: Char; { "resp" es una variable que representa un caracter }
Begin
   Writeln ('Menu Principal');
   Writeln ('Ingrese el valor que desea convertir'); { valor numerico que no puede ser negativo }
   Readln (num);
   Repeat
      Writeln ('Seleccione el tipo de magnitud: 1_ Velocidad.  2_ Longitud.');
      Readln (mag);
      While (mag<1) or (mag>2) do
      Begin
         Writeln ('El dato ingresado es incorrecto. Vuelva ingresar el tipo de magnitud');
         Readln (mag);
      End;
      If mag=1
      Then
      Begin
         Writeln ('Ingrese el tipo de conversion: 1_ Km/hora a mts/seg.  2_ mts/m a Km/hora.');
         Readln (conver);
         Case conver of
            1: Begin
                   c1:= num*(10/36);
                   Writeln ('El resultado es:', c1, 'metros por segundo');
                End;
            2: Begin
                   c2:= (num*3.6);
                   Writeln ('El resultado es:', c2, 'kilometros por hora');
                End
         Else
         Begin
            Repeat
               Writeln ('El dato ingresado no es correcto. Ingrese el tipo de conversion nuevamente.');
               Readln (conver);
            Until (conver=1) or (conver=2);
         End;
      End;
      If mag=2
      Then
      Begin
         Writeln ('Ingrese el tipo de conversion: 1_ Km2 a Ha.  2_ m2 a cm2.');
         Readln (conver);
         Case conver of
            1: Begin
                   c3:= (num*1/10000);
                  Writeln ('El resultado es:', c3, 'Ha');
                End;
            2: Begin
                   c4:= (num*10000);
                  Writeln ('El resultado es:', c4, 'cm2')
                End
            Else
            Begin
               Repeat
                  Writeln ('El dato ingresado no es correcto. Ingrese el tipo de conversion nuevamente.');
                  Readln (conver);
               Until (conver=1) or (conver=2);
            End;
      End;         
   Writeln ('¿Desea realizar una nueva conversion? S/N');
   Readln (resp);
   Until   (resp<>'s' or 'S');
End.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:No puedo resolver un error en pascal
« Respuesta #1 en: Martes 23 de Abril de 2013, 20:29 »
0
Hola hokker, revide tu codigo y le faltaba un end a las sentencias case, tambien descubri un error en la condicion del ultimo until en lugar de   Until   (resp<>'s' or 'S'); deberia ser Until   (resp<>'s') or (resp <>'S'); bueno esos serian todos los errores de sintaxis, tienes ademas errores de logica, pero me parece que eso ya te tocara a ti descubrir cuales son.

Te dejo el codigo corregido sin errores de sintaxis:

Código: [Seleccionar]
{ Introduccion a Algoritmica y Programacion. }
{ Trabajo Practico Numero 4, Ejercicio 16. }
{ Apellido y Nombre: Vergelin Isaias }
{ Este programa convierte unos tipos de unidades a otras de dos magnitudes dadas }
Program ConvertidorDeUnidades;
Var
   c1,c2,c3,c4: Real; {c1, c2, c3, c4 son variables que representan la operacion de conversion de ciertas unidades }
   num: Real; { "num" es el dato numerico que ingresa el usuario para convertirlo }
   mag: Integer;   { "mag" es una variable que representa el tipo de magnitud }
   conver: Integer; { "conver" es una variable que representa la conversion a realizar }
   resp: Char; { "resp" es una variable que representa un caracter }
Begin
   Writeln ('Menu Principal');
   Writeln ('Ingrese el valor que desea convertir'); { valor numerico que no puede ser negativo }
   Readln (num);
   Repeat
      Writeln ('Seleccione el tipo de magnitud: 1_ Velocidad.  2_ Longitud.');
      Readln (mag);
      While (mag<1) or (mag>2) do
      Begin
         Writeln ('El dato ingresado es incorrecto. Vuelva ingresar el tipo de magnitud');
         Readln (mag);
      End;
      If mag=1
      Then
      Begin
         Writeln ('Ingrese el tipo de conversion: 1_ Km/hora a mts/seg.  2_ mts/m a Km/hora.');
         Readln (conver);
         Case conver of
            1: Begin
                   c1:= num*(10/36);
                   Writeln ('El resultado es:', c1, 'metros por segundo');
                End;
            2: Begin
                   c2:= (num*3.6);
                   Writeln ('El resultado es:', c2, 'kilometros por hora');
                End
         Else
         Begin
            Repeat
               Writeln ('El dato ingresado no es correcto. Ingrese el tipo de conversion nuevamente.');
               Readln (conver);
            Until (conver=1) or (conver=2);
         End;
         end; {Aqui faltaba un end para el case}
      End;
      If mag=2
      Then
      Begin
         Writeln ('Ingrese el tipo de conversion: 1_ Km2 a Ha.  2_ m2 a cm2.');
         Readln (conver);
         Case conver of
            1: Begin
                   c3:= (num*1/10000);
                  Writeln ('El resultado es:', c3, 'Ha');
                End;
            2: Begin
                   c4:= (num*10000);
                  Writeln ('El resultado es:', c4, 'cm2')
                End
            Else
            Begin
               Repeat
                  Writeln ('El dato ingresado no es correcto. Ingrese el tipo de conversion nuevamente.');
                  Readln (conver);
               Until (conver=1) or (conver=2);
            End;
         end; {aqui faltaba un end para el case}
      End;         
   Writeln ('¿Desea realizar una nueva conversion? S/N');
   Readln (resp);
   Until   (resp<>'s') or (resp <>'S'); {esta condicion tambien estaba mal}
End.

Saludos :)
« última modificación: Martes 23 de Abril de 2013, 20:30 por ProfesorX »

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================