4032 Kapaz Gesamtkapazitaet eines Kondensatornetzwerkes
Kategorie:Elektrotechnik
Klasse:schwer
Eingabe:siehe Spez.
Ausgabe:siehe Spez.
Abzugebende Files: Kapaz.txt, Main.java, Kapaz/*.java , 1184.txt, 1651.txt

Kurzbeschreibung:

Es soll die Gesamtkapazität eines Kondesatornetzwerkes berechnet werden.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie einen String ein, der ein Kondensatornetzwerk beschreibt.

Es können grundsätzlich nur zwei Arten von Kondensatorschaltungen auftreten.

a) Serienschaltung:


z.B.: C1 = 220, C2 = 470 => C = 1/(1/220+1/470) = 149.855

b) Parallelschaltung:


z.B.: C1 = 220, C2 = 470 => C = 220 + 470 = 690

Die Einheit der Kapazität (Kapazität eines Kondensators ist der Wert des Kondensators) wird in Farad [F] angegeben. Um die Ein- und Ausgabe zu vereinfachen, sind die Einheiten wegzulassen.

Die Kapazität soll eine Integerzahl größer Null sein.

Für den Eingabe-String der Schaltung wird für eine Serienschaltung der Operator "+" und für eine Parallelschaltung der Operator "/" verwendet. Die einzelnen Ebenen des Kondensatornetzwerkes werden durch Klammern "(", ")" getrennt.

Berechnen Sie die Gesamtkapazität der Kondensatorschaltug mit Hilfe einer rekursiven Prozedur.

Eine mögliche Eingabe könnte so aussehen:

820+(470/(120+(560/680)))

Zugehörige Schaltung:


Zugehöriger Parsebaum:

Die Gesamtkapazität dieses Kondensatornetzwerkes beträgt: 339.512

Eingabedaten:

Lesen Sie einen String ein, der das Kondensatornetzwerk beschreibt.

Der eingelesene String darf nur Ziffern "0" bis "9" und die Zeichen "+", "/", "(", ")" enthalten. Die einzelnen Werte der Kondensatoren (Kapazitäten) müssen im Bereich der Integerzahlen liegen und positiv sein.

Das Kondensatornetzwerk darf aus nicht mehr als 15 Kondensatoren bestehen.

Eine Parallelschaltung von Kondensatoren wird durch das Zeichen "/" ("240/245" bedeutet 240 parallel 245) und eine Serienschaltung durch das Zeichen "+" ("680+120" bedeutet 680 in Serie mit 120) gekennzeichnet. Enthaltet ein Kondensatornetzwerk mehrere Ebenen (d. h. enthaltet eine Serienschaltung ein Parallelschaltung oder umgekehrt), so müssen diese durch Klammern ("(", ")") gekennzeichnet werden.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm die Gesamtkapazität des eingegebenen Kondensatornetzwerkes ausgeben. Die Gesamtkapazität soll als Integerzahl gerundet ausgegeben werden (die programminterne Berechnung soll aber mit Floatzahlen durchgeführt werden).

Zum Schluß ist ein Zeilenvorschub auszugeben.

Fehlerbehandlung:

Wenn bei der Eingabe die oben genannten Anforderungen nicht erfüllt werden, oder der eingelesene String kein gültiges Kondensatornetzwerk beschreibt, dann ist die Meldung "FALSCHE EINGABE" gefolgt von einem Zeilenvorschub auszugeben.

Beispiele:

Eingabedaten
((200+490)/130)+910

(340/690/30)+(885/220)

Ausgabedaten
209

541


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Main < Kapaz.i1 > Kapaz.out1

Das erzeugte File Kapaz.out1 können Sie dann mit dem mitgelieferten Outputfile Kapaz.o1 vergleichen.