AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Taschenrechner - String durchsuchen

Ein Thema von Speedi2000 · begonnen am 28. Feb 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
Seite 3 von 4     123 4   
Speedi2000

Registriert seit: 28. Feb 2010
15 Beiträge
 
#21

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 15:17
Ah ich verzweifel grade wieder...

Bin jetzt soweit dass ich bei dem * angelangt bin.
Aber irgendwie komm ich nicht weiter... der Taschenrechner soll ja dann halt abwarten was nach dem * eingegeben wird weil das ja vor dem + gerechnet werden muss..

Vielleicht hat ja einer Zeit und Lust mal rüberzugucken.

Danke schonmal
Tobias
Angehängte Dateien
Dateityp: zip taschenrechner_824.zip (217,6 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#22

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 15:22
"ganz einfach"

- du zerlegst den String erstmal in seine Einzelteile (Zahlen und Operatoren)
- dann löst du nach und nach die Operatoren auf
(also natürlich zuerst die * und danach erst die + )
- zum Auflösen jeweils "Zahl Operator Zahl" suchen
dieses ausrechnen und gegen das Ergebnis austauschen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Speedi2000

Registriert seit: 28. Feb 2010
15 Beiträge
 
#23

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 16:28
Dazu müsst ich ja das ganze meines wissens nach in nen Array schreiben (bei PHP zumindest).. leider haben wir noch nicht gelernt wie wir das mit Delphi machen in der Schule, sondern verändern nur die Eigenschaften von Labels und so..
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#24

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 16:40
Du brauchst nicht unbedingt ein Array.
Eine TStringList ist da eh einfacher zu verwalten.

Wie du den String zerlegst hast du ja schon.
Nun brauchst du einfach nur den String zerlegen und erstmal in eine Stringliste einfügen (.Add).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Speedi2000

Registriert seit: 28. Feb 2010
15 Beiträge
 
#25

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 16:48
also wenn ich zB

5+2-4*2+5 habe

dann such ich also zuerst mit pos() nach dem * und müsste dann ja ne 6 zurückerhalten.
aber woher weiß ich wieweit ich vor und zurückgehen muss?
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#26

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 17:18
So ich hab mal fast den Ganzen Taschenrechner umgeschrieben

Weil sei mir net böse aber mit deinem Prinzip klappt das so nicht (soll net böse gemeint sein sondern nur eine feststellung )

Hab auch ein paar Kommentare dazugeschrieben. Ich schätze mal so müsstest du es hinbekommen ihn zu vervollständigen

Hab jetzt als Beispiel mit +,-,* und / und mit Kommas auch getestet. Er errechnet es mir richtig.

Hoffe du verstehst wie das Prinzip von mir ist.
Angehängte Dateien
Dateityp: zip taschenrechner_110.zip (9,1 KB, 7x aufgerufen)
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Speedi2000

Registriert seit: 28. Feb 2010
15 Beiträge
 
#27

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 17:28
Woah, um ehrlich zu sein seh ich da garnicht durch mit der Liste und so, denke das ist auch noch zu hoch für das Niveau wie wir den Taschenrechner machen sollen, weil wir haben ja mit Delphi grade erst angefangen.

Danke schonmal für die Hilfe, aber so kann ich das denk ich schlecht machen, weil wir ja soweit noch nicht sind =/

Muss ich wohl weiter mit meinem rumprobieren

EDIT://
Delphi-Quellcode:
if neo.caption = '*'
then
begin
ne.caption := floattostr(strtofloat(ne.caption)*strtofloat(display.text));
display.text := '0';
neo.caption := '*';
end
else
begin
if nz1.caption = ''
then
begin
nz1.Caption := display.text;
no1.caption := '*';
display.text := '0';
end
else
begin
nz2.caption := display.text;
no2.caption := '*';
punkt.caption := floattostr(strtofloat(nz1.caption)*strtofloat(nz2.caption));
if neo.caption = '+'
then
begin
ne.caption := floattostr(strtofloat(ne.caption)+strtofloat(punkt.caption));
nz1.caption := '';
nz2.caption := '';
no1.caption := '';
no2.caption := '';
neo.caption := '*';
end;
if neo.caption = '-'
then
begin
ne.caption := floattostr(strtofloat(ne.caption)-strtofloat(punkt.caption));
nz1.caption := '';
nz2.caption := '';
no1.caption := '';
no2.caption := '';
neo.caption := '*';
end;
if neo.caption = '*'
then
begin
ne.caption := floattostr(strtofloat(ne.caption)*strtofloat(punkt.caption));
nz1.caption := '';
nz2.caption := '';
no1.caption := '';
no2.caption := '';
neo.caption := '*';
end
end
end
end;
Habe jetzt das Problem dass wenn er im neo.caption nen '-' drin zu stehen hat, er irgendwas rechnet, aber nicht das was er soll... z.B. bei 5+5+5+5+5-6*3*(an der stelle bekommt er 126 raus und nicht 7 wie er eigentlich sollte).

Find meinen Fehler aber nicht
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#28

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 17:42
Aso.....ups...
Okay. Also ich hab durchgeschaut und ein Taschenrechner hört sich leicht an, aber in dem Umfang find ich ist es sehr sehr schwer mit einfachen Dingen wie Labeln.

Ansteller meiner Liste kannste auch ein Memo benutzen und dan per Lines machen.

Ist das gleiche Prinzip. Nur musste das die Codezeilen mit Assigned und Create von der Liste rausnehemn, da es sonst zu Fehlern kommt.

Und nur mit If-Anweisungen oder so (weis net ob ihr while-Schleifen schon habt) wird es noch schwerer meiner Meinung nach.

Aber IndexOf gibt es auch bei Memo.Lines Ist genau das gleiche.

Meiner Meinung nach geht es ohne eine Schleife überhaupt nicht. Da man erstens, das stimmt mit einer Liste arbeiten muss und zweitens jeden Eintrag druchgehen muss und mit einer for..to..do Schleife wird es glaub ich auch schlecht funktionieren.

Meiner Meinung nach kannst du dir ja das mal aufheben..vieleicht verstehst du dan später was ich gemacht hab und hilft dir dan später bei anderen Projekten

EDIT: Du warst schneller, ändert aber im Prinzip nichts an meine Antwort
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Speedi2000

Registriert seit: 28. Feb 2010
15 Beiträge
 
#29

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 17:44
Vielleicht kannst du aber den Fehler in meinem Code finden

Also If-Schleifen sind die einzigen die wir bisher hatten.
While und for schleifen kenn ich aber aus PHP und die werden denk ich in Delphi nicht groß anders sein.

IndexOf sagt mir jetzt garnichts...
Mit Memos haben wir auch noch nicht gearbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#30

Re: Taschenrechner - String durchsuchen

  Alt 1. Mär 2010, 17:45
Noch ein Hinweis: Im Gegensatz zu PHP beginnt in Delphi die Zeichenzählung in einem String nicht mit 0, sondern mit 1.

Die Lösung, das ganze rekursiv zu machen, ist auf gar keinen Fall optimal, aber am einfachsten. Ich verweise mal hierauf: http://delphi.zsg-rottenburg.de/parser.html

Und auch in Delphi kannst du ein einzelnes Zeichen mit s[i] auslesen, aber wie gesagt, Zählung beginnt bei 1.
Jakob
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz