Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con ejercicio en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=46861)

gerupc 11-08-2007 20:36:13

Problema con ejercicio en Delphi
 
Hola,

estoy haciendo unos ejercicios en Delphi para la Universidad, y tengo algún problema con ellos. Es uno que ya comenté en un post hace una semana o así, pero repasando, me he dado cuenta de que me falla una cosa...

Os comento; tengo que realizar una división sin dividir ;-), es decir, haciendo la operación mediante restas sucesivas. Como ya he dicho, escribí sobre una duda que tenía y me ayudaron a resolverla. Pero ahora, me he dado cuenta de que tengo un problema con una variable. Con la variable dividendo, fijaos, hallo el cociente y el resto de la división, de la siguiente manera:
Código Delphi [-]
 if opcion = 2 then
          Begin
              Write('Introduce el dividendo: ');
              readln(dividendo);
              Write('Introduce el divisor: ');
              readln(divisor);
                  cociente := 0;
                  while divisor <= dividendo do
                    Begin
                       dividendo := dividendo - divisor; //Resto porque se detiene cuando la condicion no se cumpla
                       cociente := cociente + 1 //Va a repetirse tantas veces como vueltas dé el Bucle
                    end;
              writeln('El cociente de ',dividendo,' entre ',divisor,' es igual a ',cociente,' y el resto ',dividendo);
              readln;
          end;

Y claro, a la hora de presentar el resultado, me surje un conflicto con la variable dividendo, ya que presenta el resto cuando la uso para el cociente (antes del último end). No me permiten hacer este ejercicio con funciones, asi que ha de ser de esta manera.

He intentado el declarar alguna especie de variable dentro del bucle...pero nada no lo he conseguido, asi que si alguien me pudiese echar una mano, se lo agradecería mucho.

Un saludo,

Geru.

b3nshi 11-08-2007 20:48:54

Mmm... veamos... si mal no te entendi... tu problema es q estas dividiendo por ejemplo 31 en 5 y te presenta este mensaje:

"El cociente de 1 entre 5 es igual a 6 y el resto 1"

Bueno si te pones a ver es logico q eso suceda ya q estas usando una misma variable... por ello te recomiendo hacerlo de la siguiente manera:
Código Delphi [-]
if opcion = 2 then
          Begin
              Write('Introduce el dividendo: ');
              readln(dividendo);
              Write('Introduce el divisor: ');
              readln(divisor);
                  resto := dividendo; //Declaras una variable "resto" q guarda el valor
                  cociente := 0;
                  while divisor <= resto do //Corrijo Aqui... y perdon por el error
                    Begin
                       resto := resto - divisor; //Resto porque se detiene cuando la condicion no se cumpla
                       cociente := cociente + 1 //Va a repetirse tantas veces como vueltas dé el Bucle
                    end;
              writeln('El cociente de ',dividendo,' entre ',divisor,' es igual a ',cociente,' y el resto ',resto);
              readln;
          end;

Y con eso cuando presentes el mensaje te saldrá bien... si no es eso lo q te sucede pues entonces corrigeme y veo como puedo ayudarte...

{Saludos}

Delphius 11-08-2007 21:00:20

b3nshi, tu código tiene un error, formaste un bucle infinito. Fijate bien...

Aunque el problema se resuelve como dices: Empleando una variable auxiliar que tome el valor del dividendo.

Saludos,

gerupc 11-08-2007 21:27:45

Hola,

muchas gracias por vuestra ayuda!!! Pero eso ya lo había intentado, me deja compilarlo, pero en el momento en el que introduzco el divisor, se detiene, ahí se queda sin seguir adelante, ¿porqué puede ser?

Un saludo y gracias otra vez!

Geru.

b3nshi 11-08-2007 21:30:32

Listo! Ahora si :) no me di cuenta de cambiar tambien la variable en la condicion del while...

Gracias delphius por la correcion...

Y al momento de ingresar el divisor no es q se detenga... en el codigo q habia escrito anteriormente no cambiaba la condicion, por lo q como dijo delphius quedaba un bucle infinito.

Prueba cambiando la condicion como la puse en la correcion y dime q sucede... si no funciona te sigo ayudando... pero no deberia haber ningun problema...

{Saludos}

gerupc 11-08-2007 21:39:28

Hola,

perfecto, muchísimas gracias por tu ayuda!! ahora si que si...menudo fallo, claro!!

Un saludo,

Geru.


La franja horaria es GMT +2. Ahora son las 15:17:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi