Ejercicio 8 - práctico 5

Ejercicio 8 - práctico 5

de Rodrigo Andres Blanco Maeso -
Número de respuestas: 6

Buenas tardes , para resolver este problema puedo asumir que el primer carácter de la cadena de texto es un número? Es decir puedo asumir que no es un signo de - o + ? 

Otra consulta? Puedo considerar que no van a aparecer dos operadores juntos? O sea , que por ejemplo, no voy a multiplicar o dividir por un valor negativo 

Saludos

En respuesta a Rodrigo Andres Blanco Maeso

Re: Ejercicio 8 - práctico 5

de Luis Sierra -
(edito por respuesta ambigua o confusa)

hola rodrigo,

el enunciado afirma que los "datos de entrada son una secuencia de enteros sin signo".

así que:
1. puedes asumir que el primer carácter de la cadena de texto es un número
2. no vas a multiplicar o dividir por un valor negativo (a menos que sea resultado antes calculado, como 2-100-100-100*3)

saludos

luis
En respuesta a Rodrigo Andres Blanco Maeso

Re: Ejercicio 8 - práctico 5

de Rodrigo Andres Blanco Maeso -
Buenas tardes, aprovecho este mensaje para preguntar acerca de la solución de este ejercicio. Copio lo que hice para la parte a)
image.png
 
Si bien el programa compila y por lo que anduve probando tira resultados coherentes, no me cierra que la variable 'oper' que debe ser distinto de = para que el programa pueda leer el segundo termino de la cuenta , al final termine siendo un = para poder salir del repeat. O sea, la variable toma el valor que le dije que no podía tener..
 
La consulta es si esto está bien o debería haberlo resuelto de otra manera. La verdad otra cosa no se me ocurrió
 
Saludos 
En respuesta a Rodrigo Andres Blanco Maeso

Re: Ejercicio 8 - práctico 5

de Luis Sierra -
hola rodrigo,

tu propuesta parece razonable. van comentarios.

1. las líneas 6-10 y 16-19 leen un entero caracter por caracter. podrías ahorrarte trabajo usando directamente un entero, como podrás observar en la solución publicada. aún así, observa que ...
1A. la primera lectura se inicializa en la línea 6; la segunda, en la línea 16, pero no está inicializada. la inicialización de la segunda lectura está desparramada en el código, apareciendo en 12 y 26. el código mejora significativamente si juntas las cosas que deben ir juntas.

2. ahora, no entiendo tu preocupación: "no me cierra que la variable 'oper' que debe ser distinto de = para que el programa pueda leer el segundo termino de la cuenta , al final termine siendo un = para poder salir del repeat." en primer término, por alguna razón, pusiste lo que pusiste. cuál fue esa razón, que te convencía? quizá está ligado con lo que señalo más adelante.

3. observa que tu propuesta exige que se ingresen al menos dos números, mientras que la solución propuesta permite que se ingrese un único número. modifica tu propuesta para que permita que se ingrese un único número.

saludos

luis
En respuesta a Luis Sierra

Re: Ejercicio 8 - práctico 5

de Rodrigo Andres Blanco Maeso -

Luis, con respecto a tus comentarios:

1. respecto a como se leen los numeros, entiendo que podría haber considerado que lo que voy a leer es directamente un número. Tenia la idea erronea de que mi ingreso de datos todos tienen que ser del mismo tipo

2. Mi idea para poder resolver este problema fue, de forma muy resumida, la siguiente:

- Leo el primer número, mi lectura va a terminar cuando encuentre un signo o un = (líneas 6-10)

- Me guardo el operador en una variable . Aca diferencie los casos

Donde mi operador sea un igual (correspondiente a que se haya ingresado aaa=, donde a representa a cualquier numero), corresponde que no se lea nada despues y se pasa directamente a mostrar el resultado

Donde mi operador no sea un =, lo siguiente que va a tener mi entrada es al menos un número y a este lo guarde en la variable b (líneas 16-19). Leyendo lo que vos me pones entiendo que podria haber sido mas prolijo y no era necesario poner dos veces la misma asignación (podria ponerlo como primer paso en el repeat por ejemplo)

 - Hago la operación, guardo el resultado y reinicio la variable b para repetir el punto anterior. Este ciclo va a terminar cuando encuentre un =

3.  Entiendi que por lo que pone la letra , lo mínimo que se recibe en la entrada es un numero y un =. Le voy a pegar una leida a la solución propuesta

Saludos y gracias

En respuesta a Rodrigo Andres Blanco Maeso

Re: Ejercicio 8 - práctico 5

de Luis Sierra -
hola rodrigo,

van comentarios menores.

1. no es una idea errónea. si lo hubieras hecho como en la solución, te habría dicho que pensaras cómo hacerlo si hubieras leído usando el tipo char. lo importante es explorar distintas soluciones.

2. así que tu código coincide con lo que pensabas hacer. buenísimo, no hay problema.

saludos y continúa
luis