Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Red face Duda con ejercicio de Diagrama de Barras

Hola,

tengo un problema con un ejercicio. La presentación ha de ser así:

Código:
Introduce las longitudes del diagrama de barras a representar:
4 <R>                     I****

0 <R>                     I

5 <R>                     I*****

11 <R>                   I***********

14 <R>                   I**************

10 <R>                   I**********

7 <R>                     I*******

1 <R>                     I*

-1 <R>

¿Deseas representar mas diagramas de barras (S/N): N <R>
Entonces, donde me bloque es a la hora de implementar un bucle for:

Código Delphi [-]
begin   writeln('Introduce las longitudes del diagrama de barras a representar: ');
  readln(cantidad);
      asterisco := '*';
    for i := 1 to cantidad do       Begin          //Aquí he probado unas cuantas cosas...pero nada.
      end;

Se me ha ocurrido el hacer una conversión de datos y convertir el asterisco a entero para poderlo multiplicar por una variable de valor 1. De esta manera se me quedaría variable := asterisco solo (ya que lo he multiplicado por 1) y así poder hacer.

Código Delphi [-]
write('I', asterisco);


Alguna manera 'mejor'?? o más bien, alguna manera de hacerlo ??

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto

Última edición por gerupc fecha: 12-08-2007 a las 00:47:59.
Responder Con Cita
  #2  
Antiguo 12-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
uses SysUtils; {$apptype console}
 
var
 Repeticiones, Cantidad: ShortInt;
 Choice: Char;
 
label Back;
begin
 Back: Write(#13'Introduce las longitudes del diagrama de barras a representar: ');
 ReadLn(Repeticiones);
 while Repeticiones > 0 do
  begin
   Dec(Repeticiones);
   Read(Cantidad);
   Write(#9);
   if Cantidad > -1 then
    Write('I');
   while Cantidad > 0 do
    begin
     Write('*');
     Dec(Cantidad);
    end;
   WriteLn;
  end;
 Write('¿Deseas representar mas diagramas de barras (S/N): ');
 ReadLn(Choice);
 if (Choice = 's') or (Choice = 'S') then
  goto Back;
end.

Espero tengamos buena puntuacion en el "ejercicio"
Responder Con Cita
  #3  
Antiguo 13-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Exclamation

Hola,

muchas gracias por tu ayuda, de veras.

Pero no puedo utilizar 'label', y una cosa: qué es lo que hace la función 'dec'? y elWrite(#9); ?

Una vez más, gracias y un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #4  
Antiguo 13-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Dec decremente la variable introducida en 1, Write(#9) pone un tabulador, si no puedes usar label pues usa un repeat until
Responder Con Cita
  #5  
Antiguo 13-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Smile

Hola,

muchísimas gracias, voy a probar a ver...

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #6  
Antiguo 13-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Mmm creo de esa forma se resuelve el problema q tienes pero por si las moscas viendolo al codigo se me ocurre modificarlo de esta forma (y de acuerdo a mi interpretacion de consigna):

Código Delphi [-]
uses SysUtils; {$apptype console}
var 
i: integer;
Rep: ShortInt;
res: Char;

begin
while (res = 's') or (res = 'S') do //no recuerdo si se usa or o ||
begin 
Write(#13'Introduce las longitudes del diagrama de barras a representar: '); 
ReadLn(Rep);
if rep >= 0 then
 begin
 Write('I');
   for i := 0 to Rep do
     begin
        Write('*'); 
     end; //Fin del for
 end;//Fin del if
WriteLn;
Write('¿Deseas representar mas diagramas de barras (S/N): ');
ReadLn(res);
end;//Fin del while
end;
end.
En este caso solo te representaria una linea y preguntaria por empezar una nueva, es decir:
Representaria esto:
Rep es 4:
I****
Y preguntaria si queres representar mas...Es por las dudas... quizas yo entendi mal la consigna...

{Saludos}

Última edición por b3nshi fecha: 13-08-2007 a las 20:42:03.
Responder Con Cita
  #7  
Antiguo 14-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Exclamation

Hola,

muchísimas gracias B3nshi, pero creo que te has confundido con el primer while, ya que no se ha inicializado la variable resp (Ojo, creo ;-) )

Bueno, al final con vuestra ayuda y trasteando un poco, he conseguido lo que necesitaba, exceptuando dos detalles: (Primero el código y después los problemas)

Código Delphi [-]
uses SysUtils;

{$APPTYPE CONSOLE}

var
  i: integer;
  cantidad: integer;
  opcion: char;
Begin
  writeln('Introduce la longitud del diagrama de barras: ');
   Repeat
      Begin
      readln(cantidad);
        write(#9);
        write('I');
          for i := 1 to cantidad do
            Begin
              write('*');
            end;   //Fin de Bucle For
      if cantidad = -1 then
        write('Desea representar mas diagramas? S/N: ');
        readln(opcion);
      end;
    until (opcion = 'n') or (opcion = 'N');   //Fin de Bucle Repeat
End.

1.-Al preguntarme: ¿Desea representar más diagramas? S/N:, me introduce una I justo delante de la pregunta, tal y como me hace para cada barra. Supongo que será mediante algún while >=0, pero no lo consigo, ya que me hace un bucle infinito...

2.- Me interesa que al finalizar cada barra, automáticamente se cambie de linea para poder introducir el número que desee, sin la necesidad de pulsar intro cada vez que finalice una barra, para cambiar de linea.

A ver si me podeis echar una mano ;-)

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #8  
Antiguo 14-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
uses Windows, SysUtils; {$apptype console}
var
 Handle: Cardinal;                                             // El manejador de la consola
 Info: TConsoleScreenBufferInfo;                               // Para GotoXY, WhereX, y WhereY
 Repeticiones, Cantidad: ShortInt;
 Choice: Char;
begin
 Handle := GetStdHandle(STD_OUTPUT_HANDLE);
 repeat Write('Introduce las longitudes del diagrama de barras a representar: ');
  ReadLn(Repeticiones);
  while Repeticiones > 0 do
   begin
    Dec(Repeticiones);
    ReadLn(Cantidad);

    GetConsoleScreenBufferInfo(Handle, Info);                  // Para obtener la posicion actual del cursor (WhereX & WhereY)
    Info.dwCursorPosition.X := 16;                             //
    Dec(Info.dwCursorPosition.Y);                              //
    SetConsoleCursorPosition(Handle, Info.dwCursorPosition);   // Para definit la nueva posicion del cursor (GotoXY(16, WhereY - 1)

    if Cantidad > -1 then
     Write('I');
    while Cantidad > 0 do
     begin
      Write('*');
      Dec(Cantidad);
     end;
    WriteLn;
   end;
  WriteLn;
  Write('Deseas representar mas diagramas de barras (S/N): ');
  ReadLn(Choice);
 until (Choice <> 's') and (Choice <> 'S');
end.

Bueno ya que no puedes usar un goto label; entonces te dejo la solucion obvia y le agrego un toque visual agradable...

Última edición por cHackAll fecha: 14-08-2007 a las 21:24:29.
Responder Con Cita
  #9  
Antiguo 16-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Smile

Hola,

muchísimas gracias por tu interés y ayuda, pero, ha de ser mucho más sencillo que eso ;-)

Ten en cuenta que son ejercicios correspondientes a 1º de Ingeniería, y más concretamente, a los 3 meses de curso, es decir, que solamente se han visto, Bucles, estructuras de control anidadas...etc, poca leche ;-)

De todas maneras, muchísimas gracias, una vez más :-)

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
  #10  
Antiguo 16-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por gerupc
...Ten en cuenta que son ejercicios correspondientes a 1º de Ingeniería...
por eso le puse // a las lineas más "avanzadas"
Responder Con Cita
  #11  
Antiguo 16-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Smile

Hola,

jeje, ya me he percatado xD, lo que ocurre es porque no me permiten utilizar eso aún, es decir, he de resolverlo (bueno, que nadie me lo va a corregir, que es por aprender) con lo dado hasta el momento, si no, no vale ;-)

Pero muchas gracias!!!
Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
Respuesta



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
Problema con ejercicio en Delphi gerupc Varios 5 11-08-2007 21:39:28
ayuda con un ejercicio por favor! Albert0 JAVA 1 19-06-2007 18:29:00
Ejercicio Solarintg Varios 1 02-12-2006 15:48:07
Diagrama trex2000 MS SQL Server 1 12-09-2006 07:54:10
Diagrama de Barras Rabata Varios 1 15-09-2004 18:40:15


La franja horaria es GMT +2. Ahora son las 18:07:56.


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
Copyright 1996-2007 Club Delphi