Einführung in die Programmierung mit c++ von Bjarne Stroustrup benötige Hilfe!!!



  • Hallo bin momentan am lernen mit diesem Buch und benötige Hilfe!! Bin bei Kapitel 4 bei den Aufgaben.

    von Aufgabe 1-4 sieht mein Quelltext so aus:

    #include "std_lib_facilities.h"
    
    int main()
    {
    	double val1 = 0.0;
    	double val2 = 0.0;
    	while (cin >> val1 >> val2 )
    	{
    		if (val1 < val2)
    		{
    			cout << "Der groessere Wert ist: " << val2 << endl;
    			cout << "Der kleinere Wert ist: " << val1 << endl;
    		}
    		else if (val2 < val1)
    		{
    			cout << "Der groessere Wert ist: " << val1 << endl;
    			cout << "Der kleinere Wert ist: " << val2 << endl;
    
    		}
    		else
    		{
    			cout << "Die Zahlen sind gleich" << endl;
    		}
    	}
    
    	keep_window_open();
    	return 0;
    }
    

    nun kommt Aufgabe 5:

    Ändern Sie das Programm so, dass es erst die größere und dann die kleinere Zahl ausgibt (erledigt siehe quelltext) und anschließend die Zeile "Die Zahle sind fast gleich", wenn die beiden Zahlen sich um weniger als 1,0/10.000.000 unterscheiden.

    ich versteh nicht wie ich prüfen kann ob die zahlen sich um weniger als 1,0/10.000.000 unterscheiden? 🙄


  • Mod

    Du bildest die Differenz. Wenn du schon weißt, wie man den Betrag eines Werts erhält (oder selber drauf kommst), dann muss hinterher der Betrag kleiner als dein Schwellwert sein. Wenn du nicht weißt, wie du an den Betrag kommst, dann musst du prüfen, ob die Differenz zwischen -Schwellwert und Schwellwert liegt.



  • Also ich habe jetzt die differenz gebilded und dann mit if geprüft. Ist das so richtig?

    #include "std_lib_facilities.h"
    
    int main()
    {
    	double val1 = 0.0;
    	double val2 = 0.0;
    	double smallest = 0.0;
    	double biggest = 0.0;
    	double diff = 0.0;
    	while (cin >> val1 >> val2 )
    	{
    		if (val1 < val2)
    		{
    			cout << "Der groessere Wert ist: " << val2 << endl;
    			cout << "Der kleinere Wert ist: " << val1 << endl;
    			smallest = val1;
    			biggest = val2;
    		}
    		else if (val2 < val1)
    		{
    			cout << "Der groessere Wert ist: " << val1 << endl;
    			cout << "Der kleinere Wert ist: " << val2 << endl;
    			smallest = val2;
    			biggest = val1;
    		}
    		else
    		{
    			cout << "Die Zahlen sind gleich" << endl;
    		}
    
    		diff = biggest - smallest;
    
    		if (diff == 1.0/10000000)
    		{
    			cout << "Die Zahlen sind fast gleich" << endl;
    		}
    	}
    
    	keep_window_open();
    	return 0;
    }
    


  • mhh ich glaube das ist falsch? das funkioniert nicht was ich das gemacht habe.
    Ich habe wirklich keine Ahnung wie ich das lösen soll. 🙄


  • Mod

    Die Zahlen sind doch nicht "fast gleich" wenn ihre Differenz genau gleich 1.0/10000000 ist, sondern wenn ihre Differenz kleiner als 1.0/10000000 ist.



  • ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist. 😃 Dankeschön.



  • Rc05venom schrieb:

    ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist. 😃 Dankeschön.

    Meine Schnurrbarthaare kitzeln...

    Nur zur Sicherheit:
    SeppJ meinte, dass

    if (diff == 1.0/10000000)
      {
        //...
      }
    

    nicht der gestellten Bedingung

    Einführung in die Programmierung mit C++ schrieb:

    wenn die beiden Zahlen sich um weniger als 1,0/10.000.000 unterscheiden.

    entspricht.


  • Mod

    Rc05venom schrieb:

    ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist. 😃 Dankeschön.

    😕 Ich glaube, du hast da etwas nicht verstanden.

    Sind 0.001 und 0.002 fast gleich? Sind 999999.0000001 und 999999.00000015 fast gleich?



  • SeppJ schrieb:

    Rc05venom schrieb:

    ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist. 😃 Dankeschön.

    😕 Ich glaube, du hast da etwas nicht verstanden.

    Sind 0.001 und 0.002 fast gleich? Sind 999999.0000001 und 999999.00000015 fast gleich?

    😞 mhh ok sorry, könntest du mir das genauer erklären, bitte 🙄 ?


  • Mod

    Rc05venom schrieb:

    😞 mhh ok sorry, könntest du mir das genauer erklären, bitte 🙄 ?

    Ich glaube nicht. Ich denke, hier liegt vermutlich eher ein Kommunikations-, als ein Verständnisproblem vor.



  • SeppJ schrieb:

    Rc05venom schrieb:

    😞 mhh ok sorry, könntest du mir das genauer erklären, bitte 🙄 ?

    Ich glaube nicht. Ich denke, hier liegt vermutlich eher ein Kommunikations-, als ein Verständnisproblem vor.

    mhhh, mies!!

    Also du sagst wenn ihre Differenz kleiner als 1.0/10000000 ist sind sie fast gleich.

    das heißt doch soviel wie if (diff < 1.0/1000000)

    so hab ich das verstanden? 😞

    Wäre sehr dankbar, wenn sich Jemand bereiterklären würde mir das zu erklären?
    Danke schonmal 🙂

    so mein quellcode sieht nun so aus:

    #include "std_lib_facilities.h"
    
    int main()
    {
    	double val1;
    	double val2;
    	double smallest = 0.0;
    	double biggest = 0.0;
    	double diff = 0.0;
    	while (cin >> val1 >> val2 )
    	{
    		if (val1 < val2)
    		{
    			cout << "Der groessere Wert ist: " << val2 << endl;
    			cout << "Der kleinere Wert ist: " << val1 << endl;
    			smallest = val1;
    			biggest = val2;
    		}
    		else if (val2 < val1)
    		{
    			cout << "Der groessere Wert ist: " << val1 << endl;
    			cout << "Der kleinere Wert ist: " << val2 << endl;
    			smallest = val2;
    			biggest = val1;
    		}
    		else
    		{
    			cout << "Die Zahlen sind gleich" << endl;
    		}
    
    		diff = biggest - smallest;
    
    		if (diff < 1.0/10000000)
    		{
    			cout << "Die Zahlen sind fast gleich" << endl;
    		}
    	}
    
    	keep_window_open();
    	return 0;
    }
    


  • Wir wundern uns was Du hier meinst:

    Rc05venom schrieb:

    ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist.

    Auch zwei sehr große Zahlen können schließlich eine Differenz von 0.0000001 aufweisen.
    Ebenso zwei sehr kleine Zahlen.

    Genauso koennen zwei sehr große/sehr kleine Zahlen dichter als 0.0000001 zusammenliegen.

    Richtig?



  • Furble Wurble schrieb:

    Wir wundern uns was Du hier meinst:

    Rc05venom schrieb:

    ok das ist aber dann ne sehr kleine zahl wenn die diffenz kleiner als 0.0000001 ist.

    Auch zwei sehr große Zahlen können schließlich eine Differenz von 0.0000001 aufweisen.
    Ebenso zwei sehr kleine Zahlen.

    Genauso koennen zwei sehr große/sehr kleine Zahlen dichter als 0.0000001 zusammenliegen.

    Richtig?

    Achso ok, ja!! Da habe ich wohl was falsch formuliert. 😞

    Ich meinte eigentlich: Die Zahl die kleiner als 0.0000001 ist, ist eine sehr kleine Zahl. 😃

    ok danke an alle und entschuldige SeppJ für das kleine Kommunikationsproblem. 😉


Log in to reply