| Autor |
Beitrag |
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: Do 27.10.11 15:22
welche frage soll ich beantworten?
|
|
Teekeks
      
Beiträge: 211
Erhaltene Danke: 23
|
Verfasst: Do 27.10.11 17:44
Eventuell die wo ein Fragezeichen dahinter steht?
Tipp: Damit meine ich jetzt nicht die in diesem Beitrag!
Suche in dem Beitrag vor deinem.
Suche nach einem Zeichen welches so aussieht: ?
Folge dann den Zeichen so lange nach Links bis du auf eine hellere Box stößt.
Die Zeichen zwischen den beiden Stellen ergeben einen Satz in der Deutschen Sprache welche durch das bereits erwähnte ? zu einer Frage werden.
Ich hoffe dir geholfen zu haben.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 27.10.11 17:51
Moin!
boxer123 hat folgendes geschrieben : | | welche frage soll ich beantworten? |
Diese hier:
Martok hat folgendes geschrieben : | die allgemeine Frage: wie müssen die Grenzen (also erstes und letztes Element) aussehen, wenn du eine allgemeine Liste hast?
Delphi-Quelltext 1:
| var Ziffer: array of Integer |
Hinweis: ein solches "Dynamisches Array" fängt bei 0 an, nicht bei 1 wie Narses oben. Seine Länge kann man mit der Funktion Length() erfahren. |
Allerdings fürchte ich, werden dich die dynamischen Arrays evtl. gerade nicht weiter bringen.
Ich schlage deshalb vor, wir machen beim Tauschen weiter.
Wir haben diesen Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var zahl: array[1..4] of Integer; i: Integer; begin zahl[1] := 4; zahl[2] := 9; zahl[3] := 5; zahl[4] := 6; for i := 1 to 3 do if (zahl[i] > zahl[i+1]) then ShowMessage('tauschen') | Hier wird nur angedeutet, dass da ein Tausch passiert, aber die Elemente im Array werden nicht getauscht. Kannst du mal versuchen den Quelltext anzupassen, so dass statt der Hinweisausgabe wirklich vertauscht wird?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: Fr 28.10.11 19:20
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var zahl: array[1..4] of Integer; i: Integer; begin zahl[1] := 4; zahl[2] := 9; zahl[3] := 5; zahl[4] := 6; for i := 1 to 3 do if (zahl[i] > zahl[i+1]) then begin |
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 28.10.11 20:49
Moin!
Irgendwie ist mit deinem Posting was nicht in Ordnung, da scheint was verloren gegangen zu sein... ?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 28.10.11 21:32
@Narses
Hut ab vor soviel Geduld ...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 28.10.11 22:01
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: Boldar
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Fr 28.10.11 22:09
offtopic:
ich finds echt toll wie du dich hier abmühst
 Hut ab!
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: Sa 29.10.11 08:20
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| var zahl: array[1..4] of Integer; i,park: Integer;
begin zahl[1] := 4; zahl[2] := 9; zahl[3] := 5; zahl[4] := 6; for i := 1 to 3 do if (zahl[i] > zahl[i+1]) then begin park := zahl[i]; zahl[i] := zahl[i + 1]; zahl[i + 1] := park;
end;
end. |
so?
bitte ist das richtig
Zuletzt bearbeitet von boxer123 am Sa 29.10.11 09:49, insgesamt 4-mal bearbeitet
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Sa 29.10.11 08:59
Es fehlen zwei end's ansonsten ist es richtig...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 29.10.11 09:25
Moin!
bummi hat folgendes geschrieben : | | Es fehlen zwei end's ansonsten ist es richtig... |
Gemessen daran, was wir hier die ganze Zeit planen, "funktioniert" der Code zwar, aber es ist nicht "richtig" - denn es ist kein Bubble-Sort mehr.  Und an die Einrückung hast du dich auch nicht gehalten (das ist kein überflüssiger Schnickschnack!).
Ich hatte dich gebeten, erstmal nur das Tauschen umzusetzen:
Narses hat folgendes geschrieben : | | Hier wird nur angedeutet, dass da ein Tausch passiert, aber die Elemente im Array werden nicht getauscht. Kannst du mal versuchen den Quelltext anzupassen, so dass statt der Hinweisausgabe wirklich vertauscht wird? |
Was hat da jetzt die zweite Schleife zu suchen?
Da du mal kurz und kommentarlos Bubble- gegen Min-Sort ausgetauscht hast, behaupte ich mal, dass du immer noch nicht verstanden hast, was da passiert.
Also was nun, so weiter machen oder versuchen zu verstehen? Wenn du beim Verstehen weiter machen willst, dann entferne bitte erstmal noch die j-Schleife wieder und korrigiere die Einrückung (nur ein Befehl pro Zeile).
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 29.10.11 18:33
(Hint: er hat den Beitrag editiert. Hab das auch eben erst gemerkt  )
Ja, genau, so passiert was!
Ordentlich formatiert würde das so aussehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var zahl: array[1..4] of Integer; i, park: Integer; begin zahl[1]:= 4; zahl[2]:= 9; zahl[3]:= 5; zahl[4]:= 6; for i:= 1 to 3 do if (zahl[i] > zahl[i + 1]) then begin park:= zahl[i]; zahl[i]:= zahl[i + 1]; zahl[i + 1]:= park; end; end; |
Da sieht man viel besser, welche Befehle auf einer "Ebene" liegen, und was z.B. der Block ist, der von der Schleife wiederholt ausgeführt wird.
Damit sind wir schon fast am Ziel. Für den Test-Datensatz passt das sogar, da kommt (4, 5, 6, 9) raus.
Was aber, wenn du das mit diesen Daten versuchst?
Delphi-Quelltext 1: 2: 3: 4:
| zahl[1]:= 5; zahl[2]:= 3; zahl[3]:= 9; zahl[4]:= 1; |
Was würde dann raus kommen, und was macht man dann bei Bubblesort, um dieses Problem zu beheben?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: Sa 29.10.11 18:51
1359 die 2te frage habe ich nicht verstanden
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 29.10.11 19:14
1359 soll rauskommen, ja. Tuts aber nicht. Sonst wären wir ja auch schon fertig
Geh doch das einfach mal durch, was das Programm für jeden Wert von i tun wird:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| (der * ist zwischen den beiden Ziffern die verglichen werden)
Wert |1|2|3|4| << zahl[...] von +-+-+-+-+ i: | | | | | i=1 5*3 9 1 5>3, tauschen i=2 3 5*9 1 5<9, lassen i=3 3 5 9*1 9<1, tauschen Ergebnis: 3 5 1 9 |
Genau das ist die zweite Frage: warum kommt da nicht 1359 raus (okay, die hab ich grade selbst beantwortet...), und was muss man machen, damit das richtige rauskommt?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: Sa 29.10.11 19:35
vielleicht mit einer repeat schleife
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 29.10.11 19:57
Und was wird die dann tun?
Einfach nur irgendwelche Begriffe reinwerfen ist wenig hilfreich, ich würde schon gern sehen dass du ein Ziel vor Augen hast. Darum gehts ja beim Programmireren: die große Aufgabenstellung ("Ziffern sortieren") in kleine Stücke zerlegen und erst dann diese in Code übersetzen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
boxer123 
      
Beiträge: 68
Erhaltene Danke: 2
|
Verfasst: So 30.10.11 10:57
ich will ehrlich sein ich weiß es nicht
|
|
mandras
      
Beiträge: 434
Erhaltene Danke: 107
Win 10
Delphi 6 Prof, Delphi 10.4 Prof
|
Verfasst: So 30.10.11 11:27
Ich geb mal einen kleinen Hinweis:
Das Ziel der Sortierung ist doch: Zahl [x] >= Zahl [x-1] für alle x im Bereich 2..4
Nach Durchlauf der "I"-Schleife befindet sich die größte Zahl am Ende der Liste, das heißt obige Anforderung gilt immerhin schon mal für Zahl[4], aber noch nicht für die Zahlen 1 bis 3.
Also sollte man die Sortierung nochmal anwenden auf die Zahlen 1 bis 3, danach gilt dann Zahl[3] >= Zahl2 und Zahl[3] >= Zahl 1. Also stimmt die Zahlen 3 und 4, 1 und 2 aber noch nicht.
Dann müssen also noch die Zahlen [1] und [2] sortiert werden
Daher kommt auch der Name "Bubble Sort": Die großen Zahlen "steigen auf wie Blasen" (was bei der hier gewählten Arbeitsweise aber nicht so anschaulich ist)
|
|