Autor Beitrag
boxer123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: Do 27.10.11 15:22 
welche frage soll ich beantworten?
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 27.10.11 17:51 
Moin!

user profile iconboxer123 hat folgendes geschrieben Zum zitierten Posting springen:
welche frage soll ich beantworten?
Diese hier:
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
die allgemeine Frage: wie müssen die Grenzen (also erstes und letztes Element) aussehen, wenn du eine allgemeine Liste hast?
ausblenden 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. :idea:
Wir haben diesen Quelltext:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  zahl: array[1..4of 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: Fr 28.10.11 19:20 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  zahl: array[1..4of 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 28.10.11 21:32 
@Narses

Hut ab vor soviel Geduld ...

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 28.10.11 22:01 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
Hut ab vor soviel Geduld ...
Ich gebe zu, von den 2 Kilo bei Threadstart sind nur noch ein paar Gramm über... :?

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: Boldar
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Fr 28.10.11 22:09 
offtopic:

ich finds echt toll wie du dich hier abmühst
:D Hut ab!

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
boxer123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: Sa 29.10.11 08:20 
ausblenden 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..4of 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 29.10.11 09:25 
Moin!

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
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. :idea: Und an die Einrückung hast du dich auch nicht gehalten (das ist kein überflüssiger Schnickschnack!). :nixweiss:

Ich hatte dich gebeten, erstmal nur das Tauschen umzusetzen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 29.10.11 18:33 
(Hint: er hat den Beitrag editiert. Hab das auch eben erst gemerkt :oops:)

Ja, genau, so passiert was! :zustimm:

Ordentlich formatiert würde das so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  zahl: array[1..4of 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?
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: Sa 29.10.11 18:51 
1359 die 2te frage habe ich nicht verstanden
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 29.10.11 19:14 
1359 soll rauskommen, ja. Tuts aber nicht. Sonst wären wir ja auch schon fertig :zwinker:
Geh doch das einfach mal durch, was das Programm für jeden Wert von i tun wird:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: Sa 29.10.11 19:35 
vielleicht mit einer repeat schleife
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68
Erhaltene Danke: 2



BeitragVerfasst: So 30.10.11 10:57 
ich will ehrlich sein ich weiß es nicht
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 434
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: 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)