c rechnung



  • Hallo,

    Ich hätet hier zu eine Frage:

    float ergebnis;
    int x = 10,
        y = 3;
    
    ergebnis = x/y;
    
    printf("Ergebnis : %f\n", ergebnis);  /* 3.000... */
    

    Warum ergibt sich aus dieser Rechnung 3,00 ?? Da kommt doch eigtl 3,333333... raus ?!

    Oder habe Ich irgend etwas falsch gemacht?

    Danke im Voraus



  • weil erst die division durchgeführt wird und das ergebnis dann in einen float gecastet wird. Außerdem ist das das falsche Forum!

    #include <stdlib.h>
    
    int main()
    {
        printf("Ergebnis: %f\n", 10.0f / 3.0f);
    }
    

    ...



  • Also würde es auch so gehen?:

    float ergebnis;
    int x = 10,
        y = 3;
    
    ergebnis =(float) x/y;
    
    printf("Ergebnis : %f\n", ergebnis);  /* 3.000... */
    

    also bei mir klapt es so jetz auf jeden fall



  • naja ... klappt in dem Fall ... solltest y auch noch casten ... oder du machst x und y direkt vom typen float ^^



  • float ergebniss;
    int x = 10;
    int y = 3;
    ergebniss = static_cast<float>(x)/y;
    std::cout << ergebniss << std::endl;
    

    Jedenfalls im C++ - Subforum.



  • öhm Michael991 ... überließ einfach darthdespotism's Post.

    @darthdespotism:

    std::cout << (10.0f / 3.0f) << std::endl;
    

    ? Wofür da casten und überhaupt ne Variable anlegen?



  • 😕 Was ist den cout und std und endl????? und warum static_cast was ist da für ein Unterschied zu meinem? *verwirrt*



  • achso ok ..



  • (D)Evil schrieb:

    @darthdespotism:

    std::cout << (10.0f / 3.0f) << std::endl;
    

    ? Wofür da casten und überhaupt ne Variable anlegen?

    Die deklaration der int könnte ja dazu dienen ein Minimalbeispiel zu erstellen während die int im Zielprogramm aus irgendwelchen funktionen zurückgeliefert werden.



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
    	char z = 'C';
    
    	printf("Wert : %d ->(ASCII-codiert)->%c\n" ,z,z);
    
        system("PAUSE");
    	return 0;
    
    }
    

    Könnte hier zu noch eine Erklärung gebrauchen 🙂
    und zwar warum steht am Ende von printf zweimal ,z,z?
    Könnte es mir so erklären weil 2mal nach z verlangt wird, ist dies Richtig?



  • Könnte es mir so erklären weil 2mal nach z verlangt wird, ist dies Richtig?

    Ja du willst ja einmal den Dez Wert und einmal den ASCII wert



  • habe noch etwas 😉

    Angenommen, ein Autor erhält 5% Honorar pro verkauftes uch, das mit einem Verkaufspreis von 15,95 Euro angesetzt ist. Wie viele Bücher muss er verkaufen, damit er Millionär wird?

    Könntet ihr mir dafür bitte den C Code geben der für einen totalen NEULING lesbar ist und ihn vllt noch ein bisschen erklären 😉

    Danke



  • Hausaufgabe machen wir eigentlich nicht...

    Aber als Anleitung:
    Rechne mal 5% von 15,95 aus und dann dividiere 1000000 durch diesen wert...
    Ist genau eine zeile Code...

    Sind geschätzt 1,2 Mio Bücher



  • Na ist doch simple Prozentrechnung ...



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
        double rechnung,
    		honorar_vb = 5,
    		buch = 15,95;
    
    	double honorar;
    
    	honorar = 19,95/100*5;
        buch = 1000000/honorar
    
        printf("Honoraranteil : %f\n", honorar);
    	printf("Wiviele Bücher er verkaufen muss um Millionär zu werden : %lf\n", buch); 
    
    	system("PAUSE");
    	return 0;
    
    }
    

    was mach ich denn hier falsch 😕



  • hmm du glaubst das % das selbe ist wie die mathematische Prozentrechnung. % ist ein Modulo-Operator.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        double honorar = 5 / 100 * 15,95; // p / 100 * G
        buch = honorar/1000000
    
        printf("Honoraranteil: %f\n", honorar);
        printf("Wiviele Bücher er verkaufen muss um Millionär zu werden : %lf\n, (1000000 / honorar));
    }
    

    ...



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
    	double honorar = 5 / 100 * 15,95;  
        double buch = honorar/1000000; 
    
        printf("Honoraranteil : %f\n", honorar);
    	printf("Wiviele Bücher er verkaufen muss um Millionär zu werden : %lf\n", buch); 
    
    	system("PAUSE");
    	return 0;
    
    }
    

    double honorar = 5 / 100 * 15,95;

    hier soll ein syntaxfehler sein?



  • Hallo !

    Michael991 schrieb:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
        double rechnung,
    		honorar_vb = 5,
    		buch = 15,95;      // 15.95 -> Punkt statt Komma
    
    	double honorar;
    
    	honorar = 19,95/100*5;  // Modulo geändert, ok, aber trotzdem Punkt statt Komma
        buch = 1000000/honorar
    
        printf("Honoraranteil : %f\n, honorar); // String-Ende Zeichen, die Gänschefüßchen rechts fehlen.
    	printf("Wiviele Bücher er verkaufen muss um Millionär zu werden : %lf\n", buch); 
    
    	system("PAUSE");
    	return 0;
    
    }
    

    was mach ich denn hier falsch 😕

    Die Fehler habe ich dir mal kommentiert.
    Hast du einen stummen Kompiler der dir die Fehler nicht anzeigt ? 😕



  • Michael991 schrieb:

    double honorar = 5 / 100 * 15,95;

    hier soll ein syntaxfehler sein?

    Bingo !!! Ersetze das Komma durch einen Dezimalpunkt . 🙂

    Edit: Da hat sich das eine oder andere Posting überschnitten.



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    
        double rechnung, 
            honorar_vb = 5, 
            buch = 15.95;       
    
        double honorar; 
    
    	honorar = 15.95/100*5;  
        buch = honorar/1000000;
    
        printf("Honoraranteil : %lf\n", honorar);
    	printf("Wiviele Buecher er verkaufen muss um Millionaer zu werden : %lf\n", buch); 
    
    	system("PAUSE");
    	return 0;
    
    }
    

    ok er führt es aus, aber:

    Honoraranteil = 0,797500 (Euro?)

    Buecher die er verkaufen muss um Millonaer zu werden: o,ooooo1

    Hat das seine Richtigkeit?


Anmelden zum Antworten