C++ :: Aufgabe #305

2 Lösungen Lösungen öffentlich

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ß


Lösungen:

vote_ok
von The1tobi (200 Punkte) - 10.11.2020 um 21:15 Uhr
Quellcode ausblenden 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;
	
}
vote_ok
von JKooP (7540 Punkte) - 07.01.2021 um 18:09 Uhr
C++ 17
Es werden beide Ergebnisse als Tupel zurückgegeben:
Quellcode ausblenden 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;
}