C++ :: Aufgabe #305
2 Lösungen
Berechnung von Widerständen
Anfänger - C++
von JKooP
- 04.10.2020 um 10:58 Uhr
Schreibe eine Methode bzw. Funktion, mit der man den Gesamtwiderstand von Parallel- bzw. Reihenschaltungen berechnen kann.
Dabei sollen sowohl die Werte der Einzelwiderstände als auch die Art der Schaltung vom Benutzer erfragt werden.
Variante 1: 2 separate Funktionen: f(float a, float b, … float n)
Variante 2: 1 kombinierte Funktion: f(artDerSchaltung, float a, float b, … float n)
Viel Spaß
Dabei sollen sowohl die Werte der Einzelwiderstände als auch die Art der Schaltung vom Benutzer erfragt werden.
Variante 1: 2 separate Funktionen: f(float a, float b, … float n)
Variante 2: 1 kombinierte Funktion: f(artDerSchaltung, float a, float b, … float n)
Viel Spaß
Lösungen:
C-Code
#include <iostream> #include <math.h> using namespace std; // Variante 1: double resistorSerial(float res1 , float res2) { float resSerGes = 0; resSerGes = res1 + res2; return resSerGes; } double resistorSerial(float res1 , float res2 , float res3 , float res4) { float resSerGes = 0; resSerGes = res1 + res2 + res3 + res4; return resSerGes; } double resistorSerial(float res1 , float res2 , float res3 , float res4 , float res5) { float resSerGes = 0; resSerGes = res1 + res2 + res3 + res4 + res5; return resSerGes; } double resistorPara(float res1 , float res2 , float res3) { double resParGes = 0; resParGes = pow((1/res1 + 1/res2 + 1/res3) , -1); return resParGes; } // Variante 2: double resistorChoose(int artDerSchaltung , float res1 , float res2 , float res3) { double resistorErg; if(artDerSchaltung == 1) { resistorErg = res1 + res2 + res3; return resistorErg; } if(artDerSchaltung == 2) { resistorErg = pow((1/res1 + 1/res2 + 1/res3) , -1); return resistorErg; } return resistorErg; } int main () { cout << "Fuer Seriel Berechnung = 1" << endl; cout << "Fuer Parallel Berechnung = 2" << endl << endl << endl << endl; cout << "Serien Widerstand =" << resistorSerial(100 , 200 , 300, 500) << " Ohm" << endl; cout << "Parallel Widerstand = " << resistorPara(100 , 100 , 100) << " Ohm" << endl << endl; cout << "Serien Widerstand =" << resistorChoose(1, 100 , 200 , 300) << " Ohm" << endl; cout << "Parallel Widerstand = " << resistorChoose(2 ,100 , 100 , 100) << " Ohm" << endl; }
C++ 17
Es werden beide Ergebnisse als Tupel zurückgegeben:
Es werden beide Ergebnisse als Tupel zurückgegeben:
C-Code
#include <iostream> #include <tuple> #include <vector> using namespace std; tuple<double, double> get_res_sum(vector<double> res_values) { auto parallel{ 0.0 }; auto serial{ 0.0 }; if(res_values.size() == 0) return make_tuple(0, 0); for (const auto& v : res_values) { serial += v; parallel += 1 / v; } return make_tuple(serial, 1 / parallel); } int main() { auto r{ get_res_sum({100, 100, 100}) }; cout << "Seriell: " << get<0>(r) << " Ohm\tParallel: " << get<1>(r) << " Ohm" << endl; }