Vermutlich einfaches Problem
-
Einen schönen guten Abend!
Also ich habe folgendes Problem:
Ich bin programmier anfängerin. Ich habe zwar seit diesem Jahr das Fach programmieren, aber unser Lehrer mutet uns schon ne ganze Menge zu.Heute haben wir fachspezifisch die Aufgabe bekommen:
Programmieren sie ein Programm mit dem sie jede beliebige vorher nicht deklarierten Anzahl von Widerständen in einer Parallel schaltung zusammenrechnen und zu dem Gesamtwiderstand zusammefassen (Formel Rges = 1/ ((1/r1) + (1/r2) + (1/rn))Ich hattte jetzt Quellcode technisch folgenden Ansatz:
#include "iostream.h" #include "conio.h" double werte [50],ngesamt; void main () { cout << "Berechnung des Gesamtwiderstandes nach dem 1. Kirchhoffschen Gesetz" << endl; while (1) { cout << "Geben sie einen Wert ein (0 zum Beenden) : "; cin >> werte[1]; ngesamt=1/((1 /werte[1])); if (werte == 0) break; cout << "Der Geswamtwiderstand ist" << ngesamt <<endl; getch(); } getch (); }Allerdings habe ich dann das Problem, das ich nicht weiß wie ich dann jedesmal die Formel erweitern kann..
Für konstruktive verbesserugnsvorschläge wäre ich sehr sehr dankbar.
Liebe grüße
Sarah
-
Speicher Dir doch als Zwischenwert nur 1/r1 + ... + 1/r_n und berechne den Kehrwert dann erst am Schluß.
-
so könnte es gehen
double wert, ngesamt = 0; void main () { cout << "Berechnung des Gesamtwiderstandes nach dem 1. Kirchhoffschen Gesetz" << endl; while (1) { cout << "Geben sie einen Wert ein (0 zum Beenden) : "; cin >> wert; if (wert == 0) break; ngesamt = ngesamt + 1/wert; } cout << "Der Geswamtwiderstand ist" << 1/ngesamt <<endl; for(;;); }
-
//#include "iostream.h" //wird zu #include <iostream> //ist so Standard #include "conio.h" //und folgendes nicht vergessen: using namespace std; //globale variablen sind zwar möglich, aber sollten vermieden werden double werte [50],ngesamt; int main(){ cout << "alle Werte eingeben, mit 0 ende" << endl; int n = -1; do { n+=1; cin >> werte[i]; //bis null eingegeben wurde } while (werte[n] != 0) //jetzt habe ich meine n Werte in das array werte eingetragen ngesamt = 0; for (int i = 0; i < n; i++) { ngesamt += 1/werte[i]; } ngesamt = 1/ngesamt; cout << ngesamt << endl; }so habs noch nicht getestet, aber denke so müsste es funktionieren. Hoffe ich habe die aufgabe so richtig verstanden. Und sorry, dass ich gleich alles gemacht habe, aber ich weiß nicht, wie ich es sonst erklären sollte.
-
Und einmal ordentlich:
#include <iostream> #include <limits> int main() { std::cout << "1. Kirchhoff'schen Gesetz-Implementierung V0.1" << std::endl; double total = 0.0; for (std::size_t i = 1;; ++i) { std::cout << i << ". Wert: " << std::flush; double value; while (!(std::cin >> value)) { std::cin.sync(); std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } if (value == 0.0) break; total += (1.0 / value); } std::cout << "Gesamt: " << (1.0 / total) << std::endl; std::cin.get(); }
-
kaum ist hier mal weiblicher Besuch, sind alle hilfsbereit und wollen helfen, der eine besser als der andere

-
Ehm nein. Hier war schonmal weiblicher Besuch. Bin aber eh vergeben -.- Davon mal abgesehen das ich (fast) jedem hier versuche zu helfen ...
-
Undertaker schrieb:
so könnte es gehen
double wert, ngesamt = 0; void main () { cout << "Berechnung des Gesamtwiderstandes nach dem 1. Kirchhoffschen Gesetz" << endl; while (1) { cout << "Geben sie einen Wert ein (0 zum Beenden) : "; cin >> wert; if (wert == 0) break; ngesamt = ngesamt + 1/wert; } cout << "Der Geswamtwiderstand ist" << 1/ngesamt <<endl; for(;;); }
Also ich hab jetzt mal darauf aufgebaut, da das für mich am leichtesten nachzuvollziehen war so mehr oder weniger.
Ich danke trotztdem alle für die schnelle und ausführliche Hilfe.
Liebe grüße Sarah
-
sarah s. schrieb:
Also ich hab jetzt mal darauf aufgebaut, da das für mich am leichtesten nachzuvollziehen war so mehr oder weniger.
funzt das denn? ich hab einfach nur deinen code 'gepasted' und drin rumeditiert.

-
Jaja, der Kongurenzkampf hier, jeder will nen besseren Code zeigen! Wie bei den Löwen

-
Kongruenzkampf?

-scnr-
-
ohh entschuldigung.. wieso immer auf so schreibfehler rumgeritten werden muss, obwohl es jeder verstanden hat... :p
-
Undertaker schrieb:
sarah s. schrieb:
Also ich hab jetzt mal darauf aufgebaut, da das für mich am leichtesten nachzuvollziehen war so mehr oder weniger.
funzt das denn? ich hab einfach nur deinen code 'gepasted' und drin rumeditiert.

Jaa der funktioniert super, hab extra nochmal mit nem Taschenrechner nachgerechnet...
darauf werde ich jetzt weiter aufbauen auch reihenschaltung spezifisch etc.