Wie kann ich rechnen?



  • Habe ein Programm und will jetzt den Prozentualenfehler ausrechnen,es sollen die gesammteingaben durch 100 geteilt werden und dann mit den fehlern multipliziert werden.kann ich einfach so schreiben.....erg=(ge/100)*i????
    (erg= ergbeniss,ge=gesammtdurchläufe und i sind die fehlerhaften).Weill wenn
    ich es so schreibe zeigt der mir immer als ergebniss 0 an.Was mache ich fálsch?
    danke schonmal im vorraus

    gruss

    Torsten



  • Erst malnehmen, dann teilen. Oder andere Variablentypen mit besserer Genauigkeit nehmen.



  • Du rechnest sicher mit ganzen Zahlen (int)? Wenn dann ge kleiner als 100 ist, kommt bei der Division "0,nochwas" raus, die Stellen hinter dem Komma werden aber ignoriert. Und 0 mal "irgendwas" ist eben 0.

    Es verschiednene Lösungen:
    - Du könntest z.B. alle Werte als Kommazahlen (double oder float statt int) definieren.
    - oder du stellst die Rechnung um schreibst statt erg=(ge/100)*i neu: erg=(ge*i)/100.

    Hilft das weiter ?

    PS: Bist Du sicher das Deine Formel richtig ist?



  • die formel sollte eigneltich richtig sein.



  • Hab mal erg als float und mal als double deklariert und auch die Formel umgeschrieben aber ergebniss bleibt null.kann ich irgendwie mein Programm hier reinbringen?



  • Kannst uns ja den Quelltext posten, wo du rechnest. Von der Variablendeklaration bis zum Rechnen selbst.



  • [cpp]void main()
    {
    // Deklarationen
    const double pi=3.14159;
    const double rho=0.0178; // spez. Widerstand Kupfer
    double laenge, durchmesser, flaeche, widerstand;
    char eing;
    int j=0;
    int i=0;
    int ge=0;
    double erg =0;
    do
    {

    // Eingabe
    cout << "Laenge (m) angeben :";
    cin >> laenge;
    cout << "Durchmesser (mm) angeben :";
    cin >> durchmesser;

    // Plausibilitätsbetrachtung
    if ( durchmesser <= 0 ) // unzulässig
    {

    i=i+1; //Fehler Zählen
    ge=i+j; //Gesammte
    cout << " Durchmesser muss > 0 sein "<<endl <<endl;
    cout << "Gesammteingaben \t:" <<ge<< "davon" <<i<< "Fehlerhaft"<<endl;
    erg=(ge/100)*i; //rechnung
    cout << "Das entspricht einem Fehler von" <<erg<< "Prozent" <<endl;
    cout << " Wollen Sie Programm nochmal starten? 1=Ja " << endl;
    cin >> eing;

    }
    else // Eingabedaten in Ordnung
    {
    flaeche=pow(durchmesser,2)pi/4;
    widerstand= rho
    laenge/flaeche;
    // Ausgabe
    cout << " Laenge \t" << laenge << " m" << endl;
    cout << " Durchmesser \t" << durchmesser <<" mm" << endl;
    cout << " Widerstand \t" <<widerstand <<" Ohm"<<endl;
    j =j+1; //Normale Durchläufe
    ge=i+j; //Gesammte Durchläufe
    cout << "Gesammteingaben \t:" <<ge<< "davon" <<i<< "Fehlerhaft"<<endl;
    erg=(ge/100)*i; //Rechnung
    cout << "Das entspricht einem Fehler von" <<erg<< "Prozent" <<endl;
    cout << "Um Programm nochmal zu starten bitte Taste 1 druecken " << endl;
    cin >> eing;
    }
    }
    while (eing=='1');
    }



  • Ich habe mal bei der Rechnung die Division durch 100 weggelassen und da zeigt er mir Werte an.



  • Ich hab mein Fehler,die Formel war falsch
    erg=(ge/100)*i war falsch es sollte erg=(100/ge)*i heisen.jetzt kommt auch was raus,danke für eure hilfe!!!!!

    gruss

    Torsten



  • Die Division ist bei Dir immer noch eine Ganzzahldivision. Entweder Du schreibst (100.0/ge) oder du machst aus ge noch ein double oder float. Sonst kannst Du immer noch einen großen Fehler in Deinem Ergebnis bekommen. (z.B. wenn ge größer als 100 ist!)

    Deine neue Formel finde ich auch besser.


Anmelden zum Antworten