double ausgaben sehen merkwürdig aus



  • Hallo hier funktioniert etwas nicht so richtig

    Ich benutze
    Win 10
    Code Blocks
    will in C programmieren
    bin eher Java programmierer

    Da sist der Code

    # include <stdio.h>
    # include <stdlib.h>
    
    int main()
    {
        int summand1;
        int summand2;
        int summe;
        int div;
        int multi;
        int subr;
    
        double Wert1;
        double Wert2;
        double Wert3;
        double Wert4;
    
        printf(" Geben Sie einen Wert für den ersten Wert ein \n");
    
        scanf("%d", &summand1);
    
        printf(" Geben Sie einen zweitne Wert ein \n");
    
        scanf("%d", &summand2);
    
        printf("Ihre beiden Zahlen lauten  %d %d ", summand1, summand2);
        printf("\n");
    
        printf(" Geben Sie einen Wert für den ersten double Wert ein \n  ");
    
        scanf("%.3f",&Wert1);
    
        printf(" Geben Sie einen Wert für den zweiten double Wert ein \n ");
    
        scanf("%.3f",&Wert2);
    
        printf(" Geben Sie einen Wert für den drittnen double Wert ein \n ");
    
        scanf("%.3f",&Wert3);
    
        printf(" Ihre Werte lauten:%.3f %.3f %.3f ", Wert1, Wert2, Wert3);
        printf("\n");
    
        summe = summand1 + summand2;
        div   = summand1 / summand2;
        multi = summand1 - summand2;
        subr  = summand1 * summand2;
    
        printf(" Ihre Summe lautet: %d \n", summe);
    
        printf(" Ihre Division lautet: %d\n", div);
    
        printf(" Ihre multi lautet: %d\n", multi);
    
        printf(" Ihre Subraktion lautet: %d\n", subr);
    
    }
    

    und das die Ausgabe

    Geben Sie einen Wert f³r den ersten Wert ein
    12
    Geben Sie einen zweitne Wert ein
    23
    Ihre beiden Zahlen lauten 12 23
    Geben Sie einen Wert f³r den ersten double Wert ein
    2.12
    Geben Sie einen Wert f³r den zweiten double Wert ein
    Geben Sie einen Wert f³r den drittnen double Wert ein
    Ihre Werte lauten:0.000 2682595152729302700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000 -0.000
    Ihre Summe lautet: 35
    Ihre Division lautet: 0
    Ihre multi lautet: -11
    Ihre Subraktion lautet: 276

    Process returned 0 (0x0) execution time : 9.844 s
    Press any key to continue.

    Wo liegt dne da der Fehler genau??

    Bei den Integer werten klappt es



  • scanf unterstützt keine formatspezifizierer für die präzision. wenn ich sie raus nehme, gehts. zumindest dann, wenn ich den zeilenumbruch auch noch aus dem eingabepuffer entferne oder irgendwelche anderen "tricks" anwende. 🙄



  • ok danke also muss ich bei dem befehl Scanf nicht angeben ob ich ein double oder int oder eine andere Formatangabe habe?



  • Doubles liest man nicht mit %f ein, sondern mit %lf. Bekommst du keine Warnung dafür?

    Die Format-Strings für scanf und printf sind nicht identisch!

    Edit:
    willst du es unverständlich haben? Nein? Dann schau dir diese beiden Zeilen nochmal an. Könnten falsch sein:

    multi = summand1 - summand2; 
        subr  = summand1 * summand2;
    


  • Und es heißt "Subtraktion". 😉


Log in to reply