Autor |
Beitrag |
ron007
Hält's aus hier
Beiträge: 9
|
Verfasst: Do 25.10.07 19:11
Hy,
ich soll ein Programm erstellen, das mit einen Button zufällige Zahlen erstellen und keine doppelten erscheinen lässt (mit array gemacht und funktioniert) und mit einem Button sollen diese Zahlen mit Selection Sort sortiert werden. Nur leider erscheinen bei mir in allen Feldern nur Nullen und ich finde den Fehler nicht. Hoffe mit kann einer helfen dabei, das das Programm endlich funktioniert.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1; a: Array[1..6] of integer; zahl : Array [1..6] of integer; i,j : integer; d:integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var neu : boolean; begin randomize; for i:=1 to 6 do begin repeat neu:=true; a [i]:=random(60)+1; for j:=1 to i-1 do if a[j]=a[i] then neu:=false; until neu=true;
edit1.text:=inttostr(a[1]); edit2.text:=inttostr(a[2]); edit3.text:=inttostr(a[3]); edit4.text:=inttostr(a[4]); edit5.text:=inttostr(a[5]); edit6.text:=inttostr(a[6]); end;
end;
procedure TForm1.Button2Click(Sender: TObject); var iMax, Max : Integer; begin
for i := 6 downto 2 do begin iMax := i; Max := zahl [i]; for j := 1 to (i-1) do if zahl [j] > Max then begin iMax := j; Max := zahl [j]; end; zahl [iMax] := zahl [i]; zahl [i] := Max;
end; edit1.text := IntToStr (zahl[1]); edit2.text := IntToStr (zahl[2]); edit3.text := IntToStr (zahl[3]); edit4.text := IntToStr (zahl[4]); edit5.text := IntToStr (zahl[5]); edit6.text := IntToStr (zahl[6]); end;
end. |
Gruß
ron
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Do 25.10.07 21:08
Hallo!
In der Methode Button2Click greifst Du auf das Array Zahl zu ohne vorher die zufälligen 6 Nummern aus den TEdits ins Array zu kopieren. Und da Zahl ein globales Array of integer ist wird der Inhalt genullt.
Watt kann man machen? In der Methode Button1Click die Zufallszahlen nicht nur in die TEdits schreiben sondern gleichzeitig auch ins Array Zahl. Alternativ in der Sortier-Methode die Inhalte der TEdits ins zu sortierende Array kopieren.
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
ron007 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 26.10.07 14:27
danke für die antwort.
vom dem was du gesagt hast verstehe ich es auch, aber habe leider keine Ahnung wie man so was macht. kannst du mir das bitte mal erklären wie man die Zufallszahlen gleichzeitig in array zahl schreibt?
gruß
ron
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 26.10.07 14:43
Moin und  im Forum!
Einfachste Lösung: lass das Array a[]weg und nimm nur zahl[], dann sollte es auch klappen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
ron007 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 27.10.07 10:18
hy,
habe so gemacht wie Narses, es gesagt hat aba es funktioniert immer noch nicht werden imma noch nur nullen angezeigt. habe noch den quelltext rein gemacht, vll habe ich ja was falsch verstanden.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1; zahl : Array [1..6] of integer; i,j : integer; d:integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var neu : boolean; begin randomize; for i:=1 to 6 do begin repeat neu:=true; zahl [i]:=random(60)+1; for j:=1 to i-1 do if zahl[j]=zahl[i] then neu:=false; until neu=true;
edit1.text:=inttostr(zahl[1]); edit2.text:=inttostr(zahl[2]); edit3.text:=inttostr(zahl[3]); edit4.text:=inttostr(zahl[4]); edit5.text:=inttostr(zahl[5]); edit6.text:=inttostr(zahl[6]); end;
end;
procedure TForm1.Button2Click(Sender: TObject); var iMax, Max : Integer; begin
for i := 6 downto 2 do begin iMax := i; Max := zahl [i]; for j := 1 to (i-1) do if zahl [j] > Max then begin iMax := j; Max := zahl [j]; end; zahl [iMax] := zahl [i]; zahl [i] := Max;
end; edit1.text := IntToStr (zahl[1]); edit2.text := IntToStr (zahl[2]); edit3.text := IntToStr (zahl[3]); edit4.text := IntToStr (zahl[4]); edit5.text := IntToStr (zahl[5]); edit6.text := IntToStr (zahl[6]); end;
end. |
Gruß
ron
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Sa 27.10.07 14:10
Ich habe es mal eben nachgebaut, mit Deinem Code, und bei mir funktioniert's.
Drückst Du auch zuerst den Button1 und danch den Button2?
Edit: formatierten und aufgeräumten Code angehängt
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private zahl : Array [1..6] of integer; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var neu : boolean; i,j : integer; begin randomize; for i:=1 to 6 do repeat neu:=true; zahl [i]:=random(60)+1; for j:=1 to i-1 do if zahl[j]=zahl[i] then neu:=false; until neu; edit1.text:=inttostr(zahl[1]); edit2.text:=inttostr(zahl[2]); edit3.text:=inttostr(zahl[3]); edit4.text:=inttostr(zahl[4]); edit5.text:=inttostr(zahl[5]); edit6.text:=inttostr(zahl[6]); end;
procedure TForm1.Button2Click(Sender: TObject); var iMax, Max : Integer; i,j : integer; begin for i := 6 downto 2 do begin iMax := i; Max := zahl [i]; for j := 1 to (i-1) do if zahl [j] > Max then begin iMax := j; Max := zahl [j]; end; zahl [iMax] := zahl [i]; zahl [i] := Max; end;
edit1.text := IntToStr (zahl[1]); edit2.text := IntToStr (zahl[2]); edit3.text := IntToStr (zahl[3]); edit4.text := IntToStr (zahl[4]); edit5.text := IntToStr (zahl[5]); edit6.text := IntToStr (zahl[6]); end;
end. |
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Zuletzt bearbeitet von Dunkel am Sa 27.10.07 14:43, insgesamt 1-mal bearbeitet
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.10.07 14:15
nur mal einen hinweis, wenn du deinen code, ordentlich formatieren würdest, so kannst du auch viel schneller fehler finden....
PS: IMHO ist dein code eine zumutung, also mal vernünftig formatieren!
|
|
ron007 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 27.10.07 14:42
Dunkel hat folgendes geschrieben: | Ich habe es mal eben nachgebaut, mit Deinem Code, und bei mir funktioniert's.
Drückst Du auch zuerst den Button1 und danch den Button2? |
ja, ich drücke erst Button 1, damir man die Zahlen sieht und dann drück ich Button 2, aber es kommen halt die Nullen.
Gruß
ron
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Sa 27.10.07 14:46
ron007 hat folgendes geschrieben: |
ja, ich drücke erst Button 1, damir man die Zahlen sieht und dann drück ich Button 2, aber es kommen halt die Nullen.
Gruß
ron |
Tja, dann weiß ich auch nicht weiter. Wie schon geschrieben, bei mir funktioniert's.
Probier es vielleicht mal mit dem Code aus meinem letzten Beitrag-Edit.
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
ron007 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 27.10.07 16:02
hy,
so habe es hin bekommen und weiß erst wo mein Fehler war. Bis jetzt ging ich immer davon aus die Projekt.exe immer auf die Unit1.pas zugreift, wemm man sie startet. Denn ich habe die *.pas Datei immer mit dem Editor geändert, da wir in der Schule ein älteres Delphi haben, welches nicht mit den Neuerungen der 7er Version, die ich zu Hause habe, klar kommt.
Gruß
ron
Moderiert von Narses: 2. Frage entfernt.
|
|
|