Hilfe habe bald Klausur



  • hat ein bischen gedauert, ja ich bin/war etwas eingerostet aber das feuer ist gleich wieder ausgebrochen, wie am ersten tag 😃

    CLS
    INPUT "Geben Sie die Anzahl der Messwerte an: " n
    LET sum = 0
    LET inp = 0
    FOR i = 1 TO n
      INPUT "geben sie den naechsten messwert ein: " inp
      LET sum = sum + (1/inp)
    NEXT i
    LET sum = n/sum
    PRINT "Harmonisches Mittel:"
    PRINT sum
    END
    

    @edit ohne cls gibts kein basic 🤡
    @edit2 jetzt jagts mich bitte nicht gleich vom hof ich post auch kein basic mehr



  • schonmal Vielen dank für deine Mühe mir mein Qbasic zu Übersetzten VORALLEM so ausführlich!!
    ich habe da aus einigen Beispielaufgaben etwas zusammengeschneidert..

    also zu dem einen teil, ja es sollte natürlich n und nicht x sein..

    ich versteh nicht was an der formel falsch ist.. wenn ich es mim taschenrechner ausrechne komme ich auch auf ein anderes ergebnis (also hast du natürlich recht was die Formel angeht)

    wenn wir zum Beispiel den annehmen das wir 3 Messungen machen,
    1. Messwert 3
    2. Messwert 2
    3. Messwert 3

    würde dir Formel doch:

    3 / ( (1/3)+ (1/2)+ (1/3) ) heißen

    bei:

    sum = anzahl_messwerte / (sum + (1/messwerte[i])
    3 [müsste stimmen] / so und DA muss ja mein fehler liegen, irgendwie komm
    ich noch nicht drauf..

    es sollte eig. 2,57 rauskommen..



  • gefällt dir mein basic code nicht 😕 es kommt auch 2.57143 raus 😞



  • sum = (sum + (1/3);
    sum = (sum + (1/2);
    sum = (sum + (1/3);
    sum = anzahl_messwerte / sum;
    


  • no_code schrieb:

    hat ein bischen gedauert, ja ich bin/war etwas eingerostet aber das feuer ist gleich wieder ausgebrochen, wie am ersten tag 😃

    CLS
    INPUT "Geben Sie die Anzahl der Messwerte an: " n
    LET sum = 0
    LET inp = 0
    FOR i = 1 TO n
      INPUT "geben sie den naechsten messwert ein: " inp
      LET sum = sum + (1/inp)
    NEXT i
    LET sum = n/sum
    PRINT "Harmonisches Mittel:"
    PRINT sum
    END
    

    @edit ohne cls gibts kein basic 🤡
    @edit2 jetzt jagts mich bitte nicht gleich vom hof ich post auch kein basic mehr

    was ist den inp? da mekert er bei mir..



  • NATÜRLICH gefällt er mir.. nur scheinbar habe ich eine andere Version, die Nimmt deine leider nicht an.



  • int n;
    double sum = 0.0,inp;
    ...
    

    "inp" ist eine ganz normale double variable

    interpretiert hab ichs mit yabasic da ging in kate nur das CLS nicht 🙄



  • aso, das erklärt auch warum du kein ";" verwendenet hast.. DANKE!!



  • ja das ; brachte bei mir iwie fehler, hab schon bischen von deinem gespickt 😮



  • Also ich Hab jetzt noch etwas rumgetüftelt.. ich glaub ich versteh einfach nicht wie der das Programm die Formel umsetzt..

    hab jetzt mal noch nen zwischenschritt eingebaut, aber da kommt dann auch nur blödsin bei rum..

    #include <iostream>
    #include <vector>

    using namespace std;

    int main()
    {
    cout << "Geben Sie die Anzahl der Messwerte an: " << flush;
    unsigned int anzahl_messwerte;
    cin >> anzahl_messwerte;

    vector<double> messwerte(anzahl_messwerte);
    double sum = 0;

    for (unsigned int i=0; i<anzahl_messwerte; ++i)
    {
    cout << "Geben sie den " << i+1 << ". Messwert an: " << flush;
    cin >> messwerte[i];
    double zwischenschritt;
    zwischenschritt= 1/messwerte[i];
    cout<<zwischenschritt;
    sum = anzahl_messwerte / (zwischenschritt);
    }

    cout << "xharm: " << sum << endl;
    }

    ich habe mir extra den zwischenschritt mal ausgeben lassen, die Ergebnisse stimmen alle soweit, nur muss er die dann addieren nur wie ich das am besten anstelle weiß ich leider nicht..



  • mit:

    zwischenschritt= (1/messwerte[i])+(1/messwerte[i+1]);

    bekomm ich auch nen fehler..


  • Mod

    maxbandel schrieb:

    mit:

    zwischenschritt= (1/messwerte[i])+(1/messwerte[i+1]);

    bekomm ich auch nen fehler..

    Das klingt nach einem klaren Fall für einen Schreibtischtest. Denk dir 5 Zahlen aus, berechne den harmonischen Durchschnitt. Dann nimmst du an, dass du alle Zahlen eine nach der anderen bekommst. Was machst du mit jeder neuen Zahl, wenn du als Hilfsmittel einen Taschenrechner mit einer Speichertaste hast? Kommst du auf das gleiche Ergebnis?

    P.S.: Und lies dir mal diesen Thread durch: Mit Aussagen wie "bekomm ich auch nen fehler.." kann niemand etwas anfangen. Falsches Ergebnis? Laufzeitfehler? Compilerfehler? Wenn du dem Leser so wenig Information gibst, ist niemand motiviert dir zu helfen, denn du willst offensichtlich keine Hilfe sondern eine Lösung.



  • Ich möchte sehr alles andere als eine nur eine Lösung, schließlich muss ich es in der Klausur auch können, ich bin auch sehr Dankbar das sich soviel bemühen mir zu helfen.

    denn der Fehler ist leider schwer zu beschrieben oder weiderzugeben, darum habe ich ein Screenshot gemacht und mal hochgeladen.

    http://img17.imageshack.us/f/fehlerc.png/#

    Danke für die Mühe!



  • Wenn du den Index von 0 bis size() laufen lässt, kannst du nicht [index + 1] ansprechen - gültige Indices des Containers liegen zwischen 0 und size() - 1. (Bzw. in deinem Fall anzahl_messwerte)

    Ansonsten scheint es mir so, als sei das Puzzleteil, das dir fehlt, folgendes:

    zwischenschritt = zwischenschritt + summand;
    

    ...und achte auf den Gültigkeitsbereich der Variablen!

    Der Vollständigkeit halber: Gleichbedeutend mit dem Codestück oben, aber hübscher anzusehen ist

    zwischenschritt += summand;
    


  • Super, habs dann jetzt es hat mir also "nur" das + vor dem = gefehlt.

    vielen dank für eure Geduld!



  • maxbandel schrieb:

    Super, habs dann jetzt es hat mir also "nur" das + vor dem = gefehlt.

    vielen dank für eure Geduld!

    falls sich das auf das letzte von dir gepostete snippet bezieht nein!


Anmelden zum Antworten