Widerstandsberechnung {war: Ich bin so schlecht :(}
-
soso, bis morgen, ganz toll. die aufgabe hast du auch erst heute nachmittag bekommen, wa.
-
@Kontrasubjekt
Dir scheint noch nicht klar zu sein, dass wir hier keine kompletten Lösungen posten. Wenn da eine Regelmäßigkeit reinkommt, gibt's hier nur noch Threads mit "mach mal hier" und "mach mal da".
-
also erstmal zur info, ich bin sehr wohl ein mädchen
und nicht mal die einzige in meinem studiengang informatik 
ich hab das so ->
include <iostream> using namespace std; int main(void) { int n,sum,sum2; cout << "Widerstandsberechnung"; sum = 0; sum2 = 0; do{ cout << "\nGeben Sie Zahlen > 0 ein, sonst ist Eingabe beendet."; cin >> n; sum = sum + n; sum2 = sum2 + (1/n); }while (n>0); cout << "Summe ist: " << sum << endl; cout << "Summe ist: " << sum2 << endl; return 0; }allerdings ist da irgendwas bei der 2. berechnung falsch
und kommazahlen gibt er auch nciht aus
-
Kontrasubjekt schrieb:
void lies_die_eingabe (std::vector<double>& input) { ..... von vector<> stand da nichts in der Aufgabenstellung.
Wie wäre es denn mit einem abgefahrenen Ansatz:
#include <iostream> #include <iterator> #include <numeric> struct R { R() : m_r(0.0), m_l(0.0) {} R& operator+=( const R& b ) { m_r += b.m_r; m_l += b.m_l; return *this; } friend std::istream& operator>>( std::istream& in, R& r ) { double x; for( ; (in >> x).fail() || x < 0.0; in.clear(), in.ignore( 999, '\n' ) ) if( in ) std::cout << "Wert '" << x << "' ungueltig - wird ignoriert" << std::endl; if( x > 0.0 ) { r.m_r = x; r.m_l = 1/x; } else in.setstate( std::ios_base::failbit ); return in; } friend std::ostream& operator<<( std::ostream& out, const R& r ) { out << "Widerstand der Reihenschaltung: " << r.m_r; if( r.m_l > 0 ) out << "\nWiderstand der Parallelschaltung: " << 1/r.m_l; return out; } private: double m_r, m_l; }; R operator+( R r1, const R& r2 ) { return r1 += r2; } int main() { using namespace std; do { cout << accumulate( istream_iterator< R >( cin ), istream_iterator< R >(), R() ) << endl; } while( true ); return 0; }Gruß
Werner
-
@Werner Salomon:
Wie gerne wir alle deine Ansätze habe, denke ich, dass ihr das nicht viel bringen wird..
@Janina_Sternchen:
Klar werden da keine Kommazahlen ausgegeben.. Du hast ja schliesslich keine.
Du benutzt da int's und keine float's..
-
Kóyaánasqatsi schrieb:
@Kontrasubjekt
Dir scheint noch nicht klar zu sein, dass wir hier keine kompletten Lösungen posten. Wenn da eine Regelmäßigkeit reinkommt, gibt's hier nur noch Threads mit "mach mal hier" und "mach mal da".Wenn ich gerade mag, dann poste ich gerne eine Teillösung.
-
Kontrasubjekt schrieb:
void lies_die_eingabe (std::vector<double>& input) { double cur = 0.0; do { std::cout << "Wert eingeben\n"; std::cin >> cur; if (cur > 0.0) input.push_back (cur); else if (cur < 0.0) std::cout << "\nWiederholen sie die Eingabe.\n\n"; } while (cur != 0.0); }4. vorlesung... werden sie wohl mit mit einfachen mitteln machen müssen^^
und ich wüsste auch nicht, wozu hier alle werte gespeichert werden sollten@janina:
wollt ich ja auch gar nich bestreiten ;P
so sieht das doch schon besser aus (so mit eigenem ansatz und so^^)...
wenn du stattint n,sum,sum2;float n,sum,sum2;schreibst, sollte es gehen^^
sum2 = sum2 + (1/n);rate mal, was hier passiert, wenn man 0 eingibt ;o)
wirst du also irgendwie abfangen müssen...Alternativ (besser) ist bei Eingabe eines negativen Wertes die Aufforderung zur erneuten Eingabe (eines positiven Wertes) möglich
pseudocode:
do eingabe(x) wenn x > 0 sum += ... sum2 += ... wenn x < 0 ausgabe("wird ignoriert") while(x != 0)bb
-
Janina_Sternchen schrieb:
ich hab das so ->
Das ist doch schon sehr gut - Nein Kommazahlen hast Du keine - warum nicht, hat drakon schon gesagt.
Die zweite Berechnung ist fast richtig - nur gibst Du am Ende den Leitwert aus und nicht den Widerstand.Noch 'ne Empfehlung: erweitere den Code in Zeile 16 zu
}while ( cin && n>0);Gruß
Werner
-
irgendwie "bahnhoft" ihr mich grad ganz dolle

-
hallo ich sitze wegen meines umzugs auch erst seit ner stunde dran und habe die aufgabe 1.1 schon gelöst nur nun habe ich probleme mit 1.2 und 1.3 versteh auch nicht mehr so viel
wäre top wenn ihr es für ein laien erklären könntet 
-
wie hast du die erste denn gelöst?
*liebguck*
-
Janina_Sternchen schrieb:
irgendwie "bahnhoft" ihr mich grad ganz dolle

Falls Du konkret fragen würdest, so könnten wir Dir auch konkret helfen.
-
wer könnte mir denn helfen? dem würde ich dann auch das als pm schicken mit meiner icq nummer oder so damit man vllt schneller zur lösung kommt

-
schick mal deine icq nummer ich mach dir für 10 euro paysafe card deine hausaufgaben
-
boar... poste einfach, was du hast und was noch fehlt und wo dein problem dabei liegt... wenn du dir das stück pseudocode durchliest, was ich gepostet habe, dann solltest du die aufgabe doch scho komplett geschafft haben...
bb
-
also es funktioniert nun garnichtsmehr irgendwie
ich hoffe ihr seht aber was ich will:include <iostream> using namespace std; int main(void) { double n = 0.0 int n,sum,sum2; cout << "Widerstandsberechnung"; sum = 0; sum2 = 0; do{ cout << "\nGeben Sie Zahlen > 0 ein, sonst ist Eingabe beendet."; cin >> n; sum = sum + n; if(n>=0) { if(n>0) { sum2 = sum2 + (1/n); } else } else cout << "bitte eine positive zahl eingeben" }while (n>0); cout << "Summe ist: " << sum << endl; cout << "Summe ist: " << sum2 << endl; return 0; }
-
vorab: "funktioniert nicht" ist keine gute fehlermeldung ;P
Janina_Sternchen schrieb:
include <iostream> using namespace std; int main(void) { double n = 0.0 //; fehlt int n,sum,sum2; //du solltest für alles den gleichen typenem nehmen - außerdem ist n als variablenname schon vergeben (und einmal sollte ja auch reichen^^). des weiteren ist "n" auch kein wirklich guter bezeichner... cout << "Widerstandsberechnung"; sum = 0; sum2 = 0; do{ cout << "\nGeben Sie Zahlen > 0 ein, sonst ist Eingabe beendet."; cin >> n; sum = sum + n; //das stand im if-zweig bei mir if(n>=0) //wo stand denn bitte >= bei mir? { if(n>0) { sum2 = sum2 + (1/n); } else } else cout << "bitte eine positive zahl eingeben" }while (n>0); //das hier ist doch auch anders, als ich es dir gesagt hatte... cout << "Summe ist: " << sum << endl; cout << "Summe ist: " << sum2 << endl; //hier gibst du doch noch immer L aus und nicht R (=1/L) return 0; }bb
-
kannst du mir nicht vll nen tip geben wies richtig wär für mich is das alles hier nurnoch kryptisch und mein codewortschatz beschränkt sich nach 4 vorlesungen auch wirklich nur auf den absoluten anfänger kram

-
include <iostream> using namespace std; int main(void) { double n = 0.0; int unb,sum,sum2; cout << "Widerstandsberechnung"; sum = 0; sum2 = 0; do{ cout << "\nGeben Sie Zahlen > 0 ein, sonst ist Eingabe beendet."; cin >> unb; if(unb>0) { sum = sum + unb; sum2 = sum2 + (1/unb); } else cout << "bitte eine positive zahl eingeben" }while ( cin && unb>0); cout << "Summe ist: " << sum << endl; cout << "Summe ist: " << sum2 << endl; return 0; }?!

-
naja - an der syntax scheint es nicht zu liegen, ich hab doch auch nur do/while und if genommen...
#include <iostream> using namespace std; int main() { float sum1 = 0; //reihenschaltung float sum2 = 0; //parallelschaltug float einlesen; do { std::cin >> einlesen; if(einlesen > 0) { //sum1 = ... //sum2 = ... } if(einlesen < 0) { //... } } while(einlesen != 0); }den rest bekommst du selbst hin, ja!?
bb