Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dada una lista de números enteros, encontrar la sublista ordenada mas grande (https://www.clubdelphi.com/foros/showthread.php?t=87895)

gonza22salta 14-03-2015 14:31:26

Dada una lista de números enteros, encontrar la sublista ordenada mas grande
 
Dada una lista de numeros enteros, encontrar la sublista ordenada mas grande y mostrarla... es mi primer dia de clase en programacion. nunca tuve nada parecido a esto por lo tanto es totalmente nuevo...como puedo resolver esa consigna? todo es en pantalla de comandos...desde ya muchas gracias.

nlsgarcia 14-03-2015 15:13:35

gonza22salta,

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi.

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

nlsgarcia 14-03-2015 15:18:25

gonza22salta,

Cita:

Empezado por gonza22salta
...es mi primer día de clase en programación...nunca tuve nada parecido a esto por lo tanto es totalmente nuevo...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

nlsgarcia 14-03-2015 15:36:23

gonza22salta,

Cita:

Empezado por gonza22salta
...Dada una lista de números enteros, encontrar la sublista ordenada mas grande y mostrarla...

:rolleyes:

Revisa este código:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
   A1 : Array[0..9]  of Integer = (5, 3, 8, 1, 9, 7, 4, 2, 10, 6);
   i : Integer;

procedure BubbleSort(var A : Array of Integer);
var
   i , j : Integer;
   Aux: Integer;

begin

   for j := Low(A) to High(A) - 1 do
      for i := j + 1 to High(A) do
      begin
         if A[j] > A[i] then
         begin
            Aux := A[j];
            A[j] := A[i];
            A[i] := Aux;
         end;
      end;

end;

begin

   writeln('Arreglo numerico sin ordenamiento');

   for i := Low(A1) to High(A1) do
      write(IntToStr(A1[i]) + ' ');

   writeln(#10);
   writeln('Arreglo numerico con ordenamiento');

   BubbleSort(A1);

   for i := Low(A1) to High(A1) do
      write(IntToStr(A1[i]) + ' ');

   readln;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, ordena un arreglo numérico de forma ascendente por medio del algoritmo BubbleSort, como se muestra en la siguiente imagen:



Revisa esta información:
Espero sea útil :)

Nelson.

ecfisa 14-03-2015 19:15:25

Hola gonza22salta.

Ademas de los muy buenos enlaces y código que te proporcionó Nelson, te agrego la interpretación que pude darle al enunciado:
Código Delphi [-]
program Project2; {$APPTYPE CONSOLE}

uses SysUtils;

const
  MAXLST = 50;

var
  v: array[1..MAXLST] of Integer;
  c, i, m: Integer;
  des, has: Integer;
begin
  // Inicializar arreglo con valores aleatorios
  Randomize;
  for i:= 1 to MAXLST do v[i]:= Random(9)+1;

  // Mostrar lista inicializada
  Writeln('Lista:');
  for i:= 1 to MAXLST do Write(v[i],' ');

  // Obtener la mayor sublista ordenada
  m  := 0;
  c  := 0;
  has:= 0;
  des:= 0;
  for i:= 2 to MAXLST do
  begin
    if v[i-1] < v[i] then
    begin
      Inc(c);
      if c > m then  // (*)
      begin
        m  := c;
        des:= c;
        has:= i;
      end
    end
    else
      c:= 0;
  end;

  // Mostrar la mayor sublista ordenada
  Writeln(#10,#10,'Mayor sublista ordenada:');
  for i:= has-des to has do Write(v[i],' ');

  Readln;
end.
(*) De este modo, existiendo dos sublistas del mismo tamaño mostrará la primera en órden de aparición. Si deseas obtener la última cambia el condicional por:
Código Delphi [-]
if c >= m then

Saludos :)

gonza22salta 16-03-2015 13:34:46

Muchas gracias!!! me sirvio mucho...es exactamente lo que buscaba..la verdad aun me cuesta terminar un procedimiento solo, pero esto me ayudooo mucho! con mas teoria y practica seguro voy a mejorar.

gonza22salta 16-03-2015 13:40:02

Cita:

Empezado por nlsgarcia (Mensaje 490016)
gonza22salta,


:rolleyes:

Revisa este código:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
   A1 : Array[0..9]  of Integer = (5, 3, 8, 1, 9, 7, 4, 2, 10, 6);
   i : Integer;

procedure BubbleSort(var A : Array of Integer);
var
   i , j : Integer;
   Aux: Integer;

begin

   for j := Low(A) to High(A) - 1 do
      for i := j + 1 to High(A) do
      begin
         if A[j] > A[i] then
         begin
            Aux := A[j];
            A[j] := A[i];
            A[i] := Aux;
         end;
      end;

end;

begin

   writeln('Arreglo numerico sin ordenamiento');

   for i := Low(A1) to High(A1) do
      write(IntToStr(A1[i]) + ' ');

   writeln(#10);
   writeln('Arreglo numerico con ordenamiento');

   BubbleSort(A1);

   for i := Low(A1) to High(A1) do
      write(IntToStr(A1[i]) + ' ');

   readln;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, ordena un arreglo numérico de forma ascendente por medio del algoritmo BubbleSort, como se muestra en la siguiente imagen:


Revisa esta información:
Espero sea útil :)

Nelson.


EXELENTE!!! es un poco mas complicado a mi entender, seguro x ser un novato. pero el profesor me dio el pulgar arriba x este ejercicio, solo que ciertos codigos aun no nos permite usar x ser principiante. muy buena pagina por cierto!! espero algun dia yo brindar mi ayuda!


La franja horaria es GMT +2. Ahora son las 07:21:48.

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