Formatierung einer Tabelle mit printf



  • Hallo zusammen, ich bin neu hier und habe auch direkt eine Frage!

    Ich bin dabei einen Währungsumrechner zu programmieren, bzw. eigentlich bin ich fertig damit. Das Problem ist nur, dass bei Werten über 999€ die Kommata bei der Ausgabe natürlich nciht mehr so schön übereinanderstehen. Kann man das irgendwie beeinflussen ohne ein Array oder ähnliches zu erzeugen?

    printf("   Euro |   Dollar \n");			//Header für Euro zu Dollar
    	printf("--------+--------- \n");			//Header für Euro zu Dollar
    
    	while (rechnung1 <= ende) {					//Solange der Startwert kleiner als der Endwert ist
    
    		e2d = euro2dollar(rechnung1);			//Umrechnung durch funktion euro2dollar
    		printf(" %.2f |   %.2f \n", rechnung1, e2d);		//%.2f um auf 2 Nachkommastellen zu kommen!
    
    		rechnung1 = rechnung1 + schritt;
    
    	}
    

    http://fs5.directupload.net/images/151110/8oedlwlq.png
    Da sieht man im Prinzip wie die Tabelle aussieht, bei 1000.00 stehen die Punkte halt nicht untereinander, kann man das beheben?

    Gruß
    Basti



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • RTFM

    #include <stdio.h>
    
    int main()
    {
       printf ("%#8.2f\n%#8.2f\n%#8.2f\n", 3.1416, 3., 553.1416);
    }
    


  • Tut mir Leid, dass es der falsche Bereich war! Laut Studienordnung ist mein Programmierkurs ein C++ Kurs.

    Ich habe die Änderungen mit #8 übernommen und es funktioniert nun genau wie ich es wollte! Vielen herzlichen Dank an manni66 🙂

    Kannst du mir vielleicht auch noch bei einer anderen ähnlichen Aufgabe helfen?
    Weißt du wie ich beim umrechnen exakte Werte erhalte? Laut Aufgabenstellung soll ich "mit maximaler Genauigkeit(d.h. ohne rundung) ausgeben"

    Ich habe es jetzt so gemacht:

    float euro2dollar(float euro, float wechsel) {									//Aufgabenteil a)
    	return (euro*wechsel);
    }
    [........]
    printf("%f € entspricht %.15f $ \n", e, e2d);			//15 Nachkommastellen
    

    Ich frage mich allerdings ob das die gewünschte Lösung so ist, denn im Prinzip kann ich doch gar nicht 100%ig genau ausgeben, da ja beim umrechnen vom Computer ins Binärsystem schon "Fehler" auftreten.

    Gruß
    basti



  • double ist genauer als float

    while (rechnung1 <= ende) {                 //Solange der Startwert kleiner als der Endwert ist
    

    <= bedeutet aber solange der Startwert keiner oder gleich dem Endwert ist.



  • Bitmapper schrieb:

    double ist genauer als float

    while (rechnung1 <= ende) {                 //Solange der Startwert kleiner als der Endwert ist
    

    <= bedeutet aber solange der Startwert keiner oder gleich dem Endwert ist.

    Das ist so gewollt, mit double udn long double ergeben sich allerdings keine neuen Werte, die Ausgabe auf 15 Nachkommastellen ist identisch.


Log in to reply