AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wörter alphabetisch Sortieren!

Ein Thema von Moin · begonnen am 7. Jan 2004 · letzter Beitrag vom 7. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#1

Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 16:52
Tach alle zusammen!

Ich soll für die Schule ein kleines Übungsprogramm schreiben, dass 30 Namen aus einer Memo alphabetisch sortiert. Das Programm startet auch, aber es hängt sich bei der Ausführung der entsprechenden Procedure auf.

Namen : array[0..29] of String;
Delphi-Quellcode:
procedure THF.Sortieren1Click(Sender: TObject);
   var i, k: Byte;
        Temp: string; // Temporäre Text Datei
begin

FOR i:=0 TO 29 DO
 Namen[i]:= Memo.Lines[i];

FOR i:=0 TO 28 DO
 BEGIN
   k:=0;
   Repeat
    If Namen[i,k]<> Namen[i+1,k] Then
     If Namen[i,k]> Namen[i+1,k]
     Then Begin
          temp:= Namen[i];
          Namen[i]:= Namen[i+1];
          Namen[i+1]:= temp;
          End;
   Until (Namen[i,k]<> Namen[i+1,k]);
   inc(k);
 END;

FOR i:=0 TO 29 DO
Memo.Lines[i]:= Namen[i];


end;
Ich nehme an dass es an "Namen[i,k]" hängt, ich möchte mit k den Buchstaben des Strings ansprechen!!

Danke für eure Mühen!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:16
Dein Source benötigt einiges an Überarbeitung, zumindest von der Logik her. Du schreibst einmal Namen [i] und dann :
Namen [i,k] Was denn nu ?

For und While Schleifen werden gemischt. Also auf den ersten Blick weiß ich gar nicht, was Du da machst. 8) Sortiere mal den Code und mache ihn einheitlich.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:32
Wenn weniger als 30 Zeilen im Memo sind, dann wird irgendwie der Zähler durcheinander gebracht.
Und das Programm reagiert anders als es soll.

Bei mir ist zum Beispiel i = 29 im 1. Durchlauf, obwohl es ja bei diesem CodeFor i := 0 to 28 do Begin i = 0 sein sollte. Demnach gibt es auch einen netten Zugriffsfehler.
Code:
If Namen[i, k] <> Namen[[color=red]i + 1[/color], k] Then
Namen[30] existiert ja nicht.

Davon abgeseh'n funktioniert deine Sortierfunktion nicht.

Delphi-Quellcode:
Uses Math;

Var Namen: Array[0..29] of String;

Procedure TForm1.Button1Click(Sender: TObject);
  Var i, k: Integer;
    Temp: String; // Temporäre Variable

  Begin
    {Namen einlesen}
    For i := 0 to 29 do Namen[i] := '';
    For i := 0 to Min(29, Memo1.Lines.Count - 1) do
      Namen[i] := Memo1.Lines[i];
    {Sortieren}
    For i := 0 to 28 do Begin
      k := 1;
      Repeat
        If Namen[i, k] <> Namen[i + 1, k] Then
        If Namen[i, k] > Namen[i + 1, k] Then Begin
          temp := Namen[i];
          Namen[i] := Namen[i + 1];
          Namen[i + 1] := temp;
        End;
      Until (Namen[i, k] <> Namen[i + 1, k]);
      Inc(k);
    End;
    {Namen ausgeben}
    Memo1.Lines.Clear;
    For i := 0 to 29 do
      If Namen[i] > 'Then Memo1.Lines.Add(Namen[i]);
  End;
Ach ja, ich hab nur das Ein- und Auslesen der Namen überarbeitet, das funktioniert jetzt ohne Probleme.
An der Sortierfunktion wurde nichts geändert, da ich einfach nicht kapiere, was du da machen willst.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DennyC

Registriert seit: 27. Jan 2003
Ort: Berlin
47 Beiträge
 
Delphi 7 Professional
 
#4

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:36
Hallo!

Wenn Du schon ein Memo hast, nutze doch die Methode Sort von TStringList (also der Lines-Eigenschaft des Memos). Aber wahrscheinlich ist das Deiner Schule zu simpel...

Denny
  Mit Zitat antworten Zitat
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:40
@Hansa:
Zitat:
For und While Schleifen werden gemischt
Ich habe nich eine while-schleife dabei.
und wie ich schon geschrieben habe, wollte ich mit Name[i,k] auf einen String des Array zugreifen [i] von dem ich dann die einzelnen Buchstaben anspreche [k].
Damit ich herrausfinden kann welcher buchstabe im alphabet höher steht!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Mikko

Registriert seit: 23. Jan 2003
Ort: Baden
65 Beiträge
 
#6

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:41
Kann da DennyC nur zustimmen. Mit 'ner Stringlist hast du die Namen im Nu sortiert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:42
@DennyC:
Ich denke mal, die sollen lernen wie sortiert wird.

Und das ist mit Autosort ja nicht möglich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:54
@ DennyC : hast recht, das is meiner Lehrerin zu billig.

@ alle:
Da anscheinen keiner kapiert wie die procedure funktioniert (bzw. soll) , möchte ich eine einfache Frage formulieren:

Wie spreche ich den Buchstaben "k" von einem String "i" aus einem Array of String an?
Ich habe einfach nur spekuliert dass es über "Namen[i,k] " funzt, da keine Fehlermeldung kam dachte ich, dass es stimmt.

@ himitsu & Mikko:

Zitat:
Ich denke mal, die sollen lernen wie sortiert wird.
dass kann schon sein, aber vorallem soll dadurch unser logisches Verständnis getestet werden, wir kriegen nähmlich ne note drauf. Ich bezweifle ernst haft, dass es auf eine Wert änderung im OI 15 Punkte gibt!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:55
Hallo,
ich glaube mit dem Teil
Delphi-Quellcode:
    If Namen[i,k]<> Namen[i+1,k] Then
     If Namen[i,k]> Namen[i+1,k]
soll erreicht werden, dass Schmidt vor Schmitt einsortiert wird.

Das ist aber gar nicht nötig weil:
'Schmidt' > 'Schmitt' False ergibt.

Da Moin lernen soll wie sortiert wird ist es sicherlich nicht angebracht die Sort-Methode
oder direkt Quicksort vorzuschlagen. Deshalb gebe ich hier die einfachsten Sortieralgortihmus
an den ich kenne.
Delphi-Quellcode:
var
   iCnt : Integer;
   jCnt : Integer;
   Temp : String;
begin
  For iCnt:=0 to memSource.Lines.Count-1 do
    For jCnt:=iCnt to memSource.Lines.Count-1 do
      begin
      If memSource.Lines[iCnt]>memSource.Lines[jCnt] then
        begin
        Temp:=memSource.Lines[iCnt];
        memSource.Lines[iCnt]:=memSource.Lines[jCnt];
        memSource.Lines[jCnt]:=Temp;
        end;
      end;
end;
Da es sich hier um Hausaufgaben handelt. Und Hausaufgaben hier eigentlich nicht gemacht werden
sollte uns MOIN doch mal aufmalen, wie die Reihe hklssdfkfxa sortiert wird. So Schritt für Schritt
mit jedem Schleifendurchlauf meine ich.
Angehängte Dateien
Dateityp: zip zip_200.zip (167,1 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Moin

Registriert seit: 16. Dez 2003
Ort: Dresden
57 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 18:31
Zitat von Jens Schumann:
Da es sich hier um Hausaufgaben handelt. Und Hausaufgaben hier eigentlich nicht gemacht werden
sollte uns MOIN doch mal aufmalen, wie die Reihe hklssdfkfxa sortiert wird. So Schritt für Schritt
mit jedem Schleifendurchlauf meine ich.
Lade es runter!!!
~~ an alln ekn & endn sparn! ~~
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz