Hola mi problema es el siguiente: técnicamente el código que escribí esta bien pero luego de compilar el archivo y ejecutarlo no obedece a la proposición IF-THEN-ELSE, ya que deberia ejecutar la proposición THEN solo si “oct” este entre 100 y 999 pero al momento de ingresar un numero entero cualquiera (puede ser 12 o 123 o 1234) hace caso omiso de que tiene que estar entre 100 y 999 y ejecuta el THEN en vez de ELSE.
hola gonzalo,
1. estoy tan sorprendido como tú por ese comportamiento. estás seguro que compilaste la versión que muestras de programa10.pas ? el comportamiento que muestras sería el obtenido si en la línea 11 hubieras puesto un or en lugar de un and.
2. por otro lado, cuando se dice "Escriba un programa en Pascal que transforme un número octal (base ocho) de tres díıgitos en su correspondiente número equivalente en base 10" estamos asumiendo (a menos que se explicite en contrario) que el usuario cumple con la especificación dada; el usuario no ingresa ni 12, ni 1234.
saludos
luis
1. estoy tan sorprendido como tú por ese comportamiento. estás seguro que compilaste la versión que muestras de programa10.pas ? el comportamiento que muestras sería el obtenido si en la línea 11 hubieras puesto un or en lugar de un and.
2. por otro lado, cuando se dice "Escriba un programa en Pascal que transforme un número octal (base ocho) de tres díıgitos en su correspondiente número equivalente en base 10" estamos asumiendo (a menos que se explicite en contrario) que el usuario cumple con la especificación dada; el usuario no ingresa ni 12, ni 1234.
saludos
luis
Hola Luis, gracias por la respuesta!
1. Si estoy seguro que compile la versión que muestro, pensé que podía ser lo mismo así que volví a guardar el programa y volví a compilarlo.
2. Entiendo en todo caso quería hacer el programa un poco mas completo y no logro comprender que me esta fallando.
Saludos
Gonzalo.
hola de vuelta,
y no estarás compilando en un directorio diferente al que estás ejecutando ?
el siguiente programa, esencilamente igual al tuyo, hace lo esperable:
program p;
var oct: integer;
begin
readln (oct);
if (oct > 100) and (oct <= 999)
then writeln ('THEN')
else writeln ('ELSE')
end.
EJECUCIONES:
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
12
ELSE
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
123
THEN
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
1234
ELSE
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$
saludos
luis
y no estarás compilando en un directorio diferente al que estás ejecutando ?
el siguiente programa, esencilamente igual al tuyo, hace lo esperable:
program p;
var oct: integer;
begin
readln (oct);
if (oct > 100) and (oct <= 999)
then writeln ('THEN')
else writeln ('ELSE')
end.
EJECUCIONES:
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
12
ELSE
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
123
THEN
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$ ./p
1234
ELSE
luis@bercho:~/git/Cuaderno/programacion/Notas/txt$
saludos
luis