![]() |
Gedankenleser :-D
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich bins mal wieder. Ich habe ebend ein bisschen langeweile gehabt und wollte mal wissen was man mit Turbo Delphi so machen kann. Ich habe ein kleines Tool geschrieben, welches 5 Zahlen und ein Ergebnis einließt und anschließen sagt wie Ihr diese zahlen mit + und - verknüpft habt. Ich habe es ja schon fast verraten, aber ich mache es tortzdem nochmal. Ihr gebt 5 Zahlen ein verbindet diese mit + und -. Dann berechnet Ihr das Ergebnis. Das Ergebnis gebt Ihr dann auch noch ein. Eigentlich nicht schwer. Duch einen klick auf den Button "Los", sagt Euch das Programm wie Ihr die 5 Zahlen mit + und - verknüpft habt. Falls Euch irgendwas merkwürdig vorkommt oder Ihr einen Fehler entdeckt, würde ich mich über ein kurzes Feedback freuen. PS: Freue mich natürlich auch, wenn ihr mal kurz erwähnen könntet wie Ihr das Tool findet. Also dann viel Spaß mit diesem kleinen Tool!!! MFG Christian18 |
Re: Gedankenleser :-D
Warum unter K&T? Ist doch eher ein Freeware-Programm...
Sonst wurden meine Beispiele richtig berechnet. :zwinker: |
Re: Gedankenleser :-D
Ja ich habe mich irgendwie verklickt ... :gruebel:
Vieleicht kann ein Moderator es verschieben. MFG Christian18 |
Re: Gedankenleser :-D
nettes programm :)
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Klatsch und Tratsch" nach "Freeware" verschoben.
Natürlich kann das ein Moderator verschieben. ;) |
Re: Gedankenleser :-D
Naja, das Programm kann eben nicht wirklich Gedanken lesen :wink:
Eingegeben hab ich 1|1|1|1|1=1 Das Programm meint: 1 + 1 + 1 - 1 -1 Ich hab aber gedacht: 1 + 1 - 1 - 1 + 1 :mrgreen: Aber schöne Spielerei |
Re: Gedankenleser :-D
Liste der Anhänge anzeigen (Anzahl: 1)
So (siehe Anhang) klappts aber net!
|
Re: Gedankenleser :-D
@Tormentor32
Wie rechnest du mit den Zahlen um diese Resultat zu bekommen? Sehe gerade nicht wie du gerechnet hast... Greetz |
Re: Gedankenleser :-D
wie ArmyMan bin ich der meinung das du dich da verrechnet hast und dein Ergebnis gar nicht machbar ist mit den Eingabegrößen.
|
Re: Gedankenleser :-D
Hallo SirThornberry,
naja ich denke nicht wirklich falsch!!! Denn man kann ja Summanden vertauschen. LG Chris |
Re: Gedankenleser :-D
Zitat:
Da kommt es doch gar nicht drauf an in welcher Reihenfolge die Summanden sind. => Da kann man tauschen wie man will und bekommt immer noch das gleiche. Man tauscht einfach das Vorzeichen mit. Oder habe ich dich jetzt falsch verstanden? Greetz |
Re: Gedankenleser :-D
Hallo,
ok, irgendwie habe ich gerade quatsch erzählt. Ok, das Programm hat einen fehler. der dürfte aber nur bei 1 auftauchen odeR? |
Re: Gedankenleser :-D
:wall:
Ich bin echt zu blöd... sorry! Ja klappt... aber du könntest ja ne Meldung machen, wenn das Ergebnis nicht möglich ist! |
Re: Gedankenleser :-D
Ok mache ich in der nächsten Version...
Falls es überhaupt eine nächste version geben wird, denn wie schon gesagt das war ein spaß projekt was ich in 10 minuten zusamenn gebaut habe. MFG Chris |
Re: Gedankenleser :-D
Gibt's dazu nen Algorithmus oder haste jede Kombi durchprobiert? :P :P
|
Re: Gedankenleser :-D
Also nachdem er nur 5 Zahlen Hat und jede Zahl mit entweder + oder - Berechnet wird gibt das einen Mögöäichkeit von 2 ^5 kombinationen 2^5 = 32 das BrudeForced ein Rechner in null komma Nix geschwind aus ;).
|
Re: Gedankenleser :-D
5 Operanden => 4 Operatoren => 2^4 Kombinationen :zwinker:
|
Re: Gedankenleser :-D
NEIN
Da mus ich dir wiedersprechen. Was passiert wenn du die erste Zahl Negativ brauchst ?? Ich fand das so witzig das ich es mal Geproggt hab, geht ja schnell. Nur kriege ich es einfach nicht Rekursiv hin. Hier also meine Itterative Lösung. Edit 1 - 5 die Zahlen Edit 6 das Erg Label7 die Ausgabe
Delphi-Quellcode:
[Edit]Procedure TForm1.Button1Click(Sender: TObject); Var j, i: Integer; zahlen: Array[0..5] Of integer; erg: Integer; Begin For i := 1 To 6 Do Zahlen[i - 1] := strtoint(Tedit(findcomponent('Edit' + inttostr(i))).text); For i := 0 To 31 Do Begin erg := 0; // Berechnen des Ergebnisses For j := 0 To 4 Do Begin If i And (1 Shl j) = (1 Shl j) Then erg := erg + Zahlen[j] Else erg := erg - Zahlen[j]; End; // Prüfen If erg = Zahlen[5] Then Begin // Ausgabe Label7.caption := ''; // Berechnen des Ergebnisses For j := 0 To 4 Do Begin If i And (1 Shl j) = (1 Shl j) Then label7.caption := label7.caption + '+' + inttostr(Zahlen[j]) Else label7.caption := label7.caption + '-' + inttostr(Zahlen[j]) End; label7.caption := label7.caption + '=' + inttostr(Zahlen[5]); // Fertig break; End; End; End; Also ein Kumpel von mir dem ich grad Proggen bei Bringe hat hier mal nen Mega Krassen Ansatz gebracht. Der ist im Mittel sogar schneller, schauts euch einfach mal an. Nur wie man schnell sehen kann, terminiert dieser Algorithmus nicht wenn man das Ergebnis nicht Korreckt eingibt ;)
Delphi-Quellcode:
[Edit2]
Procedure TForm1.Button3Click(Sender: TObject);
Var j, i: Integer; zahlen: Array[0..5] Of integer; erg: Integer; Begin c := 0; erg := 0; Label7.caption := ''; For i := 1 To 6 Do Begin Zahlen[i - 1] := strtoint(Tedit(findcomponent('Edit' + inttostr(i))).text); If i < 6 Then erg := erg + Zahlen[i - 1]; End; While erg <> Zahlen[5] Do Begin inc(c); i := random(5); Zahlen[i] := Zahlen[i] * -1; erg := 0; For j := 0 To 4 Do erg := erg + Zahlen[j]; End; // Ausgabe For j := 0 To 4 Do Begin If Zahlen[j] > 0 Then label7.caption := label7.caption + '+' + inttostr(Zahlen[j]) Else label7.caption := label7.caption + inttostr(Zahlen[j]) End; label7.caption := label7.caption + '=' + inttostr(Zahlen[5]); End; Endlich hab ichs auch Rekursiv hinbekommen, da ists aber net so hübsch wie ich finde.
Delphi-Quellcode:
Procedure TForm1.Button4Click(Sender: TObject);
Var j, i: Integer; zahlen: Array[0..5] Of integer; erg: Integer; Procedure Rekursion(Tiefe: Integer); Var j: Integer; Begin If Tiefe < 5 Then Begin Rekursion(Tiefe + 1); erg := 0; For j := 0 To 4 Do erg := erg + Zahlen[j]; If erg <> Zahlen[5] Then Begin Zahlen[Tiefe] := Zahlen[Tiefe] * -1; Rekursion(Tiefe + 1); End; End; End; Begin Label7.caption := ''; erg := High(Integer); For i := 1 To 6 Do Zahlen[i - 1] := strtoint(Tedit(findcomponent('Edit' + inttostr(i))).text); Rekursion(0); // Ausgabe If Erg = Zahlen[5] Then Begin For j := 0 To 4 Do Begin If Zahlen[j] > 0 Then label7.caption := label7.caption + '+' + inttostr(Zahlen[j]) Else label7.caption := label7.caption + inttostr(Zahlen[j]) End; label7.caption := label7.caption + '=' + inttostr(Zahlen[5]); End; End; |
Re: Gedankenleser :-D
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich habe das Programm mal ein bisschen erweitert. Und das nur durch das eingeben einer Zahl xD. MFG Christian18 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz