Autor Beitrag
oOpadeisOo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 27.09.09 19:28 
Hi,
ich soll in meinem Inofrmatikkurs ein programm schreiben, dass prüft ob ich eine klammer vollständig eingegeben habe, das heißt ob wenn eine Klammer geöffnet wurde und dann auch wieder geschlossen wurde. Das problem dabei ist, dass ich nicht weiß wie ich anfangen soll, dass erkannt wird dass eine klammer eingegebne wurde UND das diese geschlossen werden muss.

Könnt ihr mir dabei helfen?
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.09.09 19:34 
Ich hab sowas zwar noch nie gemacht, aber ich würde da prinzipiell so vorgehen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for i 1 bis länge vom text:
begin
  WENN text an der stelle i = "(" DANN
  inc(counter)
  ANSONSTEN, WENN text an der stelle i = ")" DANN 
  dec(counter);
end;

WENN Counter > 0 DANN Zu viele Klammern auf
WENN Counter < 0 DANN zu viele Klammern zu
WENN Counter = 0 DANN Okay ;)
anbest
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 17

Win XP Prof. SP 3
Delphi 2006 Arch.
BeitragVerfasst: So 27.09.09 19:52 
[edit] Code entfernt [/edit]
gfehmke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: So 27.09.09 20:07 
Hi

Hab mal den Quellcode einer 'Jugendsünde' anno 2002 angehängt.
Hilft vielleicht weiter.

G.
Einloggen, um Attachments anzusehen!
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: So 27.09.09 20:36 
du müsstest auch noch überprüfen, ob counter JEMALS <0 wird
dann hat man nämlich eine Klammer zuviel zu

andernfalls würde er folgendes als richtig erachten:

)3+2(=9
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.09.09 20:44 
dann wäre ja ein test in jedem Schleifendurchlauf möglich. würde Coutner <0, sofort mit Fehler exiten ..
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 27.09.09 21:03 
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
..sofort mit Fehler exiten ..
Wie meinen? Wasndasfürndeutsch? Oh Graus. :bawling:
Aber im Prinzip hast du Recht, denn so etwas ("(())))((") wäre mit dem vorgeschlagenen Algorithmus korrekt (Zähler = 0), aber trotzdem Murks.

Also: Die Idee mit dem Zähler ist richtig, aber wenn der Zähler zwischendurch negativ wird, sofort abbrechen und einen Fehler melden.
Aber bitte nicht exiten.
Breaken wäre besser, obwohl mich das wiederum an :puke: erinnert.

_________________
Na denn, dann. Bis dann, denn.
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 27.09.09 21:27 
naja... mit "exitten" war ja auch nicht exit; gemeint.

also. Folgender Algorithmus... noch in Pseudocode, da die Frage ja noch offen ist:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
SOLANGE i <= Textlänge UND counter >0 MACHE
BEGIN
  WENN Text[i] = "(" DANN
  Erhöhe Counter
  ANSONSTEN WENN Text[i] = ")" DANN
  Erniedrige Counter

  i+
END

WENN Counter > 0 DANN Zuwenig ")" 
WENN Counter < 0 DANN Zuviele ")" 

WENN Counter = 0 DANN Super!
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: So 27.09.09 21:42 
Zitat:
SOLANGE i <= Textlänge UND counter >0 MACHE


Aus dem counter > 0 sollte ein counter >=0 werden, ansonsten sieht das gut aus.