0 Daumen
1,3k Aufrufe

Bild:
Bildschirmfoto 2019-12-03 um 14.17.51.png


Aufgabe:
Berechne den Gesamtwiderstand in diesem Stromkreis.
Vorab: wir dürfen nur Typ int verwenden. 

Bedingung:
After input of the four values, the program should output the result arithmetically rounded to the next integer.


Idee:

In einem Stromkreis mit Widerständen seriell:  \(R12 = R1,R2\) und seriell: \(R34 = R3,R4\)
lassen sich die seriell geschaltenen Widerstände einfach addieren. 

Danach muss für den Gesamtwiderstand \(Rtot\)  \(R12\) und \(R34\) parallel addiert werden. 

Ich nutzte die Formel: \(Rtot = R12*R34 / R12+R34 \) (Siehe im Code Zeile 31) 

Problem: Ich weiss nicht, was die Formel genau tut, ich glaube aber das hat mit Rundung (Bedingung oben) zu tun 

Für den Gesamtwiderstand \(Rtot\) muss man dann allerdings die parallelgeschaltenen \(R12, R13\) berechnen. 

Code:

#include<iostream>

int main(){
 
  int R1;
  int R2;
  int R3;
  int R4;
  int R12;
  int R34;
  int Rtot;
 
  //enter each ressisatnce value
  std::cout<< "Enter R1 : " << std::endl;
  std::cin >> R1;
  std::cout<< "Enter R2 : " << std::endl;
  std::cin >> R2;
  std::cout<< "Enter R3 : " << std::endl;
  std::cin >> R3;
  std::cout<< "Enter R4 : " << std::endl;
  std::cin >> R4;
 
  //cumpute R12 and R34
  R12 = R1+R2;
  std::cout <<"Value of R12 = " << R12 << std::endl;
 
  R34 = R3+R4;
  std::cout <<"Value of R34 = " << R34 << std::endl;
 
  //Compute total resistance
  Rtot = ((R12 * R34)/(R12+R34));
 
  std::cout << "The total resistance in this cirquit is : " << Rtot << std::endl;
 
 
  return 0;

}



von

1 Antwort

+1 Daumen

Hallo limonade,

Problem: Ich weiss nicht, was die Formel genau tut, ich glaube aber das hat mit Rundung (Bedingung oben) zu tun

Ja genau. Die Formel kann man genauso schreiben als $$R_{\text{tot}} = \frac{R_{12} \cdot R_{34}}{R_{12} + R_{34}}= \frac 1{\frac 1{R_{12}} + \frac 1{R_{34}}}$$ Siehe auch Parallelschaltung oder auch hier. Wenn Du letzteres aber mit Integer-Variablen programmierst, so kommt bei einer Division von \(1\) durch eine Zahl größer als \(1\) immer der Wert 0 heraus.

Mal angenommen, die Widerstände sind in Ohm gegeben und sind alle größer als 1Ohm, was in elektronischen (nicht energieelektrisch!) Schaltungen praktisch immer der Fall ist. Dann würde der Ausdruck

Rtot = 1/(1/R12 + 1/R34);

in einer Division durch 0 enden, da sowohl 1/R12 als auch 1/R34 die Division nach Ganzzahl ohne Rest durchführen und das wäre hier immer \(=0\).

Bei einer Parallelschaltung werden nicht die Widerstände sondern die Leitwerte addiert. Der Leitwert ist der reziproke Wer des Widerstandes und kannst Du auch mit Durchlässigkeit übersetzen. Die Gesamtdurchlässigkeit ist dann die Summe aller Durchlässigkeiten. Schaltet man viele Widerstände \(R_1, \, R_2,\, R_3, \,R_4 \dots\) parallel dann sieht das formal so aus: $$\frac 1{R_{\text{tot}}} = \frac 1{R_1} + \frac 1{R_2} + \frac 1{R_3} + \frac 1{R_4} + \dots$$und wenn es nur zwei sind, folgt daraus direkt obige Formel.


Rechnen mit Integern ist nicht einfach. In der Aufgabe steht noch ".. rounded to the next integer". So wie Du es geschrieben hast, wird immer abgerundet. Besser wäre

Rtot = ((R12 * R34 + (R12+R34)/2)/(R12+R34));

... überlege mal selber, warum das die wahrscheinlich gesuchte Lösung ist ;-)

Gruß Werner

von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community