Drei Zahlen absteigend sortieren



  • Guten Tag, ich möchte 3 Zahlen absteigend sortieren und habe dieses Programm programmiert:

    #include <stdio.h>

    int main() {
    double x = 0;
    double y = 0;
    double z = 0;

    printf("Geben sie x,y und z aus den Reellen Zahlen ein:\n");
    printf("x = ");
    scanf("%lf",&x);
    printf("y = ");
    scanf("%lf",&y);
    printf("z = ");
    scanf("%lf",&z);
    
    
    if (x < y && y < z) {
        printf("Die Zahlen absteigend sortiert lauten: %f, %f, %f", &z, &y, &x);
    }
    if (z < y && y < x) {
        printf("Die Zahlen absteigend sortiert lauten: %f, %f, %f", &x, &y, &z);
    }
    if (y < z && z < x){
        printf("Die Zahlen absteigend sortiert lauten: %f, %f, %f", &x, &z, &y);
    }
    if (x < z && z < y){
        printf("Die Zahlen absteigend sortiert lauten:%f, %f, %f", &y, &z, &x);
     }
    if (z < x && x < y){
        printf("Die Zahlen absteigend sortiert lauten: %f, %f, %f", &y, &x, &z);
    }
    if (y < x && x < z){
        printf("Die Zahlen absteigend sortiert lauten: %f, %f, %f", &z, &x, &y);
    }
    

    }
    Warum funktioniert es nicht?


  • Mod

    printf ist nicht das Gegenteil von scanf (und umgekehrt). Schau dir zu beiden Funktionen genau an, wie die Formatstrings lauten, und welche Argumente genau zu welchem Formattoken erwartet werden.

    Viele Compiler können das auch für dich kontrollieren (es ist eine sehr häufige Fehlerquelle...), du musst nur das Warnlevel ausreichend hoch setzen (oder die Warnungen auch lesen, falls schon geschehen).



  • Vielen Dank für ihre Antwort ,
    Er schreibt mir die Fehlermeldung in Zeile:
    11,14,17,20,23,26 : Format specifies type 'double' but the argument has type 'double *'
    Was muss ich also ändern?



  • @Maien Du musst C++ lernen 🙂

    EDIT: Sorry, ich meine C! Hab nicht gesehen dass das hier im C Unterforum gepostet war. Ich wollte damit nicht ausdrücken dass du dafür C++ brauchst, das wäre völliger Quatsch. Hab bloss nicht aufgepasst wo die Frage gestellt wurde. Was ich weiter geschrieben habe macht trotzdem Sinn, da die hier relevanten Dinge in C gleich sind wie in C++ /EDIT

    Ne aber ernsthaft... die Fehlermeldung sagt ja genau was falsch ist.
    Also...
    Bei welchen der folgenden Fragen stehst du an:

    1. Was bedeutet die Fehlermeldung? Tip: Mit "format" ist der String "Die Zahlen absteigend sortiert lauten: %f, %f, %f" gemeint.
    2. Welchen Typ hat z.B. deine Variable x?
    3. Was bedeutet double und was bedeutet double* und was ist der Unterschied zwischen den beiden?
    4. Was bedeutet es wenn du &x schreibst?
    5. Welchen Typ hat dann &x?
    6. Was bedeutet der Begriff "argument"?
    7. Bonusfrage: Was bedeutet der Begriff "parameter" und was ist der Unterschied zwischen "parameter" und "argument"?

Anmelden zum Antworten