practico 5 ejercicio 8

practico 5 ejercicio 8

de Juan Manuel Mengen Sarasua -
Número de respuestas: 10

Buenas, hice el codigo de la parte "a" y solo me funciona como en la parte b, no entiendo que tendria que hacer para que funcione con todos los datos juntos.

En respuesta a Juan Manuel Mengen Sarasua

Re: practico 5 ejercicio 8

de Luis Sierra -
hola juan,

no entiendo la situación.
cuando ingresas "4+3/2*8-4=", qué sucede?
cuando ingresas "4 + 3/ 2 * 8- 4 =", qué sucede?

saludos
luis
En respuesta a Luis Sierra

Re: practico 5 ejercicio 8

de Juan Manuel Mengen Sarasua -
Hice el código pensando que iba a funcionar para "4x4/2=" pero funciona para "4 x 4 / 2 =" incluso con números mayores a 9. El tema es que me da error al ingresar los números juntos
En respuesta a Juan Manuel Mengen Sarasua

Re: practico 5 ejercicio 8

de Luis Sierra -
hola juan,

¿podés compartir tu código y una ejecución que muestre el error que se genera?

saludos

luis
En respuesta a Luis Sierra

Re: practico 5 ejercicio 8

de Juan Manuel Mengen Sarasua -
program primoonoprimo;
var numero, total: integer;
var operacion: char;

begin
writeln ('ingresa la operacion que deseas realizar');
read (numero);
total:= numero;
read (operacion);
while operacion <> ('=') do
begin
if operacion = ('+') then
begin
read (numero);
total:= (total+numero);
end;

if operacion = ('*') then
begin
read (numero);
total:= (total*numero);
end;

if operacion = ('-') then
begin
read (numero);
total := (total-numero);
end;

if operacion = ('/') then
begin
read (numero);
total:= (total div numero);
end;

read (operacion);
end;

writeln (total)
end.
En respuesta a Juan Manuel Mengen Sarasua

Re: practico 5 ejercicio 8

de Juan Manuel Mengen Sarasua -
ya lo hice con (ord), nose si es asi la solucion que se buscaba pero funciona.

program primoonoprimo;
var  numero ,total: integer;
var operacion, numero1: char;

begin
    writeln ('ingresa la operacion que deseas realizar');
    read (numero1);
    numero:= ord (numero1);
    numero:= numero - 48;
    total:= numero;
   
    read (operacion);
    while operacion <> ('=') do
    begin
        read (numero1);
        numero:= ord (numero1);
        numero:= numero - 48;

        if operacion = ('+') then
        begin
            total:= (total+numero);
        end;
       
        if operacion = ('*') then
        begin
            total:= (total*numero);
        end;
       
        if operacion = ('-') then
        begin
            total := (total-numero);
        end;
       
        if operacion = ('/') then
        begin
            total:= (total div numero);
        end;
       
        read (operacion);
    end;
   
    writeln (total)
end.
En respuesta a Juan Manuel Mengen Sarasua

Re: practico 5 ejercicio 8

de Luis Sierra -
hola juan manuel,

buen trabajo. ahora, intenta dos cosas:

1. en vez de usar esos cuatro IFs, usar un CASE.
2. tu propuesta solamente lee números que tengan un dígito. cambia el tipo de numero1 por integer (o elimina directamente esa variable) y permite escribir líneas como "43/2*84=" y "43 / 2 * 84 ="

saludos
luis
En respuesta a Luis Sierra

Re: practico 5 ejercicio 8

de Alexis Sokorov Vargas -
Buenas! No estoy logrando ver dónde está el problema en mi código a la hora de resolver el ejercicio 8-a :
image.png
Como en la letra del problema menciona que al menos se ingresa un número pensé que podría resolverse con \text{repeat} pero a la hora de correrlo me salta lo siguiente:
image%20%281%29.png
Donde supongo que al ingresar 4 = me debería de retornar 4
En respuesta a Alexis Sokorov Vargas

Re: practico 5 ejercicio 8

de Luis Sierra -
hola alexis,

en la sección Laboratorio tienes un enlace a la Descripción de errores en tiempo de ejecución provista por free pascal. allí puedes leer:

106 Invalid numeric format
Reported when a non-numeric value is read from a text file, and a numeric value was expected.

al ejecutar debe aparecer, junto al código de error, la línea en la que ocurre ese error. supongo que no estás compilando con las opciones que indicamos en el curso. compila con las opciones adecuadas, y podrás ver dónde ocurrió ese error.

acostúmbrate a extraer toda la info posible de los mensajes de error. en este caso, ya sabrías dónde y por qué fue el error.

recompila y vuelve a ejecutar. con la nueva información recogida intenta resolver la situación, y vuelve a preguntar si no puedes.

saludos

luis