C++ Werte unkontrollierbar [CLOSE PLS]



  • Guten Abend.

    Ich habe ein Problem mit meinem C++ Programm. Es läuft einwandfrei, jedoch sind die ausgegebenen Werte sehr unberechenbar. Bei meinem Programm soll folgendes passieren:
    → 2 Wassereimer
    → verschiedene Wassermengen in diesen Eimern
    → Pro Durchlauf soll 30% des akutellen Inhalts von Eimer1 in Eimer2 geschüttet werden
    → Dasselbe mit 60% von Eimer2 zu Eimer1.

    WURDE GELÖST

    Source:

    #include <conio.h>
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main()
    
    {
    
        float eimer1,eimer2,wasser1,wasser2,w1k(0),w2k(0),x(0);
        int durchlauf(0);
    
        printf("Seas! Wasserumf");                                                                     // Titel, Definition von Umlaut
        cout << static_cast<unsigned char>(129); 
        printf("ller hier!\n---------------------------------------------------\n");
    
        printf("1. Eimer: ");                                                                          // Einlesen aller Startwerte
        scanf ("%f",&eimer1);
        printf("\n2. Eimer: ");
        scanf ("%f",&eimer2);
        printf("\nWie oft das Verfahren: ");
        scanf ("%i",&durchlauf);
    
        printf("\nVon E1 zu E2 wird immer 30%% umgeleert. Von E2 zu E1 anschliessend 60%%!\n");          // Erklären (evtl. später Eingabe von %-Werten)
    
        for (w2k;w2k<=durchlauf+1;w2k++)                                                                  // Durchläufe       
        {
            wasser1=eimer1*0.3;                                                              // Wasserumfüllen, Abziehen aus Ex-Eimer, Addieren in New-Eimer
            eimer2+=wasser1;
            eimer1-=wasser1;
            wasser2=eimer2*0.6;
            eimer1+=wasser2;
            eimer2-=wasser2;
            x++;
            wasser1=w1k;                                                                     // Setzen der %-Werte auf 0
            wasser2=w1k;
    
            }                                                                                            
    
        printf("Wasserstand Eimer1: %f\n",eimer1);                                            // Ausgabe
        printf("Wasserstand Eimer2: %f\n",eimer2);
    
        getch();
    
        }
    


  • scanf ("%i",&eimer1);
    

    man scanf schrieb:

    i Findet eine optional verzeichenbehaftete Ganzzahl; der nächste
    Zeiger muss ein Zeiger auf int sein. Die Ganzzahl wird eingele-
    sen zur Basis 16 wenn sie mit ‘0x’ oder ‘0X’ beginnt, zur Basis
    8 wenn sie mit ‘0’ beginnt, anderenfalls zur Basis 10. Nur
    Zeichen, die zur Basis passen, werden benutzt.

    Und von welchem Typ ist eimer1? Vom Typ Ganzzahl? Vielleicht loest das nicht das Problem, aber aber ... Warum nutzt du eigentlich nicht die C++ Funktionen fuer Aus- und Eingabe mit der Konsole?



  • scanf ("%i",&eimer1);
    

    Integer ist aber viel zu ungenau oder, schließlich ist bei %-Rechnung nicht immer der Wert ohne Nachkommastellen. 30% von 7 z.b.



  • Wie kommst Du darauf, dass "%i" hier richtig ist?
    Erklär mal.


Anmelden zum Antworten