Klausur Widerstandsberechnung



  • habe folgende aufgabe auf und komme da überhaupt nicht mit zurecht, vielleicht kann mir ja jemand von euch weiterhelfen...?!

    Aufgaben: Alle folgenden Übungen sollen mit dem "Visual C++" -IDE ("Visual Studio 2005") bearbeitet werden. Beachten Sie bitte, daß (außer zur Fehlersuche) im Release-Modus übersetzt werden soll.
    1 Schreiben Sie ein Programm resistors1.cpp, welches folgenden Bedingungen genügt:
    1.1 In einer do..while Schleife sollen solange Widerstandswerte R1, R2 usw. (Einheit beliebig) eingelesen werden, bis als Wert eine 0. eingegeben wird;
    1.2 Der resultierende Gesamtwiderstand soll sowohl für Reihenschaltung als auch für Parallelschaltung berechnet und ausgegeben werden.
    1.3 Negative Werte sollen ignoriert werden und wenn aufgetreten bzw. eingegeben, soll mit dem (End-) Ergebnis ein entsprechender Hinweis (→ "... wurden ignoriert") ausgegeben werden. Alternativ (besser) ist bei Eingabe eines negativen Wertes die Aufforderung zur erneuten Eingabe (eines positiven Wertes) möglich.
    Hinweise:
    Für den Gesamtwiderstand gilt bei Reihenschaltung: Rreihe = R1 + R2 .. + Rn bei Parallelschaltung: 1/Rpara = 1/R1 + 1/R2 .. + 1/Rn
    Der Kehrwert des Widerstandes wird auch als Leitwert bezeichnet: L = 1/R (1/R ist links vom Zuweisungssymbol nicht erlaubt.)
    Achtung: Die Division durch Null ist undefiniert bzw. verboten!
    2 Schreiben Sie eine zweite Version resistors2.cpp des Programms mit gleicher Funktionalität und verwenden Sie diesmal die while Schleife.
    → Wenn Sie negative Eingabewerte im Programm ignorieren: wie würde sich das Programm vereinfachen, wenn als Abbruchbedingung die Eingabe eines Wertes kleiner als oder gleich 0.0 gefordert wäre?
    3 Schreiben Sie eine dritte Version resistors3.cpp, welche eine vorher einzugebende Anzahl von Widerstanswerten einliest und mit einer for Schleife arbeitet. Es sollen nur Werte >= 0 akzeptiert werden; bei negativen Werten soll zur erneuten Eingabe aufgefordert werden.



  • flensking schrieb:

    habe folgende aufgabe auf und komme da überhaupt nicht mit zurecht, vielleicht kann mir ja jemand von euch weiterhelfen...?!

    Stell konkrete Fragen zu deinen Problemen, und zeig was du bereits selbsständig erarbeitet hast und woran du nun konkret scheiterst.

    cu André



  • habe folgendes:

    #include <iostream>
    using namespace std;

    int main()
    {
    double Widerstand;

    double GesamtReihen = 0;
    double GesamtParalell;
    int Rwert = 0;

    do
    {
    cout << "Bitte gib den Wert fuer R" << ++Rwert << " ein: ";
    cin >> Widerstand;
    if(Widerstand < 0) // Überprüft ob die Eingabe im positiven Bereich liegt
    {
    cout << "\nBitte nur positive Zahlen zur Berechnung eingeben \n\n";
    }else // wenn Eingabe positiv ist - mache folgendes
    {
    GesamtReihen = GesamtReihen + Widerstand; // Berechnung vom Gesamtwiderstand in der Reihenschaltung

    if(Widerstand == 0) // Berechnung des Gesamtwiderstandes in der Paralellschaltung
    {

    }else
    {
    GesamtParalell = GesamtParalell + (1./Widerstand);
    }

    }
    } while(Widerstand != 0.);

    cout << "\n Der Gesamtwiderstand in der Reihenschltung betreagt: " << GesamtReihen << " Ohm";
    cout << "\n Der Geamtwiderstand in der Paralellschlatung betreagt: " << GesamtParalell <<" Ohm";
    cin >> Rwert;
    }



  • und wo ist dein Problem?



  • bekomme die aufgabe 2 nicht wirklich hin???wenn ihr mir da helfen könntet, weiß nicht wie ich das da einbauen soll?



  • Also aus einer do-while-Schleife eine while-Schleife zu machen dürfte doch nicht so schwer sein - da mußt du (fast) nur die Bedingung an den Schleifenanfang packen 😉



  • kannst du mir das nicht eben zeigen...bin in dem gebiet nicht so der "fitteste"....



  • Der einzige Unterschied zwischen den Schleifen ist die Position, wo die Abbruchbedingung ausgewertet wird

    double Widerstand;
    do
    {
      ...
    }
    while(Widerstand!=0);
    
    // wird zu
    
    double Widerstand = -1;//um für den ersten Durchlauf einen definierten Anfangspunkt zu haben
    while(Widerstand!=0)
    {
      ...
    }
    


  • irgendwie bin ich da echt zu blöd für...bekomme das nicht hin...



  • Wenn du selbst mit Anleitung nicht zurechtkommst, hast du dir wohl den falschen Kurs ausgesucht - lass dir von deinem Lehrer eine 6 eintragen und versuch's im nächsten Jahr nochmal neu.

    (wir werden dir gerne mit Ratschlägen zur Seite stehen - aber vorkauen müssen wir dir nichts)



  • dann hab ich wohl den sinn eines forums nicht ganz verstanden, dachte es wäre dazu da jemanden zu helfen...?



  • Es ist dazu da, dir Tips zu geben - nicht um dir die Arbeit abzunehmen. Wenn du darauf wartest, daß dir jemand ein fertiges Programm vorsetzt, solltest du es im Projekte-Board versuchen (das wird aber teurer).



  • CStoll hat doch bereits alles beschrieben. Ansonsten darfst du ruhig mal Google benutzen, um dich über while- und do-while-Schleifen zu informieren. Die Umwandlung ist wirklich nicht schwer und steht außerdem schon da. Du musst nur noch einsetzen. 😉



  • CStoll schrieb:

    Wenn du selbst mit Anleitung nicht zurechtkommst, hast du dir wohl den falschen Kurs ausgesucht - lass dir von deinem Lehrer eine 6 eintragen und versuch's im nächsten Jahr nochmal neu.

    Zu Moderator kann man bei Wikipedia nachlesen:

    Ein Moderator (v. lat.: moderatio/moderare → mäßigen, steuern, lenken) ist eine Person, die ein Gespräch lenkt oder lenkend in eine Kommunikation eingreift.

    Das hat hier leider nicht geklappt.

    flensking schrieb:

    irgendwie bin ich da echt zu blöd für...bekomme das nicht hin...

    Nicht verzagen - aller Anfang ist schwer. Bau doch einfach den Code, der in Deiner do-while-Schleife steht, in die while-do-Schleife ein, die Dir CStoll vorgeschlagen hat. Und berichte uns möglichst konkret, was da gegebenenfalls nicht funktioniert.

    Gruß
    Werner



  • Ja, ich weiß, ich bin nicht gerade die Idealbesetzung (und mache das auch nicht hauptberuflich) - aber wenn jemand aus einer fast fertigen Lösung nichts sinnvolles machen kann, hat er sich wohl im Fachgebiet geirrt.



  • Ohne mich jetzt auf die Moderatorenseite schlagen zu wollen: Eigeninitiative ist immer gefordert, immerhin gibt's hier Hilfe umsonst.


Anmelden zum Antworten