AGB  ·  Datenschutz  ·  Impressum  







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

Sortieren mithilfe von Indexdatein

Ein Thema von Cobain · begonnen am 26. Jun 2004 · letzter Beitrag vom 29. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
Cobain

Registriert seit: 25. Jun 2004
6 Beiträge
 
#1

Sortieren mithilfe von Indexdatein

  Alt 26. Jun 2004, 00:04
Hallo Leute, ich muss ein Programm schreiben das eine Datei (f) sortiert mithilfe einder Indeexdatei (i). Die Datei f besteht nur aus einzelnen Buchstaben und jeder Element ist nur einmal vorhanden und nicht in der Reihenfolge.

Ich versteh leider nicht die logische verknüpfung zwischen der Indexdatei und der Ursprungsdatei. Die Indexdatei muss sich irgendwie die Stellebn merken an denen die Buchstaben sind.

Beispiel: In Datei f sind die Buchstaben f,k,a drinn dann soll praktisch in der Indexdatei dies geordet werden und da müsste 2,0,1 drinnstehen und somit durch den Platz an deren das Element steht geordnet sein.

Kann mir dabei jemand helfen ? Hat jemand schon etwas ähnliches programmiert ??

LG

Cobain
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Sortieren mithilfe von Indexdatein

  Alt 26. Jun 2004, 07:50
Zitat:
Beispiel: In Datei f sind die Buchstaben f,k,a drinn dann soll praktisch in der Indexdatei dies geordet werden und da müsste 2,0,1 drinnstehen und somit durch den Platz an deren das Element steht geordnet sein.
Ich versteh das jetzt so, dass du nachher in einer Datei k,a,f stehen haben willst.
Wenn nicht,

Ich würd das aus der Hüfte herraus so machen:
- array nehmen (array1)
- erster Buchstabe aus der Datei auslesen (str),
- erste Zahl aus der Indexdatei lesen (i),
- Buchstaben an passende Stelle ins array schreiben,also
Code:
 array1[i]:=str;
Wenn du das bis zum Ende der Datei machst, solltest du nachher mit ner for-Schleife alles aus dem array in eine Datei schreiben können.

TOX
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Cobain

Registriert seit: 25. Jun 2004
6 Beiträge
 
#3

Re: Sortieren mithilfe von Indexdatein

  Alt 26. Jun 2004, 11:55
HiHO, jop sowas in der Art meinte ich.

schau mal hier : http://www.bbs-rodalben.de/delphi/da...ap5_seite1.htmhttp://www.bbs-rodalben.de/delphi/da...ap5_seite1.htm

Dann wirds dir bestimmt klar was ich meine. Ich weiß aber nicht wie ich das Programmieren soll ?

LG
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Sortieren mithilfe von Indexdatein

  Alt 26. Jun 2004, 12:32
So hab ich mir das auch vorgestellt. Wo liegt dein Problem? Kannst du Dateien öffnen, lesen und schreiben, mit arrays umgehen...?
Was hast du denn bis jetzt geschrieben...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Cobain

Registriert seit: 25. Jun 2004
6 Beiträge
 
#5

Re: Sortieren mithilfe von Indexdatein

  Alt 27. Jun 2004, 00:05
Delphi-Quellcode:
procedure TForm1.BSortClick(Sender: TObject);
var j:integer;
begin
LBSort.Clear;
reset(f);

for j:=1 to filesize(f) do
Zaehler:=0;

while not eof(f) do
read(f,wert);

if (zaehler=0) then kleinstes.zeichen:=wert.zeichen;
if (zaehler > 0) and (kleinstes.zeichen > wert.zeichen) and (wert.zeichen>letztes.zeichen)then
begin
kleinstes.zeichen:=wert.zeichen;
end;
if (zaehler > 0) and (kleinstes.zeichen < wert.zeichen) and (wert.zeichen>letztes.zeichen) then
Begin
reset(i);
stelle:=Zaehler;
seek(i,filesize(i));
write(i,stelle);
closefile(i);
letztes.zeichen:=wert.zeichen;

end;
Zaehler:=Zaehler+1;
LBsort.Items.add(wert.zeichen);
end;
meine Urliste also Datei (f) besteht wie schon gesagt aus einzeilnen buchstaben. Leider gibt er mir bis jetzt nur einen Buchstaben aus, und zwar setzt er den der am Ende der Urliste steht an den Anfang der zu Sortierenden?
Ich versteh nicht ganz wo mein Fehler liegt.
Falls noch Fragen zu Variablen sind bitte frage.
Kannst du mir helfen ?

LG

Cobe
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Sortieren mithilfe von Indexdatein

  Alt 27. Jun 2004, 12:12
Delphi-Quellcode:
for j:=1 to filesize(f) do
Zaehler:=0;
Egal wie groß die Datei ist, du hast immer Zaehler=0
Delphi-Quellcode:
while not eof(f) do
read(f,wert);
Hier liest du alle Buchstaben in eine Variable

reset(i);
Zitat von The Fine Manual:
Die Prozedur Reset öffnet eine vorhandene Datei.
Ist F bereits offen, wird sie zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Dateizeiger an den Anfang der Datei gesetzt.
Wenn du das vor jedem Schreiben machst, ist es klar, dass du am Ende nur einen Eintrag hast.

Zitat:
Falls noch Fragen zu Variablen sind bitte frage.
Wenn dir klar ist, dass da was unklar ist, ist es doch klar, dass du da von selbst etwas aufklären solltest.
- Ein paar Kommentare und Einrückungen erleichtern das Lesen und dir fallen vielleicht selbst ein paar Fehler auf.

Für was hast du denn eigenrlich die ganzen if-KLammern??? Du weisst doch schon in welche Reihenfolge, die Daten gehören; das sortieren hat dir doch schon derjenige abgenommen, der die zweite Datei geschrieben hat.

Hast du dir mal meinen Vorschlag mit dem Array abgeschaut? Ich denke dass, das recht einfach zu machen ist.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Cobain

Registriert seit: 25. Jun 2004
6 Beiträge
 
#7

Re: Sortieren mithilfe von Indexdatein

  Alt 29. Jun 2004, 19:15
HiHo , ich habe den Quelltest "weiterentwickelt"! Ich habe in meinen Urdatei (qwertzuiopasdfghjklyxcvbnm) stehen !
Das programm sortiert bis (p) und dann folgen nur noch qqqqqqq
Wieso ? Was habe ich denn in meinem Quelltext falsch gemacht ??

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  reset(f);
  eingabe.Zeichen:=Edit1.Text;
  seek(f,filesize(f));
  write(f,eingabe);
  closefile(f);
  Edit1.SetFocus;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  reset(f);
  rewrite(i);
  Stelle:=0;
  Zaehler:=0;
  letzteskleines.zeichen:=' ';
  while filesize(i) < filesize (f) do
  begin //Begin von while filesize
  edit2.Text:=IntToStr(Filesize(i));
  edit3.Text:=IntToStr(Filesize(f));
  reset(f);
  Zaehler:=0;
    while not eof(f) do
    begin //Begin von while not eof
      read(f,wert);
      if (Zaehler = 0) then
      begin //Begin A
        Kleinstes.Zeichen:=Wert.Zeichen;
        Stelle:=Zaehler;
      end; //End A
      if (Zaehler > 0) and (wert.Zeichen < Kleinstes.Zeichen) and (LetztesKleines.Zeichen = '') then
      begin //Begin B
        Kleinstes.Zeichen:=Wert.Zeichen;
        Stelle:=Zaehler;
      end; //End B
      if (Zaehler > 0) and (wert.Zeichen < Kleinstes.Zeichen) and (wert.zeichen > LetztesKleines.Zeichen) then
      begin //Begin C
        Kleinstes.Zeichen:=Wert.Zeichen;
        Stelle:=Zaehler;
      end; //End C
      Zaehler:=Zaehler+1;
    end; // end von while not eof
    if Zaehler = filesize(f) then
      begin //Begin D
        reset(i);
        seek(i,filesize(i));
        write(i,Stelle);
        Listbox2.Items.Add(Kleinstes.Zeichen);
        LetztesKleines.Zeichen:=Kleinstes.Zeichen;
      end; //End D
  end; // end von while filesize
closefile(i);
end;
CyA

Cobain
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Sortieren mithilfe von Indexdatein

  Alt 29. Jun 2004, 20:34
Nochmal kurz ne Frage zum Anfang: Du hast eine Datei mit Daten und eine Datei in der steht an welchen Platz die Daten aus der ersten Datei eigentlich gehören, oder?

Dein Code sieht irgendwie danach aus, als würdest du keine Indexdatei benutzen.
rewrite(i); Was soll denn diese Zeile bewirken?? Damit überschreibst du eine Datei.

Was ist eigentlich die Grundidee hinter deiner procedure? Ich hab irgendwie Probleme mich darin zurechtzufinden. Kommentare würden da helfen.

Zitat:
Das programm sortiert bis (p) und dann folgen nur noch qqqqqqq
Was wird denn ausgegeben?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Cobain

Registriert seit: 25. Jun 2004
6 Beiträge
 
#9

Re: Sortieren mithilfe von Indexdatein

  Alt 29. Jun 2004, 20:40
Jop ich habe eine Datei mit dem eintrag : qwertzuiopasdfghjklyxcvbnm ! Datei (f)
Ausgeben wird: abcdefghijklmnopqqqqqqqqqq !
Und diese sollen geordnet werden indem eine ihr Stelle in richtiger Reihenfolge in eine andere Datei, Indexdatei, schreibt !!

Komisch ist wenn man an den Anfnag der Datei ein z schreibt anstatt ein q dann funzt es.
Also gehe ich davon aus das er nur soweit sortiert, bis er das erste Element in der Datei im Alphabet erreciht hat und dann hört er auf, Aber ich versteh net warum ?

http://home.arcor.de/dasmol/ <= Dort kannste das Prog laden.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Sortieren mithilfe von Indexdatein

  Alt 29. Jun 2004, 20:54
Zitat:
Und diese sollen geordnet werden indem eine ihr Stelle in richtiger Reihenfolge in eine andere Datei, Indexdatei, schreibt !!
Das steht aber im Widerspruch zu deinem Link im zweiten Post.
So wie ich die Sache verstanden habe, hast du eine Datei mit Daten und eine Indexdatei.

Bsp: Die Datei mit Daten: [c,a,b]; Die Indexdatei: [2,3,1].

Diese Indexdatei würde die erste Datei so sortieren, dass nachher Buchstaben in alphabetischer Reihenfolge in einer dritten Datei wären.
Denn als erstes kommt der 2. Eintrag in die neue Datei, das 'a'.
Dann kommt der 3. Eintrag in die neue Datei, das 'b'
...

Mit einer anderen Indexdatei ( [1,3,2] ) könntest du auch die Reihenfolge umdrehen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  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 00:31 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