Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [DELPHI] Sorting tabella

    Che cosa ho sbagliato in questo codice:

    codice:
    procedure TForm5.SortTabella;
    var can:boolean;
      I,temp: Integer;
      appo: Tree;
    begin
    temp := 0;
    repeat
    for I := 0 to 256 - 1 do
      begin
        can:=true;
    
      if ArrayList[i]<> nil then
        if ArrayList[temp]=nil then
          temp := i
        else
          if ArrayList[i].Freq < ArrayList[temp].Freq then
            begin
            appo := ArrayList[i];
            ArrayList[i] := ArrayList[temp];
            ArrayList[temp] := appo;
    
            temp := i;
            can:=false;
            end;
      end;
    until (can=true);
    end;
    arraylist è un array 0..255 di valori Tree.
    Tree è una classe definita così:
    codice:
    type
      PTree = ^Tree;
      Tree = class
        Code: byte;
        Freq: integer;
        Left: PTree;
        Right: PTree;
        constructor Create(aCode: byte; aFreq: Integer; aLeft: PTree; aRight: PTree);
      end;
    durante l'inizializzazione dell'array solo alcuni valori vengono inizializzati, gli altri rimangono nil. Io vorrei ordinare i valori non nil in ordine crescente, ma il codice non funziona... perchè??

    grazie ciao

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Mi sembra che tu stia confrontando sempre un elemento con se stesso, in quanto se non sbaglio le variabili i e temp hanno sempre lo stesso valore.

    Esegui il programma passo passo per verificare come si comporta il codice.

    Peraltro, se non si tratta di un esercizio, spero che tu non voglia inventare la ruota scrivendo di nuovo un algoritmo di ordinamento, dato che nella VCL ne esistono già, soprattutto usando i puntatori (meglio le classi in questo frangente).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.