Unbegrenzte Brechnungen ????



  • Hallo,

    ich bin anfänger in C++, da ich es für meine Ausbildung am BK lernen muss. Bisher ging alles ohne Probleme, aber ich komme an dieser Aufgabe leider nicht weiter:

    Wir haben bisher einen Code geschrieben zum berechnen einer Parallelschaltung mit zwei Widerständen. Die ist relative einfach , da die Formel:

    Gesamtwiderstand=(R1*R2)/(R1+R2)

    Nun soll sollen wir einen Code für diese berechnung mit einer unbegrenzten Anzahl von Widerständen erstellen. Die Formel dazu lautet:

    Gesamtwiderstand=1/((1/R1)+(1/R2)+(1/R3)+....usw.)

    Ich muss also eine unbegrenzte Anzahl von Brüchen erstellen können.

    Bisher ging meine überlegung soweit, das ich es über eine Schleife machen wollte, die dann am ende durch eine Zählvariable die Anzahl der Brüche weiß.

    Jetzt ist das Problem, dass ich nciht weiß, wie es Programmiere das er soviele Brüche einbaut wie in dieser Variable stehen.

    Hoffe zumindest einer hat verstanden was ich mein 😉 ^^ 👍

    Vielen dank im vorraus

    gruß
    scub



  • Naja, du könntest die Werte der Widerstände (die du sicher irgendwie einliest) in einem Array (am Besten std::vector) speichern und dann mit einer Schleife die Berechnung durchführen. Also nicht die Brüche erstellen, sondern jeden einzeln berechnen und in einer Variablen addieren. Anschließend 1 nochmal durch das berechnete Gesamt-Ergebnis des Nenners dividieren. Etwa so:

    std::vector<int> v;
    // mit push_back Werte in den vector v hinzufügen
    
    int teilres = 0;
    for(size_t i=0; i<v.size(); ++i)
      teilres += 1/v[i];
    
    int res = 1/teilres;
    

    Für std::vector musst du die Headerdatei vector inkludieren.

    Greetz



  • Hallo,
    wobei teilres und res hier besser doubles wären.

    std::vector<int> v;
    // mit push_back Werte in den vector v hinzufügen
    
    double teilres = 0;
    for(size_t i=0; i<v.size(); ++i)
      teilres += 1.0/v[i];
    
    double res = 1/teilres;
    

Anmelden zum Antworten