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.