mikrocontroller.net

Forum: Projekte & Code Spannungsteiler berechnen


Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe mal ein kleines Tool zum Berechnen von Spannungsteilern 
geschrieben. Nach Eingabe der entsprechenden Widerstandsreihe (E3, E6, 
E12, ..., E192) und einigen Parametern (z.B. Eingangs- und 
Ausgangsspannung, sowie Gesamtwiderstand) berechnet das Prog die 
entsprechenden Widerstandswerte. Unterstützt werden "Netzwerke" aus bis 
zu zwei Widerständen in Serie oder parallel.

Vielleicht hilft es ja dem Einen oder Anderen. Verbesserungsvorschläge 
und Fehlerberichte sind selbstverständlich willkommen.

Gruss,
Philipp

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Besonders was die Steuerung mittels Kommandozeile anbelangt habe ich 
hier wohl etwas Mist gebaut. Sollte jetzt besser sein.

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für welchen Compiler hast du das Teil geschrieben? Mein VisualStudio C++ 
bringt Fehler beim Compilieren.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Visual Studio 2005 und GCC (Unter Linux). Was denn für Fehler?

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der hier:
C:\Temp\RDC\RDC.cpp(141) : error C2371: 'i' : Neudefinition; 
unterschiedliche Basistypen
C:\Temp\RDC\RDC.cpp(82) : Siehe Deklaration von 'i'
C:\Temp\RDC\RDC.cpp(603) : error C2065: 'max' : nichtdeklarierter 
Bezeichner

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hm, seltsam. Wenn ich es mit Visual C++ 6.0 kompiliere bekomme ich 
ebenfalls diese Fehler. Naja, hab's jetzt mal entsprechend geändert, 
damit sollte es nun gehen.

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wer sich getraut kann auch gleich die kompilierte Exe ausführen.

Autor: Andreas Fischer (chefdesigner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
49 downloads und keine Reaktion ?

Autor: Latex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahnsinn! Das Programm ist genial, ich werde morgen mal ein GUI 
schreiben. Wenn Interesse besteht, lade ich es hier hoch.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas:

Entweder hat's alle umgehauen oder das Prog ist einfach keinen Kommentar 
wert ;)

@Latex:

Danke :)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal eine Umsetzung mit Visual Studio (VC++ 6.0) in ein
Windows Programm.

Ich hab zwar die MFC statisch gelinkt, kann aber nicht ausschliessen,
dass nicht ev. eine DLL oder LIB fehlt. Bei Bedarf bitte melden.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl heinz Buchegger
Win98se --> Geht ohne Lib (bzw... hab VC6 Lib wohl irgenwann mal 
installiert...)

Lösung:
R1 = 2.2 Ohm in Reihe zu 10.0 Ohm
R2 = 10.0 Ohm parallel zu 47.0 Ohm
Widerstand = 20.4 Ohm


Abweichung für U1 = 12.0 V:
U2 = 4.8 V
-3.2 %

Abweichung für U2 = 5.0 V:
U1 = 12.4 V
3.3 %

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl Heinz Buchegger:

Danke für die Arbeit, funktioniert einwandfrei. Ich sehe zwar nicht ganz 
ein, wozu man da eine GUI braucht, aber ich will mich deswegen ja nicht 
beklagen :)

@Läubi:

Ist irgendwas mit dem Ergebnis nicht in Ordnung oder ist das der Beweis, 
dass es funktioniert?

Autor: Agamemnon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja Kommandozeile muss man im 21. Jahrhundert nun wirklich nicht mehr 
haben...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp Burch wrote:
> @Karl Heinz Buchegger:
>
> Danke für die Arbeit, funktioniert einwandfrei. Ich sehe zwar nicht ganz
> ein, wozu man da eine GUI braucht, aber ich will mich deswegen ja nicht
> beklagen :)

Hauptsächlich deshalb, weil ich mir dann keine Command Line
Options merken muss. Und jedesmal dann vorher das ganze mit
Help aufrufen, nur um dann zu grübeln ob zwischen Command Line
Switch und zugehörigem Argument ein Blank reinmuss oder nicht,
und überhaupt ... Bin halt schon etwas älter :-)


Ach ja: Ein Bug ist mir aufgefallen.
Du hast da 2 Abfragen drinn (aus dem Kopf zitiert)

  if( dev < 1.0 / 1000000.0 )
    cout << "dev <  1ppm";

dass muss natürlich heissen

  if( fabs( dev ) < 1.0 / 100000.0 )
    cout << "dev <  1ppm";

dev kann auch negativ werden.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Au mann für sowas banales ein Programm? Das sollte jeder der etwas von 
sich hällt im gebiet Elektrontechnik doch auch so hinbekommen? Ein 
Spannungsteiler is ja jetzt mal nciht soo schwierig der erklärt sich ja 
schon durch das Wort Spannungsteiler wie von selbst...

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan:

Dann rechnest du garantiert wenn du eine Schaltung entwirfst oder bei 
einer bestehenden Schaltung etwas Feintuning betreibst die notwendigen 
Widerstandswerte im Kopf aus? Und weißt natürlich auch sofort VORHER 
dass der notwendige zweite (oder dritte) Widerstand im Teiler auch in 
der Bastelkiste vorhanden ist? Respekt.... ;)

Nettes Tool, hab bisher immer Excel bzw Calc dafür bemüht..

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:
> Au mann für sowas banales ein Programm? Das sollte jeder der etwas von
> sich hällt im gebiet Elektrontechnik doch auch so hinbekommen? Ein
> Spannungsteiler is ja jetzt mal nciht soo schwierig der erklärt sich ja
> schon durch das Wort Spannungsteiler wie von selbst...

Im Prinzip hast du Recht.
Ich hatte heute das 'Problem' einen Spannungsteiler von 12V auf
5V zu rechnen, wobei ich einen Widerstand mit 10k ausführen
möchte.
Klar hätte ich mir einen Taschenrechner nehmen können und das
schnell durchrechnen. Ich hab mich halt an das Programm erinnert
und in einer schwachen Stunde das Original in VC++ mit einer
GUI drumherum versehen. Ist ja auch nicht ganz uninteressant, wenn
dir das Programm dann auch noch heraussucht, welche Widerstände
es überhaupt in der E-Serie gibt und dir auch noch ausrechnet,
welcher Fehler sich dadurch ergibt. Oder: Du weist welche
Spannung du erreichen möchtest und welchen Gesamtwiderstand
der Spannungsteiler haben soll. Wie gross sollen die Widerstände
sein? Wie kann man mit einer Parallel- bzw. Serienschaltung die
geforderten Widerstände des Teilers erreichen?

Klar: Das alles ist keine Raketentechnik. Aber die vornehmste
Aufgabe eines Computer ist es doch, mir Routinearbeit abzunehmen :-)

(Und ehrlich gesagt, weiß ich die Formeln nicht auswendig. Und
wenn ich die Formeln jedesmal neu ableiten muss, dann kann ich mir
die Formeln auch ein für allemal in ein Programm packen)

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Philipp Burch wrote:
>> @Karl Heinz Buchegger:
>>
>> Danke für die Arbeit, funktioniert einwandfrei. Ich sehe zwar nicht ganz
>> ein, wozu man da eine GUI braucht, aber ich will mich deswegen ja nicht
>> beklagen :)
>
> Hauptsächlich deshalb, weil ich mir dann keine Command Line
> Options merken muss. Und jedesmal dann vorher das ganze mit
> Help aufrufen, nur um dann zu grübeln ob zwischen Command Line
> Switch und zugehörigem Argument ein Blank reinmuss oder nicht,
> und überhaupt ... Bin halt schon etwas älter :-)

Das Prog läuft auch wenn du ihm keinen Parameter gibst ;)
Aber egal, jedem das Seine. Ich kann ja auch nicht von mir behaupten, 
dass ich dieses schwarze Fensterchen einer anständigen GUI vorziehe...

> Ach ja: Ein Bug ist mir aufgefallen.
> Du hast da 2 Abfragen drinn (aus dem Kopf zitiert)
>
>   if( dev < 1.0 / 1000000.0 )
>     cout << "dev <  1ppm";
>
> dass muss natürlich heissen
>
>   if( fabs( dev ) < 1.0 / 100000.0 )
>     cout << "dev <  1ppm";
>
> dev kann auch negativ werden.

Da hast du natürlich Recht, danke!


@Stefan:

Ich wusste, dass das noch kommen musste. Daher habe ich mir auch schon 
entsprechende Argumente zurechtgelegt:
1. "Ein Elektrotechniker der was auf sich hält" verwendet Hilfsmittel 
die ihm das Leben erleichtern. Jeder Mensch ist von Natur aus faul ;)
2. Es geht ja nicht darum, bei gegebener Eingangsspannung und zwei 
Widerständen die Ausgangsspannung zu berechnen. Das ist wirklich banal. 
Aber es geht darum, den "idealen" Spannungsteiler aus einer Kombination 
von bis zu vier Widerständen zu finden. Das ist im Kopf doch nicht mehr 
ganz so trivial.
3. Es gibt schon genügend unnütze Programme, da kommt's auf Eines mehr 
oder weniger eh nicht mehr an.
4. Rumtrollen kannste woanders, wenn es deine Ehre nicht zulässt, sowas 
zu verwenden zwingt dich ja auch keiner dazu.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> (Und ehrlich gesagt, weiß ich die Formeln nicht auswendig. Und
> wenn ich die Formeln jedesmal neu ableiten muss, dann kann ich mir
> die Formeln auch ein für allemal in ein Programm packen)

Ich merk mir die Formel so:
Gesamtstrom ausrechnen durch beide Widerstände (ist klar: I=U/R wobei 
R=R1+R2)
Spannung am unteren Widerstand ausrechnen (auch klar: U=R*I wobei 
I=ausgerechneter Gesamtstrom)

So kann man sich die "Spannungsteiler-Formel" ganz gut merken. Falls du 
das nicht ohnehin schon meintest mit herleiten.

Wenn man natürlich nen gegebenen Widerstand hat und den anderen 
Ausrechnen muss, hilft bei mir auch nur noch aufschreiben und umstellen 
der kompletten Formel - hier ist so eine kleine Applikation natürlich 
ordentlich im Vorteil.

Autor: Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ja, dabeisein ist eben alles!
Schönes neues Jahr!

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das Programm mal kurz getestet und es gibt ja die häkchen für 
"Parallel / Serienschaltung zulassen", zulassen klingt für mich, als 
würde er trotzdem die optimale Konfiguration finden, auch wenn der 
Fehler geringer ist, wenn man nur einen Widerstand nutzt.

Hier das "Problem": Eingabedaten U1: 5V, U2 = 3.3V, Rges = 10kOhm

Ohne Parallel/Serienschaltung errechnet das Programm einen fehler von 
3,2%, wenn man die Parallel/Serienschaltung zulässt, errechnet das 
Programm größere Fehler.
Anscheinend ist dem Programm der gegebene Gesammtwiderstand "wichtiger" 
als eine möglichst korrrekte Ausgangsspannug.

Klar kann man jetzt klicken und gucken wo das beste Ergebnis rauskommt, 
aber ... ;)

Edit: war jetzt bezogen auf Widerstandsreihe 3, war halt so eingestellt 
;)

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hauke Radtki wrote:
> Ich hab das Programm mal kurz getestet und es gibt ja die häkchen für
> "Parallel / Serienschaltung zulassen", zulassen klingt für mich, als
> würde er trotzdem die optimale Konfiguration finden, auch wenn der
> Fehler geringer ist, wenn man nur einen Widerstand nutzt.
>
> Hier das "Problem": Eingabedaten U1: 5V, U2 = 3.3V, Rges = 10kOhm
>
> Ohne Parallel/Serienschaltung errechnet das Programm einen fehler von
> 3,2%, wenn man die Parallel/Serienschaltung zulässt, errechnet das
> Programm größere Fehler.
> Anscheinend ist dem Programm der gegebene Gesammtwiderstand "wichtiger"
> als eine möglichst korrrekte Ausgangsspannug.

Ja, das ist mir auch schon aufgefallen. Das Problem liegt in der Art der 
Berechnung: Zuerst wird anhand von U1, U2 und Rges der rechnerisch 
exakte Wert für R1 berechnet. Dann wird die passende Kombination für R1 
gesucht und anschliessend R2 anhand der beiden Spannungen und Rges 
berechnet und gesucht. Warum ich das allerdings so gelöst habe ist mir 
ehrlich gesagt ein Rätsel. Sinnvoller wär's, R2 anhand der Spannungen 
und R1 zu berechnen. Ich hatte da wohl mal wieder geschlafen ;)
Ist korrigiert.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Philipp oder Karl Heinz,

nettes kleines Tool.
Lust weiter zu machen ???? OPV Grundschaltungen ????
Immer wieder lästig diese Rechnerei und Formelumstellung.

Danke und Gruß

Stephan

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan Henning wrote:
> @Philipp oder Karl Heinz,
>
> nettes kleines Tool.
> Lust weiter zu machen ???? OPV Grundschaltungen ????
> Immer wieder lästig diese Rechnerei und Formelumstellung.

Danke. OPVs brauche ich nicht so häufig, aber da liesse sich bestimmt 
was machen. Schreib doch mal auf, was das Tool alles können sollte, 
vielleicht habe ich wiedermal ein Weilchen Zeit für sowas ;)

Sollte man das später im gleichen Tool kombinieren oder lieber ein neues 
Programm schreiben?

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich wünschen dürfte............
ein Proggi mit kleinen Icons für Spannungsteiler, OPV, etc.pp
etc.pp steht für Dinge die Dir oder anderen noch einfallen würden und
natürlich für Dich machbar sind.
Aber rein "elektronische" Berechnungen.

Bei OPV schau mal in die Sparte :
http://www.mikrocontroller.net/articles/Operations...

Wobei ich nicht sagen will, was davon wirklich oft benötigt wird.
Aber der invertierende und nichtinvertierende wird immer gebraucht.
Der Komparator auch.

Gruß

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan Henning wrote:
> wenn ich wünschen dürfte............

Du darfst. Was wirklich umgesetzt wird steht ja eh auf einem anderen 
Blatt ;)

> ein Proggi mit kleinen Icons für Spannungsteiler, OPV, etc.pp

"Symbole" klingt nach GUI, damit habe ich in C++ keine Erfahrung... Ich 
könnte natürlich ein Schwarzes-Fenster-Nur-Mit-Text-Programm machen und 
es jemand anderem überlassen, dazu eine GUI zu basteln. So wie von Karl 
heinz bereits begonnen.

> etc.pp steht für Dinge die Dir oder anderen noch einfallen würden und
> natürlich für Dich machbar sind.
> Aber rein "elektronische" Berechnungen.
>
> Bei OPV schau mal in die Sparte :
> 
http://www.mikrocontroller.net/articles/Operations...

Ja, schlussendlich läuft da ja auch alles auf die Berechnung von 
Spannungsteilern, bzw. Widerstandskombinationen hinaus. Würde also 
relativ gut zum Prog passen.

> Wobei ich nicht sagen will, was davon wirklich oft benötigt wird.
> Aber der invertierende und nichtinvertierende wird immer gebraucht.
> Der Komparator auch.

Ich schau mal wann ich Zeit finde :)

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd sagen ein extra Programm. Die ganzen Programme kann man dann 
gut unter einer GUI zusammenfassen. Ich wäre auch bereit da was mit Java 
hinzuklatschen ;)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das Programm auch gerade runtergeladen und unter Linux kompiliert.
Folgende Kommentare hätte ich dazu:

- Funktioniert.

- Das Programm ist sehr nützlich, da das Finden optimaler
  Widerstandspaare in den E-Reihen von Hand viel zu aufwendig ist.

- Kommandozeilenversionen haben auch im Klickibuntizeitalter ihre
  Berechtigung. Vielleicht weniger auf Windowsplattformen, weil es
  dort kein geeignetes Tool (sprich Shell) gibt, wo man Kommandos
  komfortabel eingeben kann ;-), aber auf fast allen anderen Betriebs-
  systemen. Im Moment scheint auch nur die Kommandozeilenversion
  portabel zu sein. Als portables Zwischending zwischen Komandozeile
  und GUI hast du ja auch noch den Menümodus eingebaut.

- Mein Eindruck ist, dass, wenn man die Maximalzahl von Widerständen
  für R1 und R2 mit 2 angibt, diese auch genutzt werden. Bsp.: E12,
  U1 = 5 V, U2 = 2 V, Rges = 25000 Ohm ergibt R1 = (6,8 + 8,2) kOhm
  und R2 = (1.8 + 8.2) kOhm. Das ist zwar korrekt, aber R1 = 15 kOhm
  und R2 = 10 kOhm wäre einfacher. Ist das beabsichtigt? Dann müsste
  aber "Maximum number of resistors" in "Number of resistors"
  umbenannt werden.

- Wenn du in Zeile 38
          InvalidInputException(char msg[]) : ex(msg) {}
  ein const vor das char schreibst, reduziert sich die Anzahl der
  Warnungen beim gcc 4.2.2 mit -Wall von 14 auf 0.

- Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
  Zahlen und Einheiten ein Leerzeichen einfügt. Ich bin mir bei 100Ohm
  immer etwas unsicher, ob das jetzt 100 oder 1000 Öhmer sind. Kann
  aber auch an meinen Augen liegen. Außerdem kann das ja jeder nach
  seinem Geschmack ändern.

Ich habe natürlich auch die GUI-Variante von Karl Heinz ausprobiert,
und zwar mangels einer Windows-Installation mit Wine unter Linux. Auch
hier meine Kommentare:

- Funktioniert ebenfalls.

- Es werden keine Bibliotheken außer den mit Wine mitgelieferten
  Opensource-Bibliotheken benötigt. Wären alle Windows-Programme so
  geschrieben, könnte M$ bald schließen ;-)

- Kleiner Schönheitsfehler: Die beiden V neben U1 und U2 stehen nicht
  exakt übereinander. Bevor ich jetzt Erbsenzähler gescholten werde:
  Ein Kritikpunkt muss ja sein, und ich konnte keinen anderen finden
  ;-)

Zum scheinbaren Fehler der ersten Version von RDC.cpp:

> Hm, seltsam. Wenn ich es mit Visual C++ 6.0 kompiliere bekomme ich
> ebenfalls diese Fehler.

Das ist ein Feature von VC6: Nach Standard ist eine Variable, die in
Kopf einer For-Schleife definiert wird, nur innerhalb der Schleife
gültig. VC6 sieht das anders. Man kann mittels einer Compiler-Option
die Standardkonformität einschalten (oder zumindest etwas erhöhen).
Dann verschwindet zwar die Fehlermeldung, dafür erntet man hunderte
neue aus den mitgelieferten Include-Files, die ebenfalls den Standard
mit Füßen treten ;-)

In der Nachfolgeversion von VC sind diese Fehler im Compiler und den
Include-Files behoben.

> Ich würd sagen ein extra Programm. Die ganzen Programme kann man
> dann gut unter einer GUI zusammenfassen. Ich wäre auch bereit da was
> mit Java hinzuklatschen ;)

Mit Java-Oberfläche würde das GUI plattformunabhängiger, und man
könnte das Programm sogar auf einem besseren PDA oder Handy laufen
lassen, hätte es also auch dabei, wenn man gerade auf Montage ist :)
Dann würde es sich aber anbieten, das gesamte Programm nach Java
umzuschreiben. Das dürfte ja wegen der Ähnlichkeit von C++ und Java
nicht allzu heftig werden.

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
yalu wrote:
> Hab das Programm auch gerade runtergeladen und unter Linux kompiliert.
> Folgende Kommentare hätte ich dazu:
>
> - Funktioniert.

Schön :)

> - Das Programm ist sehr nützlich, da das Finden optimaler
>   Widerstandspaare in den E-Reihen von Hand viel zu aufwendig ist.
>
> - Kommandozeilenversionen haben auch im Klickibuntizeitalter ihre
>   Berechtigung. Vielleicht weniger auf Windowsplattformen, weil es
>   dort kein geeignetes Tool (sprich Shell) gibt, wo man Kommandos
>   komfortabel eingeben kann ;-), aber auf fast allen anderen Betriebs-
>   systemen. Im Moment scheint auch nur die Kommandozeilenversion
>   portabel zu sein. Als portables Zwischending zwischen Komandozeile
>   und GUI hast du ja auch noch den Menümodus eingebaut.

Ja, ich würde sagen, der Menümodus geht eigentlich nicht so schlecht zum 
Verwenden. Ich mag sowas ;)

> - Mein Eindruck ist, dass, wenn man die Maximalzahl von Widerständen
>   für R1 und R2 mit 2 angibt, diese auch genutzt werden. Bsp.: E12,
>   U1 = 5 V, U2 = 2 V, Rges = 25000 Ohm ergibt R1 = (6,8 + 8,2) kOhm
>   und R2 = (1.8 + 8.2) kOhm. Das ist zwar korrekt, aber R1 = 15 kOhm
>   und R2 = 10 kOhm wäre einfacher. Ist das beabsichtigt? Dann müsste
>   aber "Maximum number of resistors" in "Number of resistors"
>   umbenannt werden.

Da hast du in der Tat recht. Ich hatte zwar eingebaut, dass er bei 
exakten Werten nur einen Widerstand verwendet, aber wenn er vorher auf 
eine passende Kombination gestossen ist, dann hat er die verwendet. Ist 
jetzt korrigiert, ich hoffe mal, ich habe nicht andere Fehler 
eingebaut...

> - Wenn du in Zeile 38
>
>           InvalidInputException(char msg[]) : ex(msg) {}
> 
>   ein const vor das char schreibst, reduziert sich die Anzahl der
>   Warnungen beim gcc 4.2.2 mit -Wall von 14 auf 0.

Danke für den Hinweis. Ist korrigiert.

> - Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
>   Zahlen und Einheiten ein Leerzeichen einfügt. Ich bin mir bei 100Ohm
>   immer etwas unsicher, ob das jetzt 100 oder 1000 Öhmer sind. Kann
>   aber auch an meinen Augen liegen. Außerdem kann das ja jeder nach
>   seinem Geschmack ändern.

Also ich bin ja überhaupt kein Verfechter vom Plenken, da ziehe ich die 
angeklebte Variante definitiv vor. Leider ist 0 und O nunmal recht 
ähnlich... Ich hätte ja eigentlich gerne das richtige Zeichen verwendet, 
aber cmd.exe kommt schon mit Umlauten nicht recht klar, da brauche ich 
mit echten Unicode-Zeichen gar nicht kommen wollen ;)

> Zum scheinbaren Fehler der ersten Version von RDC.cpp:
>
>> Hm, seltsam. Wenn ich es mit Visual C++ 6.0 kompiliere bekomme ich
>> ebenfalls diese Fehler.
>
> Das ist ein Feature von VC6: Nach Standard ist eine Variable, die in
> Kopf einer For-Schleife definiert wird, nur innerhalb der Schleife
> gültig. VC6 sieht das anders. Man kann mittels einer Compiler-Option
> die Standardkonformität einschalten (oder zumindest etwas erhöhen).
> Dann verschwindet zwar die Fehlermeldung, dafür erntet man hunderte
> neue aus den mitgelieferten Include-Files, die ebenfalls den Standard
> mit Füßen treten ;-)
>
> In der Nachfolgeversion von VC sind diese Fehler im Compiler und den
> Include-Files behoben.

Achso, gut zu wissen. Da hat M$ wohl wiedermal sein eigenes Süppchen 
gekocht...

>> Ich würd sagen ein extra Programm. Die ganzen Programme kann man
>> dann gut unter einer GUI zusammenfassen. Ich wäre auch bereit da was
>> mit Java hinzuklatschen ;)
>
> Mit Java-Oberfläche würde das GUI plattformunabhängiger, und man
> könnte das Programm sogar auf einem besseren PDA oder Handy laufen
> lassen, hätte es also auch dabei, wenn man gerade auf Montage ist :)
> Dann würde es sich aber anbieten, das gesamte Programm nach Java
> umzuschreiben. Das dürfte ja wegen der Ähnlichkeit von C++ und Java
> nicht allzu heftig werden.

Über die Verwendung von Java hatte ich am Anfang auch nachgedacht, habe 
mich dann allerdings an unseren Pflicht-Programmierkurs in Java erinnert 
und es daraufhin sein gelassen. Wäre aber sicher eine Überlegung wert, 
vielleicht gibt es hier ja auch Java-Jünger, die gerade nix zu tun 
haben.


Danke für das Feedback!

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier mal wieder eine aktuelle Exe.
Lässt die sich eigentlich so ausführen? Ich hab' immer noch nicht so 
recht verstanden, was ich einstellen muss, damit alle benötigten 
Ressourcen dazugelinkt werden...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und hier die GUI Variante dazu.

@Phillip
Ohne das jetzt kontrolliert zu haben: Die Änderung bezog
sich nur auf get_nearest_combination. Richtig?
Zumindest mit dem oben genannten Testfall kommt bei mir
10k + 15k raus.

>> In der Nachfolgeversion von VC sind diese Fehler im Compiler und den
>> Include-Files behoben.
>
> Achso, gut zu wissen. Da hat M$ wohl wiedermal sein eigenes Süppchen
> gekocht...

Der 'Fairness' halber: ursprünglich wars im Stroustroup C++ so
wie M$ das hatte. Der Scope der Schleifenvariable in

   for( int i = 0; i < 5; ++i )
   {
   }

war nicht auf die Schleife beschränkt. War irgendwie sogar logisch,
da ja die Variable wenn mans genau betrachtet ausserhalb des { }
Blocks definiert wurde. Aus praktischen Gründen hat man aber im
ersten C++ Standard den Scope der Variablen dem { } Block
zugeschlagen. Macht irgendwie mehr Sinn.

Nur: Den ersten C++ Standard gabs 1999. VC++ 6.0 kam 1998 auf den
Markt. Klar, M$ hatte Leute in den Gremien sitzen, hat also
schon frühzeitig gewusst, was da kommen wird. Da wird dann aber
die Zeit nicht mehr gereicht haben, die komplette MFC dahingehend
umzuarbeiten, bzw. man wollte kein Risiko eingehen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Und hier die GUI Variante dazu.

Ooops. Anhang vergessen

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Und hier die GUI Variante dazu.
>
> @Phillip
> Ohne das jetzt kontrolliert zu haben: Die Änderung bezog
> sich nur auf get_nearest_combination. Richtig?

Fast. Die Definition von 'InvalidInputException' habe ich noch mit dem 
'const' versehen (Siehe yalus Post oben). Ausserdem habe ich in 
'find_values()' noch einige Überprüfungen auf plausible Werte eingebaut. 
Das betrifft allerdings eigentlich nur die Kommandozeilenversion. 
'make_nice_val()' habe ich ebenfalls noch leicht korrigiert, da gab's 
noch ein Problem mit negativen Werten. Müsste jetzt auch passen 
(Negative Spannungen werden ja auch unterstützt, ist allerdings nicht 
wirklich sinnvoll).

> Zumindest mit dem oben genannten Testfall kommt bei mir
> 10k + 15k raus.

Dann hast du die wichtigste Änderung erwischt ;)

>>> In der Nachfolgeversion von VC sind diese Fehler im Compiler und den
>>> Include-Files behoben.
>>
>> Achso, gut zu wissen. Da hat M$ wohl wiedermal sein eigenes Süppchen
>> gekocht...
>
> Der 'Fairness' halber: ursprünglich wars im Stroustroup C++ so
> wie M$ das hatte. Der Scope der Schleifenvariable in
>
>    for( int i = 0; i < 5; ++i )
>    {
>    }
>
> war nicht auf die Schleife beschränkt. War irgendwie sogar logisch,
> da ja die Variable wenn mans genau betrachtet ausserhalb des { }
> Blocks definiert wurde. Aus praktischen Gründen hat man aber im
> ersten C++ Standard den Scope der Variablen dem { } Block
> zugeschlagen. Macht irgendwie mehr Sinn.
>
> Nur: Den ersten C++ Standard gabs 1999. VC++ 6.0 kam 1998 auf den
> Markt. Klar, M$ hatte Leute in den Gremien sitzen, hat also
> schon frühzeitig gewusst, was da kommen wird. Da wird dann aber
> die Zeit nicht mehr gereicht haben, die komplette MFC dahingehend
> umzuarbeiten, bzw. man wollte kein Risiko eingehen.

Ok, so gesehen sollte man M$ wohl nicht zu start verurteilen. Aber es 
gibt ja genügend andere Standards die sie mit Füssen treten ;)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Intervall

>> - Mein Eindruck ist, dass, wenn man die Maximalzahl von
>>   Widerständen für R1 und R2 mit 2 angibt, diese auch genutzt
>>   werden.
> Ist jetzt korrigiert, ich hoffe mal, ich habe nicht andere Fehler
> eingebaut...

Scheint zu funktionieren.

>>   ein const vor das char schreibst, reduziert sich die Anzahl der
>>   Warnungen beim gcc 4.2.2 mit -Wall von 14 auf 0.
>
> Danke für den Hinweis. Ist korrigiert.

Ja, alle Warnungen sind weg.

>> - Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
>>   Zahlen und Einheiten ein Leerzeichen einfügt.
> Also ich bin ja überhaupt kein Verfechter vom Plenken, da ziehe ich
> die angeklebte Variante definitiv vor.

Das hat mit Plenken (Leerzeichen vor Satzzeichen) nichts zu tun. Typo-
graphisch korrekt wäre eigentlich ein kleiner Abstand zwischen Zahl
und Einheit. Da es aber in der Terminalschrift keine halben Leerzei-
chen gibt, muss man sich entscheiden, ob man dieses auf 1 Leerzeichen
auf- oder auf 0 abrundet. Aber, wie gesagt, das kann jeder halten wie
er will.

> Und hier mal wieder eine aktuelle Exe. Lässt die sich eigentlich so
> ausführen?

Unter Wine ja, und deswegen wahrscheinlich in jedem "echten"
DOS/Windows erst recht. Aber die Exe scheint nicht aus deinem main.cpp
vom 4.1.08 um 11:26 entstanden zu sein.

Für die folgende Eingabefolge (im Menümodus)
  3 1 5 2 0 0 50000 1 1
liefert main.cpp ein Ergebnis, RDC.exe hingegen "No suitable solution
could be found for R1!". Auch die GUI-Variante von Karl Heinz bringt
die Fehlermeldung. Oder liegt die Lösung vielleicht so hart an der
Toleranzschwelle, dass Rundungsfehler in der FP-Lib von GNU bzw. MS zu
diesem Unterschied führen?


Jetzt hätte ich noch einen Verbesserungsvorschlag, den ich gestern
vergessen habe:

Ohne mir ihn näher angeschaut zu haben, scheint dein Algorithmus bei
Eingabe von U1, U2 und Rges eine Lösung zu suchen, bei der der Fehler
sowohl von U2 als auch von Rges minimiert wird. In der Praxis ist der
Fehler von Rges oft (wenn auch nicht immer) unerheblich. Wenn ich, wie
in obigem Beispiel, einen Teiler von 5V nach 2V suche, ist mir
ziemlich egal, ob Rges 10k oder 100k beträgt (1k oder 1M wären
allerdings ungünstig). Wenn ich nun auf gut Glück 20k vorgebe, bekomme
ich eine Lösung mit -1,46% Fehler für U2, obwohl mir die Lösung mit
25k und 0% Fehler lieber gewesen wäre.

Schön wäre es deswegen, wenn der Rges-Fehler vom Benutzer vorgegeben
werden könnte, entweder in Prozenten oder als Intervall (bspw. 10k bis
100k).


Karl heinz Buchegger schrieb:
> Und hier die GUI Variante dazu.

Ha, die beiden V stehen jetzt richtig übereinander ;-) Vielen Dank!

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yalu wrote:
>>> - Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
>>>   Zahlen und Einheiten ein Leerzeichen einfügt.
>> Also ich bin ja überhaupt kein Verfechter vom Plenken, da ziehe ich
>> die angeklebte Variante definitiv vor.
>
> Das hat mit Plenken (Leerzeichen vor Satzzeichen) nichts zu tun. Typo-
> graphisch korrekt wäre eigentlich ein kleiner Abstand zwischen Zahl
> und Einheit. Da es aber in der Terminalschrift keine halben Leerzei-
> chen gibt, muss man sich entscheiden, ob man dieses auf 1 Leerzeichen
> auf- oder auf 0 abrundet. Aber, wie gesagt, das kann jeder halten wie
> er will.

Gut, "Plenken" war vielleicht das falsche Wort. Sollte eigentlich mehr 
eine Anspielung auf das Problem bei Zeilenumbrüchen sein. Ist hier 
allerdings wohl eher unerheblich... Naja, ich überlasse es jedem selbst. 
Alternativ könnte die Einheit auch komplett weggelassen werden.

>> Und hier mal wieder eine aktuelle Exe. Lässt die sich eigentlich so
>> ausführen?
>
> Unter Wine ja, und deswegen wahrscheinlich in jedem "echten"

Gut zu wissen.

> DOS/Windows erst recht. Aber die Exe scheint nicht aus deinem main.cpp
> vom 4.1.08 um 11:26 entstanden zu sein.
>
> Für die folgende Eingabefolge (im Menümodus)
>
>   3 1 5 2 0 0 50000 1 1
> 
> liefert main.cpp ein Ergebnis, RDC.exe hingegen "No suitable solution
> could be found for R1!". Auch die GUI-Variante von Karl Heinz bringt
> die Fehlermeldung. Oder liegt die Lösung vielleicht so hart an der
> Toleranzschwelle, dass Rundungsfehler in der FP-Lib von GNU bzw. MS zu
> diesem Unterschied führen?

Das dürfte an Rundungsfehlern liegen. Der benötigte Wert ist 30k, 
get_nearest_value() findet 27k und die Toleranz beträgt 3k. Leider fehlt 
da ein '=', denn 3k ist ja eben gerade nicht kleiner als 3k ;)
Ist korrigiert.

> Jetzt hätte ich noch einen Verbesserungsvorschlag, den ich gestern
> vergessen habe:
>
> Ohne mir ihn näher angeschaut zu haben, scheint dein Algorithmus bei
> Eingabe von U1, U2 und Rges eine Lösung zu suchen, bei der der Fehler
> sowohl von U2 als auch von Rges minimiert wird. In der Praxis ist der
> Fehler von Rges oft (wenn auch nicht immer) unerheblich. Wenn ich, wie
> in obigem Beispiel, einen Teiler von 5V nach 2V suche, ist mir
> ziemlich egal, ob Rges 10k oder 100k beträgt (1k oder 1M wären
> allerdings ungünstig). Wenn ich nun auf gut Glück 20k vorgebe, bekomme
> ich eine Lösung mit -1,46% Fehler für U2, obwohl mir die Lösung mit
> 25k und 0% Fehler lieber gewesen wäre.
>
> Schön wäre es deswegen, wenn der Rges-Fehler vom Benutzer vorgegeben
> werden könnte, entweder in Prozenten oder als Intervall (bspw. 10k bis
> 100k).

Da hast du recht. Allerdings will mir gerade keine gescheite Lösung für 
dieses Problem einfallen. Im Moment wird ja jede Lösung durch ein leicht 
optimiertes Brute-Force-Verfahren gesucht. Also einfach alle 
Kombinationen durchprobieren bis ein passendes Ergebnis gefunden wird. 
Das funktioniert für die Kombination aus zwei Widerständen ja auch schon 
ganz ordentlich, dummerweise geht das aber halt nur, wenn ich wirklich 
genau den Wert suche. Ich könnte nun natürlich hingehn und noch eine 
Schleife mehr hinpacken, die z.B. 20 verschiedene Werte für Rges 
aussucht und dann die Lösung mit dem kleinsten Fehler raussucht. Nur: 
Was nehme ich dann als Intervall?
Das Problem liegt ja eigentlich hier:
    //Calculate resistors
    // | R1 + R2 = Resistance     |
    // | R2 / (R1 + R2) = U2 / U1  |
    // => R1 = ((U1 - U2) * Resistance) / U1
    R1 = ((U1 - U2) * Resistance) / U1;
    if (!get_nearest_combination(values, &R1, &R1cnt, &r11, &r12, &mode1)) {
      throw InvalidInputException("No suitable solution could be found for R1!");
    }
    R2 = R1 * U2 / (U1 - U2);
    if (!get_nearest_combination(values, &R2, &R2cnt, &r21, &r22, &mode2)) {
      throw InvalidInputException("No suitable solution could be found for R2!");
    }
    Resistance = R1 + R2;
Ich habe ja zwei Gleichungen mit zwei Unbekannten, wovon ich erstmal R1 
anhand der Spannungen und des Gesamtwiderstands berechne. Hier müsste 
ich nun bereits in Betracht ziehen, welche Werte vorhanden sind und Rges 
(Resistance) entsprechend anpassen...

Was mir gefallen würde, wäre eine Berechnung anhand der 
Bildungsvorschrift der E-Reihe, denn die ist ja bekannt. Für einzelne 
Widerstände würde ich mir noch zutrauen, da etwas zu finden, doch bei 
Kombinationen dürfte das schon einigermassen kompliziert werden. Aber 
ich werde mal was ausprobieren :)

> Karl heinz Buchegger schrieb:
>> Und hier die GUI Variante dazu.
>
> Ha, die beiden V stehen jetzt richtig übereinander ;-) Vielen Dank!

^^

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Grmpf.

Autor: The one (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl heinz Buchegger

mal eine Frage zu dem Programm mit dem du die GUI gemacht hast. Lässt 
sich das mit C# unter Visual Studio 2005 mit der Express Version machen 
oder braucht man da die kostenpflichtige Vollverion um eine Exe.Datei zu 
entwickeln?

Ich habe vor zuerst mal so eine Art Tascherechner zu machen mit den man 
Komplexe Zahlen berechnen kann.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Express-Versionen sind dahingehend nicht eingeschränkt.

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wars denn aber nicht so dass programme die mit den Express editions 
gemacht wurden nur auf dem jeweiligen rechner laufen?
ich hab jedenfalls mal eine bekommen die immer mit solche einer 
fehlermeldung beim start abbrach.

Gruß
Fabian

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre mir neu.

Guck' mal hier: http://www.microsoft.com/express/support/faq/

Besonders: "# Can I use Express Editions for commercial use?

Yes, there are no licensing restrictions for applications built using 
Visual Studio Express Editions."

Wäre relativ sinnlos, wenn man die Progs nicht weitergeben könnte...

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal ein Versuch...

Jetzt berechnet das Programm (wenn möglich) 9 verschiedene Lösungen mit 
Werten für Rges im Bereich von Vorgabe / 5 bis Vorgabe * 5. Die Lösungen 
werden dann nach dem Fehler sortiert und ausgegeben. Wie viele 
Ergebnisse ausgegeben werden sollen, kann ebenfalls angegeben werden.

Leider mutiert das ganze Prog irgendwie schon wieder zum Flickwerk...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, selber schuld!

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:
> Tja, selber schuld!

Na, sag bloss.

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab gerade mal in der windows version U1=24V, U2=0, R1=47390, R2=47000, 
Rges=0 eingegeben... da errechnet er mir ein U2 von 12V - ist aber 
falsch. Aus irgend einen Grund rechnet er auch mit 47,4k anstatt meinen 
47k + 390

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Naja, "falsch" würde ich nicht unbedingt sagen. Es werden halt sämtliche 
Ausgaben auf 3 signifikante Stellen gerundet. Das "korrekte" Ergebnis 
wäre ja etwa 11.95V, das wird nunmal auf 12V aufgerundet. Zugegeben, 
hier etwas extrem, ich hab's mal auf vier Stellen geändert und ein 
weiteres Argument für die Commandline gebastelt um die Genauigkeit (Oder 
die Auflösung?) einzustellen (1 - 6 Stellen).

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> - Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
>>   Zahlen und Einheiten ein Leerzeichen einfügt.
> Also ich bin ja überhaupt kein Verfechter vom Plenken, da ziehe ich
> die angeklebte Variante definitiv vor.

Eigentlich kann man in diesem Fall nichts vorziehen oder mögen. Man 
schreibt auch nicht 100SäckeKartoffeln, 1Meter oder dergleichen. 
Zwischen Zahl und Einheit gehört ein Leerzeichen um als halbwegs 
korrektes Deutsch durchzugehen.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl wrote:
>>> - Bei der Ausgabe der Ergebnisse wäre zu überlegen, ob man zwischen
>>>   Zahlen und Einheiten ein Leerzeichen einfügt.
>> Also ich bin ja überhaupt kein Verfechter vom Plenken, da ziehe ich
>> die angeklebte Variante definitiv vor.
>
> Eigentlich kann man in diesem Fall nichts vorziehen oder mögen. Man
> schreibt auch nicht 100SäckeKartoffeln, 1Meter oder dergleichen.

Naja, das sind ja alles ausgeschriebene Wörter. Ich könnte natürlich 
zwischen dem Widerstand und "Ohm" ein Leerzeichen machen, zwischen der 
Spannung und "V" aber nicht, denn "12 V" schreibe ich ganz bestimmt 
nicht. Ob korrekt oder nicht. Allenfalls "12 Volt".

Aber das kann ja wirklich jeder so anpassen wie er will, wozu gibt's 
schliesslich den Sourcecode (Nein, dafür werde ich keine 
Kommandozeilenoption einbauen ;) ).

> Zwischen Zahl und Einheit gehört ein Leerzeichen um als halbwegs
> korrektes Deutsch durchzugehen.

Das Programm ist Englisch ;)

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrekterweise heißt es trotzdem 12 V, 5 A und auch 100 Ohm. Bei den Ohm 
zieht nichtmal das Argument, dass es kein ausgeschriebenes Wort ist ;)
Einen Kommandozeilenschalter will ich auch gar nicht, wenn dann mach es 
richtig. Wenn ich im Moment Verwendung für das Programm hätte, würde 
mich das ärgern bei jeder neuen Version wieder meine privaten 
Anpassungen zu machen.

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also gut, ich gebe mich geschlagen. Hier die Version mit den 
Leerzeichen. Vielleicht habe ich es sogar überall erwischt... (Ausser 
bei Prozenten, das ist eher sowas wie ein Einheitenvorsatz)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ein Programm mit GUI ist doch kontraproduktiv weil es die 
Möglichkeiten einschränkt. Sinnvoll ist eine GUI als eigenständiges 
Programm, welche das Spannungsteilerprogramm selber aufruft. Somit hat 
man beide Vorteile, Kommandozeile zum schnellen Tippen und zum Einbau in 
Skripte oä und eine GUI für komfortable Bedienung ohne Dokumentation 
lesen zu müssen.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte mit meinem Kommentar bzgl. der Leerzeichen eigentlich keine
Grundsatzdiskussion auslösen (deswegen der Zusatz "wäre zu überlegen"
in meinem ersten Post).

Hätte ich die Kommentare von Karl früher gelesen, hätt ich ihm gerne
ein Sed-Skript o.ä. angeboten, mit dem er bei jeder neuen Version mit
einem Kommando vor sämtliche von Einheiten Leerzeichen einfügen
kann (evtl. sogar direkt im Executable) ;-)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oje, jetzt sehe ich gerade: Dein Dich-Geschlagen-Geben zieht weitere
Kreise. Ich habe gerade folgende Ausgabe erhalten:
Solution 1:
R1 = 47k Ohm
R2 = 33k Ohm
Resistance = 80k Ohm

Jetzt bekomme ich langsam ein richtig schlechtes Gewissen wegen meiner
Meckerei über die fehlenden Leerzeichen <-(

Zum Schluss aber noch etwas Positives: Die Möglichkeit, mehrere
Lösungen ausgeben zu lassen, finde ich echt topp. So ist immer die
gewünschte mit dabei, egal ob man auf genauen Teilungsfaktor oder
genauen Gesamtwiderstand Wert legt :-)

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yalu wrote:
> Oje, jetzt sehe ich gerade: Dein Dich-Geschlagen-Geben zieht weitere
> Kreise. Ich habe gerade folgende Ausgabe erhalten:
>
>
> Solution 1:
> R1 = 47k Ohm
> R2 = 33k Ohm
> Resistance = 80k Ohm
> 
>
> Jetzt bekomme ich langsam ein richtig schlechtes Gewissen wegen meiner
> Meckerei über die fehlenden Leerzeichen <-(

Mach dir keinen Kopf deswegen. Dass die Ergebnisse nun so aussehen, war 
klar, sollte das Leerzeichen denn direkt hinter die Zahl? In meinen 
Augen gehört die Vorsilbe (Oder wie man das nennen will) eher zur Zahl 
als zur Einheit. Das zu ändern wäre allerdings nicht weiter schwer.

> Zum Schluss aber noch etwas Positives: Die Möglichkeit, mehrere
> Lösungen ausgeben zu lassen, finde ich echt topp. So ist immer die
> gewünschte mit dabei, egal ob man auf genauen Teilungsfaktor oder
> genauen Gesamtwiderstand Wert legt :-)

Danke :)

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ja, ich kleiner Pedant schon wieder:
# Zwischen Einheitenvorsatzzeichen und Einheitenzeichen wird kein 
Zwischenraum geschrieben.
# Die Zusammensetzung aus Einheitenvorsatzzeichen und Einheitenzeichen 
bildet ein neues, untrennbares Einheitenzeichen, das ein Vielfaches oder 
einen Teil der betreffenden Einheit bezeichnet.

Aus: 
http://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BC...

Autor: Philipp Burch (philipp_burch)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Karl wrote:
> Ja, ja, ich kleiner Pedant schon wieder:
> # Zwischen Einheitenvorsatzzeichen und Einheitenzeichen wird kein
> Zwischenraum geschrieben.
> # Die Zusammensetzung aus Einheitenvorsatzzeichen und Einheitenzeichen
> bildet ein neues, untrennbares Einheitenzeichen, das ein Vielfaches oder
> einen Teil der betreffenden Einheit bezeichnet.
>
> Aus:
> http://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BC...

Grmpf, nach sowas hatte ich noch gesucht und nicht gefunden... Danke.

Korrigierte Version im Anhang.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Programm bewegt sich unaufhaltsam in Richtung Perfektion ;-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie bekomme ich das Programm unter Linux zum Laufen?

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gast:

Indem du es mit dem g++ kompilierst. Irgendein Linuxer hier wird dir 
sicher sagen können, wie das am einfachsten geht, ich hab's grade nicht 
auswendig im Kopf.

@yalu:

:)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie bekomme ich das Programm unter Linux zum Laufen?

Wenn der Quellcode in main.cpp steht:
  g++ -o main main.cpp
oder einfach (ohne Makefile)
  make main
Eine
   warning: no newline at end of file
kannst du ignorieren.

Danach kannst du das kompilierte Programm mit
  main
bzw.
  ./main
(je nachdem, wie dein PATH konfiguriert ist) aufrufen.

Die GUI-Version von Karl Heinz läuft problemlos mit Wine (ich habe
Version 0.9.50):
  wine Spannung.exe

Autor: Maximilian .. (maxpautsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weils irgendwie halbwegs in den thread passt ;)

vielleicht hilft das ja auch dem ein oder anderem:
http://hackwerk.de/widerstand/index.php

die berechnung wird online durchgeführt. (man muss also nichts 
runterladen)

man gibt das gewünschte übertragungsverhältnis an und erhält 
verschiedene vorschläge, die mit genauigkeit und realem verhältnis 
aufgelistet werden.

die mindest-genauigkeit kann vorgegeben werden - es werden höchstens 4 
widerstände verwendet.

realisiert auch übertragungsverhältnisse > 1 oder < 0 mit OPVs. (zeigt 
entsprechende schaltung an)

e-reihen wählbar. zusätzliche widerstandswerte können, wenn gewünscht 
angegeben werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.