Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2018
nico.white nico.white is offline
Registrado
 
Registrado: Apr 2018
Posts: 9
Poder: 0
nico.white Va por buen camino
Problemas con bucles do/while

Hola colegas, buenos dias soy bastante nuevo en el tema y no logro encontrar el error en esto.

intente de todo, y no logro darme cuenta del error

el enunciado dice así.
Ingreso la cantidad de km a recorrer y la velocidad crucero.
si la velocidad crucero del auto es menor a 110 km/h
a los 50 litros de combustible con los que empieza el auto se le restaran 0,33litros cada 5 km.
si es mayor a 110 se le restara 0,5 litros cada 5 km
si me quedo sin combustible tengo q mostrar la cantidad de km que recorri

aca va mí código

Variabes:
Código Delphi [-]
 kmar:real;
    velc:integer;
    fuel:real;
    kmfinal:real;  

fuel:=50;
velc:=StrToInt(vel_C.caption);
kmar:=strToInt(km.caption);
if (velc<=110) then
     begin
        begin
          while (fuel>0)do

          (fuel-0.33)
        kmfinal=kmfinal-5;
        end;
     end;         

showmessage ('km recorridos'(floattostring(kmfinal));
end.
Responder Con Cita
  #2  
Antiguo 10-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.594
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
(fuel-0.33)
Esa línea no hace nada, ¿no?
Responder Con Cita
  #3  
Antiguo 10-05-2018
nico.white nico.white is offline
Registrado
 
Registrado: Apr 2018
Posts: 9
Poder: 0
nico.white Va por buen camino
esa linea resta 0,33 litros a los litros iniciales que son 50 litros.
Responder Con Cita
  #4  
Antiguo 10-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.120
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Esboza la idea en papel y lápiz tratando de seguir paso a paso lo que te solicitan,
Código:
PROCEDIMIENTO consumo 

VARIABLES
  litros, kilometros, velocidad, consumo : FLOTANTE

COMENZAR

  litros <- 50
  leer (kilometros, velocidad)

  si velocidad < 110 entonces
    consumo <- kilometros / 5 * 0.33
  si no 
    consumo <- kilometros / 5 * 0.50

  escribir ("Combustible consumido:", consumo)
  escribir ("Combustible restante :", litros - consumo)

FIN
luego no es tán dificil codificarlo en Pascal.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 10-05-2018
nico.white nico.white is offline
Registrado
 
Registrado: Apr 2018
Posts: 9
Poder: 0
nico.white Va por buen camino
El usuario deberá indicar cuántos km recorrerá.
cada 5 km (a una velocidad constante,llamémosla crucero, menor a 110km/h) que el simulador reduzca 0,33l (l=litro) de
combustible.
Si es mayor (pero constante) que 110km/h, el gasto de combustible debería ser
0,5l por cada 5km.
El nivel de combustible deberá ser full (lleno), con 50l al iniciar el viaje.
necesario que se controle si el tanque alcanza para realizar el viaje propuesto
(y mediante una ventana emergente: indicar tal situación).

el ejercicio debe resolverse con for, while, o repeat a eleccion

f= fuel
fuel =contador

Código Delphi [-]
  f:=50;
  kmfinal:=0;
  velc:=StrToInt(vel_C.caption);
  kmar:=strToInt(km.caption);
      if (velc <=110) then
      begin
      for fuel:=50 downto 0
        do
        repeat
        f:=f-0.33;
        resu:=kmar-5;
      until f=0;
         kmsr.text:= floatToStr(resu);
           showmessage('sin combustible');
          showmessage(floattostr(f));
          end
          else if (velc>110) then
          begin
          for fuel:=50 downto 0
            do
            repeat
            f:=f-0.5;
            resu:=kmar-5;
             until f=0;
     kmsr.text:= floatToStr(resu);
           showmessage('sin combustible');
          showmessage(floattostr(f));


end;
          end;


entra en un bucle infinito.
me doy por vencido (por hoy)

agradezco su ayuda

Última edición por nico.white fecha: 10-05-2018 a las 07:31:52. Razón: falto aclarar conceptos
Responder Con Cita
  #6  
Antiguo 10-05-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.731
Poder: 19
Ñuño Martínez Va camino a la famaÑuño Martínez Va camino a la fama
Usar el operador de igualdad con flotantes no es muy buena idea. Ten en cuenta que los ordenadores son pésimos haciendo cálculos con fracciones cuyo denominador no es potencia de dos; un ordenador es incapaz de representar con exactitud el valor 0'1, por ejemplo, y menos aún 49'77. Deberías cambiar el "UNTIL f=0" por "UNTIL f <= 0", que es la única manera de asegurarte.

Por otro lado, cuida la indentación; es muy difícil seguir el código tal como tú lo escribes. Te lo reformateo para que veas la diferencia:
Código Delphi [-]
  f := 50;
  kmfinal := 0;
  velc := StrToInt (vel_C.Caption);
  kmar := StrToInt (km.Caption);
  IF velc <= 110 THEN
  BEGIN
    FOR fuel := 50 DOWNTO 0 DO
      REPEAT
        f := f - 0.33;
        resu := kmar - 5
      UNTIL f <= 0; { <-- ¿Flotante? }
    kmsr.Text := FloatToStr (resu);
    ShowMessage ('sin combustible');
    ShowMessage (FloatToStr (f))
  END
  ELSE { IF velc > 110 THEN <-- Este IF no es necesario. }
  BEGIN
    FOR fuel := 50 DOWNTO 0 DO
      REPEAT
        f := f - 0.5;
        resu := kmar - 5
      UNTIL f <= 0; { <-- ¿Flotante? }
    kmsr.Text := FloatToStr (resu);
    ShowMessage ('sin combustible');
    ShowMessage (floattostr (f))
  END
END;
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 10-05-2018 a las 11:36:36.
Responder Con Cita
  #7  
Antiguo 10-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.120
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por nico.white Ver Mensaje
El usuario deberá indicar cuántos km recorrerá.
cada 5 km
(a una velocidad constante,llamémosla crucero, menor a 110km/h) que el simulador reduzca 0,33l (l=litro) de
combustible.
...
¡Ha!, pero ese es un planteo muy diferente al que hiciste en el primer mensaje...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 10-05-2018
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: Jul 2005
Ubicación: Murcia (España)
Posts: 921
Poder: 14
ElDioni Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código Delphi [-](fuel-0.33)

Esa línea no hace nada, ¿no?

Supongo que a lo que se refería el compañero Casimiro es que debería ser

Código Delphi [-]
fuel:=fuel-0.33

para que vaya acumulandose la resta en la misma variable.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con Bucles Olenkaguilar OOP 1 05-04-2014 01:29:26
bucles en sql chass SQL 2 15-10-2008 19:14:39
Sobre los bucles While y Do While Mya Varios 8 25-08-2008 19:17:01
bucles en SQL servicomp SQL 3 11-06-2006 03:07:21
bucles anidados con PHP cadetill PHP 8 21-07-2003 02:12:28


La franja horaria es GMT +2. Ahora son las 09:35:29.


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