Entwickler-Ecke

Sonstiges (Delphi) - Alle Kombination aus 3 Buchstaben


NOE - Di 07.08.07 12:42
Titel: Alle Kombination aus 3 Buchstaben
Ich muss in meiner Schule in den nächsten Tagen ein Programm entwickeln, das mir !alle! Kombinationen aus 3 buchstaben ausgibt (also abc abd abe abf abg abh abi...)! egal wie viel tausende kombinationen es wären, alle müssen ausgeben werden. Wäre sehr dankbar wenn mir jmd helfen könnte, indem er das programm entwickelt oder mir den quellcode für delphi gibt! ES wäre so verdammt nett und geil wenn das jmd machen könnte. DANKE DANKE schon mal im Vorraus


Moderiert von user profile iconGausi: Topic aus Open Source Projekte verschoben am Di 07.08.2007 um 13:12
Moderiert von user profile iconTino: "Hilfe" im Titel entfernt.


Narses - Di 07.08.07 12:52
Titel: Re: HILFE
Moin und :welcome: im Forum!

user profile iconNOE hat folgendes geschrieben:
Wäre sehr dankbar wenn mir jmd helfen könnte,

Wir helfen dir gerne, das Programm zu schreiben. ;) Was hast du denn bisher schon geschafft?

user profile iconNOE hat folgendes geschrieben:
indem er das programm entwickelt oder mir den quellcode für delphi gibt!

Es ist sicher nicht sinnvoll, dir das Programm zu schreiben - davon lernst du ja nix. :| Abgesehen davon machen wir hier keine Hausaufgaben... :?

cu
Narses


NOE - Di 07.08.07 12:59

Ja da ich ein halben Jahr krank war, hab ich so gut wie garnichts im Unterricht lernen können, aber damit ich jetzt keine schlechte note bekomme, habe ich gehofft das mir jmd helfen kann. Es ist das letzte Jahr Informatik weil ich dann meine schule beendet habe!

Mein lehrer meinte es reicht vollkommen aus nur die exe datei abzugeben, weil das sone zusätzliche leistung wäre!


arj - Di 07.08.07 13:00

Übrigens gibt es nicht tausende von Kombinationsmöglichkeiten aus 3 Buchstaben, sondern nur 6 ;)


NOE - Di 07.08.07 13:03

was? also abc abd abe abf abg abh abi...... also bei mir sind das schon 7 ! ^^ wir müssen aber alle erzeugen. :D


Martok - Di 07.08.07 13:07

Suche mal nach Suche in: Delphi-Forum PERMUTATIONEN

Es sind übrigens 26*26*26 = 26^3 = 17576 Kombinationen ;)


MOEDI - Di 07.08.07 13:12

Sind es nicht 26*25*24 Kombinationen?


Martok - Di 07.08.07 13:14

user profile iconMOEDI hat folgendes geschrieben:
Sind es nicht 26*25*24 Kombinationen?

Kommt drauf an... So, wie er die Beispiele hat könnte das glatt stimmen.
Ich habe Sachen wie aaa,aab,aac,aad usw zugelassen.


MOEDI - Di 07.08.07 13:17

Stimmt, er lässt uns ja im Unklaren, ob jede Kombination (z.B. aaa) nur genau einmal vorkommen darf,
sonst hast du natürlich recht. :wink:


NOE - Di 07.08.07 13:19

die buchstaben können sich auch wiederholen also aaa! ja das wären dann 26^3 Kombinationen

DANKE @ MARTOK, aber wie gesagt ich verfüge eigentlcih nciht mal über die Grundkenntnisse! ich kann damit leider garnichts anfangen


MOEDI - Di 07.08.07 13:20

Na dann halt nich :tongue:


Jann1k - Di 07.08.07 13:25

Wie gut kennste dich denn mit Delphi aus? Für das Programm brauchse nur Kenntnisse mit Schleifen, Strings und irgendeine Form der Ausgabe (memofenster o.ä.)


NOE - Di 07.08.07 13:32

tut mir leid, ich lag fast 7 monate mit ner gehirnhautentzündung im krankenhaus. eigentlich null sind meine kenntnisse! mein lehrer meinte gib mir einfahc die exe ab und wir werden das angemesssen zensieren! also bite hilft mir, das wäre so nett. wir jmd das prog schicken könnte! BITTE


Jann1k - Di 07.08.07 13:37

was ist denn mit deinen klassenkameraden? hier im forum wird dir so schnell keiner einfach deine hausaufgaben machen, kannst es ja mal in der jobbörse versuchen

musst du nach 7 monaten fehlzeit nicht sowieso das jahr wiederholen?!?


ZeitGeist87 - Di 07.08.07 13:40

Hallo!

Also ich hab hier folgendes gelernt..wenn ich n fertig programm online gestellt hab, war die beigeisterung nicht so groß..
ist auch verständlich!

Schau dir das an http://www.christian-stelzmann.de/index_tutorials_crashkurs.html

Was du für dein Problem brauchst:

- Schleifen
- Strings / Array
- Funktion ord() und chr()
- Zeit
- Lernwille

LG
Stefan


Gausi - Di 07.08.07 13:41

Weil du den Titel so schön geändert hast, hab ich mal ein Programm geschrieben, was bis 99 zählen kann. Das sollte weiterhelfen ;-).

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var i,j: integer;
begin
  for i := 0 to 9 do
    for j := 0 to 9 do
      Memo1.lines.Add(IntToStr(i) + IntToStr(j));
end;


NOE - Di 07.08.07 13:57

leider kann ich damit wenig anfangen :( schade das mir keiner helfen konnte :(


Gausi - Di 07.08.07 14:02

...dann versuch mal zu verstehen, was mein Code macht. Dann überlege, was man machen müsste, damit das Ding bis 999 zählt. Und dann muss man nur noch mit Ord und Chr n bissel rumspielen, um von den Zahlen zu Buchstaben zu kommen.

Das fertige Programm nützt dir gar nichts.


ZeitGeist87 - Di 07.08.07 14:57

Ok..ich schreib mal nen Artikel...:eyes:

Was ist unsere Problem / unsere Aufgabenstellung??

Schreibe ein Programm, das alle Möglichen Kombinationen aus 3 Buchstaben ausgibt.

Zutaten:

- 3 Schleifen
- die Funktionen ord() und chr() (alternativ ein Array)
- Delphi
- bissl Intelligenz und Verständnis

Das Programm

Zuerst machen wir uns einmal Gedanken darüber, ob wir ein Array oder die ord() und chr() Funktion verwenden.
Ich persönlich tendiere zum Array, darum werd ich das hier auch so umsetzen.

http://www.christian-stelzmann.de/index_tutorials_crashkurs.html Stichpunkt: Arrays!

Wir deklarieren zuerst einen neuen Typ:


Delphi-Quelltext
1:
2:
3:
type RAlphabet = record
      Buchstabe: Char;
end;


und deklarieren anschließend einen Variable des Typs mit der wir arbeiten werden:


Delphi-Quelltext
1:
myAlpha: array of RAlphabet; //dyn. Array (dyn. gleich beliebige Länge)                    


So jetzt haben wir eine dyn. Array mit keinerlei Werten. Um das Array zu füllen, initialisieren wir es:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 setlength(myAlpha, 26); //Warum 26? Wie viele Buchstaben hat das Alphabet? Richtig..26
 
 {
  Das Array hat nun also Platz für unsere Buchstaben von A bis Z.
  Und weil es dafür Platz hat, füllen wir jede Position von 1 bis 26 (Array geht bei 0 los!! Position 0-25) mit unseren 
  Buchstaben in alphabetischer Reihenfolge.
 }


Dazu deklarieren wir eine Variable vom Typ Integer. Wir nennen sie i. Sie dient uns als Zählervariable.
var i: integer;

Jetzt gehen wir unsere Array durch und über die Funktion chr() fügen wir an passender Stelle jeweils den richtigen
Buchstaben ein.
Wir brauchen einen Zähler, damit wir den richtigen Buchstaben "erwischen"


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var counter: integer;
begin;
counter:= 97;
for i:= low(myAlpha) to high(myAlpha) do
 begin
  //Wenn du nach ASCII-Tabelle googelst, wirst du verstehen, was hier passiert...
  myAlpha[i].Buchstabe:= chr(counter+i);
 end;


Unser Array schaut jetzt so aus:


Quelltext
1:
2:
3:
4:
5:
myAlpha[0]:= 'a';
myAlpha[1]:= 'b';
myAlpha[2]:= 'c';
...
myAlpha[25]:= 'z';


Wunderbar oder?
Jetzt haben wir alles, was wir benötigen um die Ausgabe zu vervollständigen.
Wir sind unserem Ziel schon sehr nahe.

Wir brauchen nun unsere 3 Schleifen.


Delphi-Quelltext
1:
var i, i2, i3: Integer                    


Und nun folgt im Prinzip das, was user profile iconGausi dir schon in einfacher Form gezeigt hat.
Vergiss nicht, ein Memo auf die Form zu legen :)


Delphi-Quelltext
1:
2:
3:
4:
for i:= low(myAlpha) to high(myAlpha) do
 for i2:= low(myAlpha) to high(myAlpha) do
  for i3:= low(myAlpha) to high(myAlpha) do
   memo1.lines.add(myAlpha[i].Buchstabe + myAlpha[i2].Buchstabe + myAlpha[i3].Buchstabe);


Was passiert da?

Die erste Schleife sorgt für den ersten, die zweite für den zweiten und die dritte für den dritten Buchstaben.
Die Ausgabe wird also so aussehen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
aaa
aab
aac
aad
aae
...
zzz


Wenn du das verstanden und umgesetzt hast, bin ich glücklich und du sicher auch.

Bei Fragen -> Fragen.

LG
Stefan


ZeitGeist87 - Di 07.08.07 15:09

Es geht auch viel viel viel einfacher!
Ich weiß :)

Aber hey..warum nicht.. :twisted:


hui1991 - Di 07.08.07 15:18


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var i,j: integer;
begin
  for i := 0 to 9 do
    for j := 0 to 9 do
      Memo1.lines.Add(IntToStr(i) + IntToStr(j));
end;


Was macht der Code?
Also er legt die variable i und j an.
Danach startet er eine Variable wo die nächste zeile 10 mal ausgeführt wird.
Dabei wird der wert i von 0 bis 9 hochgerechnet.
Jedesmal wenn sich der Wert i ändert, wird danach 10-mal j um eins erhöht.
Jedesmal wenn j um eins erhöht wurde, wird der wert i und j zur Liste hinzugefügt.

Ergebniss ist soweit:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
00
01
02
03
04
05
06
07
08
09
10
..
90
91
92
93
94
95
96
97
98
99


For schleifen zählen von dem Anfangswert zu dem Wert hinterm to.

Man kann auch mit der For-Schleife zeichen hochzählen.
Was passiert wohl, wenn du die 0 durch ein 'a' ersetzt und die 9 durch ein 'z'??
Dabei muss, aber der integer zu einem Char sein, weil Char "ein Zeichen" definiert.
Ich hoffe das du meins verstehst.
IntToStr muss aber entfernt werden, weil es ein Integer zu String verwandelt, das Format ist aber jetzt Char.

MfG
hui1991

P. S. hm.. ZeitGeist87 war schneller als ich, naja egal, wenn du was nicht verstanden hast kannste ja meins durchlesen ^^
Aso und ZeitGeist, chr und ord ist zu kompliziert.