Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Ausgabe von einer dreistelligen Zahl(123)
ReggaeGregi - Di 13.03.07 22:51
Titel: Ausgabe von einer dreistelligen Zahl(123)
Hi Leute,
ich hab ein kleines Problemchen. Es wäre super wenn Ihr mir dabei helfen könnt. Und zwar habe ich ein Programm geschrieben welches eine dreistellige Zahl aus drei zufällig gewählten verschiedenen Zahlen zusammensetzt. Zum Beispiel (123). Die Bedingung ist das keine Zahl in der dreistelligen Zahl doppelt vorkommen darf(z.B. 122). Nun dies habe ich hingekriegt. Es war eigentlich kein Problem. Unten seht Ihr wie ich es gemacht habe. Wie gesagt die Zahl soll dreistellig sein.
Die Aufgabe mit der ich nicht zurechtkomme: Das Programm wirft die Zahlen in einem Memo-Feld raus. Aber manche zahlen kommen ja doppelt(123, 687, 123). Wie kann ich das Programm schreiben damit es eine dreistellige Zahl nur einmal raus gibt damit ich ermitteln kann wie viel dreistellige Zahlen möglich sind. Also wie viele Kombinationen! Danke im Voraus. ;)
Hier mein Quelltext
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject); var a,b,c:integer; begin a:=randomrange(1,9); b:=randomrange(0,9); c:=randomrange(0,9); If (a<>b) and (a<>c) and (b<>c) then begin a:=StrToInt(IntToStr(a)+IntToStr(b)+IntToStr(c)); With Memo1.Lines Do Memo1.Lines.Add('Zahl: '+IntToStr(a)); end; end;
procedure TForm1.Button2Click(Sender: TObject); begin halt end;
end. |
Dunkel - Di 13.03.07 23:05
Titel: Re: Ausgabe von einer dreistelligen Zahl(123)
Da sieht irgendwie komisch aus:
Delphi-Quelltext
1:
| a:=StrToInt(IntToStr(a)+IntToStr(b)+IntToStr(c)); |
Ich würde es so machen:
Und daraus
Delphi-Quelltext
1:
| With Memo1.Lines Do Memo1.Lines.Add('Zahl: '+IntToStr(a)); |
würde ich ein simples
Delphi-Quelltext
1:
| Memo1.Lines.Add('Zahl: '+IntToStr(a)); |
machen.
Zu Deinem Problem:
deklariere ein globales Integer-Array in dem Du alle bisher zu Deiner Liste hinzugefügten Zahlen "zwischenspeicherst", vergleiche dann in Deiner Prozedur, ob die Zahl schon im "Zwischenspeicher" vorhanden ist, wenn nicht -> füge diese dem Memo hinzu.
dsJena - Di 13.03.07 23:24
Wo macht man das eigentlich, kannst du im Quelltext die Stelle markieren?
PS: Er hat das doch schon gut gemacht, ich meine verkürzen kann man die Befehle doch immer... ;-)
Dunkel - Di 13.03.07 23:53
dsJena hat folgendes geschrieben: |
| Wo macht man das eigentlich, kannst du im Quelltext die Stelle markieren? |
Was wolle?
dsJena hat folgendes geschrieben: |
| PS: Er hat das doch schon gut gemacht, ich meine verkürzen kann man die Befehle doch immer... ;-) |
Sicherlich funktioniert es so wie er es gemacht hat. Das von mir waren nur Vorschläge...
ReggaeGregi - Mi 14.03.07 14:00
tut mir leid aber das hat mir nicht sehr geholfen.
Martin1966 - Mi 14.03.07 14:13
ReggaeGregi hat folgendes geschrieben: |
| tut mir leid aber das hat mir nicht sehr geholfen. |
Was hast du denn nicht verstanden? Ansonsten ist können wir dir nicht gezielt helfen. ;-)
Lg, Martin
Narses - Mi 21.03.07 01:20
Moin!
Um das Mysterium für "kommende Generationen" zu lüften, hier noch die Musterlösung: ;)
Delphi-Quelltext
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:
| procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end;
procedure TForm1.Button1Click(Sender: TObject); var Zahl: String; begin repeat repeat Zahl := IntToStr(RandomRange(100,999)); until (Zahl[1] <> Zahl[2]) and (Zahl[1] <> Zahl[3]) and (Zahl[2] <> Zahl[3]); until (Memo1.Lines.IndexOf(Zahl) = -1); Memo1.Lines.Add(Zahl); end;
procedure TForm1.Button2Click(Sender: TObject); begin Application.Terminate; end; |
//EDIT: wobei ich gerade sehe, dass das ja gar nicht die eigentliche Aufgabe war... :autsch: OK, Ansatz: statt Zufällig eine Zahl zu ziehen, einfach mit einer Schleife von 100 bis 999 laufen und wenn die Ziffernbedingung passt, die Zahl ins Memo einfügen... ;) naja, so haste dann doch noch was zu tun und kein c&p, ist mir ja auch lieber... :P
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!