Währungsrechner
-
2. Aufgabe: Währungsrechner erweitert
Erstellen Sie ein Programm, das eine Umrechnungstabelle für USD -> EUR ausgibt.
Der Benutzer soll den Wechselkurs angeben (USD->EUR). Das Programm gibt dann folgende Tabelle aus:

Bitte geben Sie den Wechselkurs (USD->EUR) ein: 0.9389| 1.00USD = 0.94 EUR | | 10.00USD= 9.39EUR| 100.00USD= 93.89EUR|
| 2.00 USD = 1.88 EUR | 15.00 USD = 14.08 EUR | 200.00 USD = 187.78 EUR |
| 3.00 USD = 2.82 EUR | 20.00 USD = 18.78 EUR | 300.00 USD = 281.67 EUR |
| 4.00 USD = 3.76 EUR | 25.00 USD = 23.47 EUR | 400.00 USD = 375.56 EUR |
| 5.00 USD = 4.69 EUR | 30.00 USD = 28.17 EUR | 500.00 USD = 469.45 EUR |
| 6.00 USD = 5.63 EUR | 35.00 USD = 32.86 EUR | 600.00 USD = 563.34 EUR |
| 7.00 USD = 6.57 EUR | 40.00 USD = 37.56 EUR | 700.00 USD = 657.23 EUR |
| 8.00 USD = 7.51 EUR | 45.00 USD = 42.25 EUR | 800.00 USD = 751.12 EUR |
| 9.00 USD = 8.45 EUR | 50.00 USD = 46.94 EUR | 900.00 USD = 845.01 EUR |
| 55.00 USD = 51.64 EUR | 1000.00 USD = 938.90 EUR |
| 60.00 USD = 56.33 EUR | 1100.00 USD = 1032.79 EUR |
| 65.00 USD = 61.03 EUR | 1200.00 USD = 1126.68 EUR |
| 70.00 USD = 65.72 EUR | 1300.00 USD = 1220.57 EUR |
| 75.00 USD = 70.42 EUR | 1400.00 USD = 1314.46 EUR |
| 80.00 USD = 75.11 EUR | 1500.00 USD = 1408.35 EUR |
| 85.00 USD = 79.81 EUR |
| 90.00 USD = 84.50 EUR |
| 95.00 USD = 89.20 EUR |Weiß jemand wie ich das in C programmiere?
Bitte um Hilfe!
-
Der untere Teil ist leider etwas verrutscht.
-
Hast du denn schon einen Ansatz für deine Aufgabe? Wenn ja und du ein Problem damit hast, stelle bitte eine genauere Frage.
Meine Erfahrung hier im Forum ist, dass du hier keine Hausaufgaben für dich erledigst bekommst. Ein wenig Eigeninitiative erhöht auf jeden Fall drastisch die Hilfbereitschaft der anderen Forenmitglieder.--------
1 Erst wechselkurs einlesen
2 Schleife für die Berechnung des € Werts
3 Ausgabe des $ Werts + Ausgabe des berechneten € Werts im SchleifenkörperWie lange die Schleife gehen soll, hängt dann ab wieviele Werte du von $ -> € umrechnen willst. Wenn das immer diese festen Werte sind, kann man das mit versch. Mitteln machen. Ein Array würde sich für die Originalwerte anbieten, oder evtl. gar nur eine Enumeration.
-
David_h94 schrieb:
Der untere Teil ist leider etwas verrutscht.
Dafür gibt es Code-Tags. Die belassen die ursprüngliche Formatierung
(Text markieren und auf den Code-Button unter denklicken.
| 1.00USD = 0.94 EUR | | 10.00USD= 9.39EUR| 100.00USD= 93.89EUR| | 2.00 USD = 1.88 EUR | 15.00 USD = 14.08 EUR | 200.00 USD = 187.78 EUR | | 3.00 USD = 2.82 EUR | 20.00 USD = 18.78 EUR | 300.00 USD = 281.67 EUR | | 4.00 USD = 3.76 EUR | 25.00 USD = 23.47 EUR | 400.00 USD = 375.56 EUR | | 5.00 USD = 4.69 EUR | 30.00 USD = 28.17 EUR | 500.00 USD = 469.45 EUR | | 6.00 USD = 5.63 EUR | 35.00 USD = 32.86 EUR | 600.00 USD = 563.34 EUR | | 7.00 USD = 6.57 EUR | 40.00 USD = 37.56 EUR | 700.00 USD = 657.23 EUR | | 8.00 USD = 7.51 EUR | 45.00 USD = 42.25 EUR | 800.00 USD = 751.12 EUR | | 9.00 USD = 8.45 EUR | 50.00 USD = 46.94 EUR | 900.00 USD = 845.01 EUR | | 55.00 USD = 51.64 EUR | 1000.00 USD = 938.90 EUR | | 60.00 USD = 56.33 EUR | 1100.00 USD = 1032.79 EUR | | 65.00 USD = 61.03 EUR | 1200.00 USD = 1126.68 EUR | | 70.00 USD = 65.72 EUR | 1300.00 USD = 1220.57 EUR | | 75.00 USD = 70.42 EUR | 1400.00 USD = 1314.46 EUR | | 80.00 USD = 75.11 EUR | 1500.00 USD = 1408.35 EUR | | 85.00 USD = 79.81 EUR | | 90.00 USD = 84.50 EUR | | 95.00 USD = 89.20 EUR |
David_h94 schrieb:
Weiß jemand wie ich das in C programmiere?
Bitte um Hilfe!Zeig was du bisher gemacht hast und neschreib, wo du Probleme hast.
-
Also den Währungsrechner an sich habe ich schon hinbekommen.
Der sieht so aus:
#include <stdio.h>
int main()
{
float n = 0;
float euro = 0;
float i = 0;printf("Bitte geben Sie den Wechselkurs (USD->EUR) ein: ");
scanf("%f", &n);for(i = 1; i < 10; i=i +1)
{
euro = i * n;
printf("%.2f USD = %.2f EUR\n", i, euro);
}for(i = 10; i <= 95; i=i +5)
{
euro = i * n;
printf("%.2f USD = %.2f EUR\n", i, euro);
}
for(i = 100; i <= 1500; i=i +100)
{
euro = i * n;
printf("%.2f USD = %.2f EUR\n", i, euro);
}return 0;
}Mein Problem liegt jetzt bei der Darstellung in der Tabellenform.
Ich glaub wir sollen das mit switch -case realisieren.
-
David_h94 schrieb:
Ich glaub wir sollen das mit switch -case realisieren.
Dann trenn dich mal von dieser Annahme, sie ist nämlich irreführend. Ein hilfreicheres Sprachmittel wäre eine Schleife. Egal welche. Man darf in einer Schleife auch mehrere Dinge tun und man darf auch mehrere Zähler in einer Schleife haben.
Bist du sicher, ob die Ausgabe überhaupt spaltenweise erfolgen soll und diese Formatierung nicht bloß der Verkürzung der Aufgabenstellung dient?
float ist übrigens der denkbar schlechteste Datentyp für Geld und andere diskrete Größen. Eine einfache Abhilfe wäre, mit Ganzzahlen zu rechnen (und die kleinste Einheit ist das ein Cent oder ein Zehntelcent.
-
Auch für deinen Code kannst du die Codetags nehmen. Besser sind noch die C-tags unter dem
Die Variablennamen von i bis n werden üblicherweise für int-Wert genommen.
Du solltest die Gesammtlänge bei printf noch angeben. Dann wird bei den Hunderterbeträgen das Leerzeichen vorangestellt.Warum glaubst du an switch/case?
-
DirkB schrieb:
Warum glaubst du an switch/case?
Wenn switch/case so gut und so allmächtig ist, wieso lässt es dann zu, dass auf der Welt schlechter Code geschrieben wird?
-
Weil das wenn/dann, das du auch gerade gebetet hast, auch sehr mächtig ist.
Der schlechteste Code wird ja überwiegend von den Gotoisten geschrieben.
-
Habe es jetzt doch mit if/else gemacht.
#include <stdio.h>int main()
{float wechselKurs=0;
float euro = 0;
float i = 0;
float ersteSpalte = 1.0;
float zweiteSpalte = 5.0;
float dritteSpalte = 100.0;
int pruefeEingabe = -1;printf("\nBitte geben Sie den Wechselkurs (USD->EUR) ein: ");
pruefeEingabe = scanf("%f", &wechselKurs);if(pruefeEingabe ==1)
{
if(wechselKurs <= 0)
{
printf("Eingabe muss eine positive Zahl sein!\n");
}else {for(i = 1; i <= 19; i++)
{
printf("\n");
/*Erste Spalte 1 bis 9*/
euro = ersteSpalte * wechselKurs;
if(ersteSpalte < 10)
{
printf("| %4.2f USD = %4.2f EURO ", ersteSpalte, euro);
ersteSpalte++;
}/*Zweite Spalte 10 bis 95*/
euro = zweiteSpalte * wechselKurs;
if(zweiteSpalte < 50)
{
printf("| %5.2f USD = %5.2f EURO |", zweiteSpalte, euro);
zweiteSpalte = zweiteSpalte + 5;
}else if(zweiteSpalte < 80)
{printf("|\t\t\t| %5.2f USD = %5.2f EURO |", zweiteSpalte, euro);
zweiteSpalte = zweiteSpalte + 5;}else if(zweiteSpalte < 100)
{printf("|\t\t\t| %5.2f USD = %5.2f EURO |\t\t\t |", zweiteSpalte, euro);
zweiteSpalte = zweiteSpalte + 5;}
/*Dritte Spalte 100 bis 1500*/
euro = dritteSpalte * wechselKurs;
if(dritteSpalte <= 1500)
{
printf(" %7.2f USD = %7.2f EURO |", dritteSpalte, euro);
dritteSpalte = dritteSpalte + 100;
}
}}
}else{
printf("Eingabe muss eine Zahl sein!\n");
}return 0;
}
-
#include <stdio.h> int main() { float wechselKurs=0; float euro = 0; float i = 0; float ersteSpalte = 1.0; float zweiteSpalte = 5.0; float dritteSpalte = 100.0; int pruefeEingabe = -1; printf("\nBitte geben Sie den Wechselkurs (USD->EUR) ein: "); pruefeEingabe = scanf("%f", &wechselKurs); if(pruefeEingabe ==1) { if(wechselKurs <= 0) { printf("Eingabe muss eine positive Zahl sein!\n"); }else { printf("-------------------------------------------------------------------------------"); for(i = 1; i <= 19; i++) { printf("\n"); /*Erste Spalte 1 bis 9*/ euro = ersteSpalte * wechselKurs; if(ersteSpalte < 10) { printf("| %4.2f USD = %4.2f EURO ", ersteSpalte, euro); ersteSpalte++; } /*Zweite Spalte 10 bis 95*/ euro = zweiteSpalte * wechselKurs; if(zweiteSpalte < 50) { printf("| %5.2f USD = %5.2f EURO |", zweiteSpalte, euro); zweiteSpalte = zweiteSpalte + 5; }else if(zweiteSpalte < 80) { printf("|\t\t\t| %5.2f USD = %5.2f EURO |", zweiteSpalte, euro); zweiteSpalte = zweiteSpalte + 5; }else if(zweiteSpalte < 100) { printf("|\t\t\t| %5.2f USD = %5.2f EURO |\t\t\t |", zweiteSpalte, euro); zweiteSpalte = zweiteSpalte + 5; } /*Dritte Spalte 100 bis 1500*/ euro = dritteSpalte * wechselKurs; if(dritteSpalte <= 1500) { printf(" %7.2f USD = %7.2f EURO |", dritteSpalte, euro); dritteSpalte = dritteSpalte + 100; } } printf("\n-------------------------------------------------------------------------------\n"); } }else{ printf("Eingabe muss eine Zahl sein!\n"); } return 0; }
-
Die Breite der Tabulatoren ist sehr System/Editor/Konsolen abhängig.
Es ist besser du nimmst da Leerzeichen.Wenn du in deine Spalten einen else-Zweig einbaust, wird es auch einfacher.
if(ersteSpalte < 10) { printf("| %4.2f USD = %4.2f EURO ", ersteSpalte, ersteSpalte * wechselKurs); } else { printf("| "); } ersteSpalte++; if(zweiteSpalte < 50) { printf("| %5.2f USD = %5.2f EURO ", zweiteSpalte , zweiteSpalte * wechselKurs); } else { printf("| "); } zweiteSpalte = zweiteSpalte + 5
Da du dann dreimal fast das Gleiche stehen hast, kannst du die Start- und Endwerte in Arrays/structs packen und in einer Schleife abarbeiten.