3120 |
Widerst |
Widerstandsnetzwerk |
Kategorie: | Elektrotechnik |
Klasse: | schwer |
Eingabe: | siehe Spezifikation |
Ausgabe: | siehe Spezifikation |
|
Abzugebende Files: Widerst.txt, Widerst.java, *.java , 345.txt, 482.txt |
Kurzbeschreibung:
Ein elektrischer Widerstand soll parallel oder seriell zu einem Widerstandsnetzwerk geschalten werden,
um eine gewünschte Stromstärke bei einer gegebenen Spannung zu erreichen.
Allgemeine Hinweise:
-
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten,
die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie
diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Widerst.java muß aber die Methode main enthalten. Weiters müssen alle abgegebenen Klassenfiles in demselben Verzeichnis vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
[Wir tun das jetzt auch :-)]
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Ein Widerstandsnetzwerk ist eine elektrische Schaltung, bei der mehrere Widerstände seriell oder parallel geschalten werden.
Die Aufgabe Ihres Programmes ist es, den Gesamtwiderstand eines derartigen Netzwerkes auszurechnen und zu
ermitteln, welcher Widerstand zu diesem Netzwerk parallel oder seriell dazugeschalten werden muß, um bei
einer gegeben Spannung einen gewünschten Stromfluß zu erzielen.
(Falls Ihnen Begriffe wie Widerstand oder Ohm noch überhaupt nichts sagen,
dann empfehle ich Ihnen, zuerst die Spezifikation des mitgelieferten Erstrundenprogrammes durchzulesen.)
Zuerst lesen Sie einen String ein, der die Struktur des Netzwerkes beschreibt.
Dieser besteht aus Widerstandswerten, die durch Kommas getrennt sind, und am
Ende soll einer der Buchstaben S oder P, die für Serien- bzw. Parallelschaltung stehen. Dieser gesamte Block ist in Klammern eingeschlossen. Statt eines
Widerstandswertes kann auch eine Substruktur stehen, die wiederum diesen
Aufbau hat. Betrachten wir dies anhand eines Beispiels:
(((1K5,3K4,S),(15,1K,S),P),100,S)
steht für folgendes Netzwerk:
Anschließend lesen Sie den Wert der angelegten Spannung ein und den Wert der
gewünschten Stromstärke.
Zur Berechnung des Gesamtwiderstandes dienen folgende Formeln:
Serienschaltung von R1 und R2 : Gesamtwiderstand = R1+R2
Parallelschaltung von R1 und R2 : Gesamtwiderstand = 1/(1/R1 + 1/R2)
Aus den Angaben von Spannung und Stromstärke kann mittels Ohm'schen Gesetz
(U=R*I Spannung = Widerstand * Stromstärke) der benötigte Gesamtwiderstand
berechnet werden. Aus diesem und dem Widerstand des Netzwerkes kann der Wert
und die Schaltungsart des Zusatzwiderstandes ermittelt werden (tatsächlicher
Wert > benötigter Wert ==> Parallelschaltung, sonst Serienschaltung).
Auszugeben ist der Wert des Zusatzwiderstandes, die Art der Schaltung, sowie
ein vierstelliger Farbcode für den Widerstandswert, dessen erste drei Stellen
den Zahlenwert enthalten, die vierte Stelle den Multiplikator. (Das Programm,
das Sie mitbekommen haben, sollte für diese Aufgabe geeignet sein).
Ist der Widerstandswert nicht genau codierbar, so ist der nächstkleinere codierbare Wert als Farbcode auszugeben.
Ist der Wert des Zusatzwiderstandes < 1, dann geben Sie als Wert 0 aus, aber keine Schaltungsangabe und keinen Farbcode.
Eingabedaten:
Lesen Sie zuerst den String ein, der das Netzwerk beschreibt. Das Netzwerk
darf aus maximal 6 Widerständen aufgebaut sein. Die Widerstände sind durch
Kommas getrennt; durch Klammern und die Zeichen "S" und "P" wird die Struktur
des Netzwerkes bestimmt.
Die Widerstandswerte können als normale Zahlen, z.B. 147 4700 1000000 6.8,
eingegeben werden oder in der Form "Ziffern(n) Multiplikator Ziffer(n)". Der
Multiplikator kann "M" für Mega (10^6), "K" für Kilo (1000) oder "R" für 1
sein und erfüllt gleichzeitig die Aufgabe eines Kommapunktes.
Widerstandswerte kleiner als 1 Ohm sind nicht zulässig.
Weiters sind die Spannung und die gewünschte Stromstärke als Float-Zahlen
einzulesen. Jeder dieser beiden Werte muß größer als 0 und kleiner als 10^9
sein.
Ausgabedaten:
Bei korrekten Eingabesätzen soll Ihr Programm folgende Daten liefern:
a) den Wert des Zusatzwiderstandes als Float-Zahl mit 3 Nachkommastellen
b) die Art der Schaltung: P oder S
c) den Farbcode des Zusatzwiderstandes, bzw. den nächsthöheren Farbcode falls der Widerstand nicht genau codiert werden kann, in eckigen Klammern.
Falls der Zusatzwiderstand < 1 ist, so wird nur "0" ausgegeben; die Punkte b)
und c) entfallen.
Geben Sie zum Schluß einen Zeilenvorschub aus.
Fehlerbehandlung:
Sämtliche Eingabedatensätze sind immer vollständig einzulesen.
Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.
Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.
Waren die Datentypen bei allen Eingaben richtig, die eingegebenen Daten dann aber inhaltlich nicht korrekt, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
(((2K5,1K8,S),(4K7,3K3,S),P),(470,680,P),S) 5 0.2
|
Ausgabedaten
|
25.200 P [rt gn rt go]
|
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 Widerst < Widerst.i1 > Widerst.out1
Das erzeugte File Widerst.out1 können Sie dann mit dem mitgelieferten Outputfile Widerst.o1 vergleichen.