Autor Beitrag
D0P3 F!$H
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.01.03 16:19 
Wir sollen für den Info-Unterricht einen Taschenrechner programmieren.

Ich wollte das nun mit zwei Edit-Feldern machen.
In das eine kommt das Ergebnis und in das andere die Aufgabe.

Dachte mir das in etwa so (natürlich vereinfacht :roll: ):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.BerechnungClick(Sender: TObject);
var Aufgabe : String;
     Ergebnis : Integer;
begin
 Aufgabe := Edit1.Text;
 Ergebnis := StrToInt(Aufgabe);
 Edit2.Text := IntToStr(Ergebnis);
end;


Wieso gibt es da Probleme?
Klar weiss ich, dass ein "*" oder eine "(" keine Zahlen sind, aber wenn man Ergebnis so definiert, geht es auch:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.BerechnungClick(Sender: TObject);
var Ergebnis : Integer;
begin
 Ergebnis := 2 + 3 * (8-2);
 Edit1.Text := IntToStr(Ergebnis);
end;

Hier wäre das Ergebnis gleich 20 ...

Wieso kann ich eine Integer-Variable mit Klammern definieren aber nicht mit einem "String füllen", wenn dieser auch "2 + 3 * (8-2)" wäre?
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 24.01.03 16:59 
Hallo,

woher soll der String wissen, dass er eine Formel ist?
Für die Analyse des Stringes bist Du als Programmierer selber verantwortlich. Dies bedeutet, Du kannst Dir schon einmal Gedanken über einen Parser machen.

Wenn Du in Deinen Quellcode eine Formel eingibst, sorgt schon der Compiler dafür, dass da ein Ergebnis herauskommt, weil der Quellcode-Analyser von Delphi dies kann. Aber wie bereits oben erwähnt, während des Programmablaufes können weder der Compiler noch das Edit wissen, dass Du eine Formel eingibst.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
D0P3 F!$H
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.01.03 17:09 
Du willst also sagen: Ich muss mir eine andere Möglichkeit überlegen, wie ich den Taschenrechner programmiere !?
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 24.01.03 17:11 
Hallo,

sofern Du Formeln von Hand in ein Edit eingeben willst, JA!

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Ice
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114



BeitragVerfasst: Fr 24.01.03 17:21 
Du könntest deinen 'Formel' String zerlegen in Formelzeichen und Zahlen, dann müsste es sich berechnen lassen.
Dazu sucht du einfach nach den Formelzeichen im String allles bis zum Formelzeichen ist eine Zahl, die 'schneidest' du vom String ab jetzt schneidest du das Formelzeichen ab und suchst im reststring wieder. Das ganze machst du bist du am Ende des Strings bist und setzt dann deine Formel wieder zusammen.

Ice
D0P3 F!$H
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.01.03 17:35 
@ Ice: So in etwa hab ich das schon in der Schule angefangen. Dort hatte ich ein Array of Integer für die Zahlen und ein Array of Char für die Zeichen ... allerdings hat das Berechnen nicht hingehauen. War irgendwie (mir zu :) ) schwierig.

Wer mir deine Lösung mal angucken.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 24.01.03 20:10 
Schau doch mal bei [url=www.torry.net]Torry[/url] vorbei. Dort sollte es solche Parser geben.

Gruß
TINO
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!