Zahlenausgabe formatieren mit printf()



  • Hallo Forum,

    Ich bin hier grad an einem Schulprojekt, ein Kreditzinsenrechner, zugange und doktore jetzt schon 2 Stunden an einem winzigen Problemchen. Hab schon unterschiedliche Variationen des Formatstrings (linksbündig, rechtsbündig, präzision, wertebereich) probiert, aber es geht immer irgendwas verschoben.

    Und zwar gibt es 2 Zahlen, die in 2 double-Variablen sind. Deren Bereiche reichen von 500-10000

    Jetzt gätte ich auf der Konsole eine formatierte Ausgabe mit dem printf. Dabei sollen die Dezimalpunkte untereinander liegen und die größere Zahl, egal wie viele Stellen, mit nur einem Leerzeichen hinter einem Doppelpunkt stehen. Zahl 1 ist immer größer als Zahl 2. Dazu immer 2 Stellen nach dem Komma. Etwa so:

    Beispiele in der Ausgabekonsole, wie es sein soll:

    Zahl 1 : 600.10
    Zahl 2 : 500.30
    
    Zahl 1 : 6000.50
    Zahl 2 :  500.20
    
    Zahl 1 : 10000.00
    Zahl 2 :    20.84
    

    So nicht:

    Komma steht falsch:

    Zahl 1 : 6000.00
    Zahl 2 : 500.00
    

    Mehr als 1 leerzeichen hinter dem : der größeren zahl bei <10000

    Zahl 1 :    600.00
    Zahl 2 :    500.00
    

    ein so ein so

    Zahl 1 : 600.00
    Zahl 2 :    500.00
    

    Gruß Franky 🙂



  • Das ist eine ziemlich praxisfremde und bescheuerte Aufgabe 😉

    Ansatz:

    Du schreibst mit sprintf() beider Variable in je einen String. Dann
    schaust Du Dir die Stringlängen an und nimmst die Länge des längsten.
    Diese Länge verwendest Du dann für printf() als Komplettlänge.

    char a[...];
    char b[...];
    
    sprintf( a, "%.2lf", 123.45);
    sprintf( b, "%.2lf", 12345.67);
    
    len = strlen(a) > strlen(b) ? strlen(a) : strlen(b);
    printf( "\nErgebnis: %*.2lf", len, wert_a);
    printf( "\nErgebnis: %*.2lf", len, wert_b);
    

    So im Prinzip ...



  • Wie bescheuert das ist, da hab ich leider keinen Einfluss drauf, da das eine geforderte Formatierung ist, von der nicht abgewichen werden darf. 🙄

    an das, was du gepostet hast, hab ich auch schon gedacht, aber das dürfen wir sicher nicht benutzen, weil wir müssen das konsequent mit printf machen 😞 .



  • Ist doch alles printf(). Zu printf() gehören auch sprintf etc.



  • Naja, stimmt auch wieder... Ach was solls - rein damit! Danke!! 🙂 🙂 🙂 🙂 🙂


Anmelden zum Antworten