# Schilling in Euro rechnen



## Marimi (22. Oktober 2010)

Hallo C++ Freunde!

Ich bin blutiger Anfänger in C++ und soll ein Programm schreiben für folgende Aufgaben stellung: Aufgabe 2.7 
Schreiben Sie ein Programm zur Umrechnung von Schilling in Euro. Geben Sie das Ergebnis formatiert in Euro und Cent aus. (Betragsteile kleiner als ein Cent können Sie ignorieren.) 

Ich hab auch schon ein Programm geschrieben allerdings wird es nicht vollständig ausgeführt, hier mein Code:
#include <iostream>
using namespace std;

int main() {
    cout << "Geben Sie einen Betrag ein: ";
    double a;
    cin >> a;
    double b=13.7603;
    cin >> b;
    cout << "Schilling zu Euro: " << (a/b)/100;
    cout << "Euro in Schilling: " << a*b << endl;

    return 0;
}   

Wenn ich das Programm nun ausführe kann ich lediglich einen Wert eingeben er rechnet mir aber rein garnichts aus. Könnt ihr mir bitte helfen, ich kann seit gestern nacht nur mehr an die blöde Hausaufgabe denken .

Lieben Gruß und danke an alle
Marimi


----------



## Bratkartoffel (22. Oktober 2010)

Hallo,

ich würde das Ganze mit scanf() einlesen und mit printf() dann formatiert ausgeben.
Das ist zwar normales C, funktioniert mit C++ aber genau so.

Wenn du willst, kann ich dir das auch schnell an einem Beispiel zeigen.

Gruß
BK


----------



## vfl_freak (22. Oktober 2010)

Moin,



Marimi hat gesagt.:


> ```
> double b=13.7603;
> cin >> b;
> cout << "Schilling zu Euro: " << (a/b)/100;
> ...



IMHO ist die Zeile "cin >> b" hier überflüssig !
Schließlich hast Du ja *"b"* zuvor schon als konstanten Faktor für die Berechnungen deklariert !!

Gruß
Klaus


----------



## Marimi (22. Oktober 2010)

@BK könntest du mir die Variante mit dem scarf und printf zeug mal zeigen wie das mit meinem programm aussehen würde.  wär voll lieb von dir
@fl_freak: würde es ohne dem denn funktionieren? XD


----------



## deepthroat (22. Oktober 2010)

Marimi hat gesagt.:


> Ich hab auch schon ein Programm geschrieben allerdings wird es nicht vollständig ausgeführt, hier mein Code:
> #include <iostream>
> using namespace std;
> 
> ...


Wie kommst du denn darauf?

Dir ist bewußt, dass du da 2 Werte einliest und dementsprechend auch 2 Werte eingeben mußt?

Du solltest die Variablen besser benennen. b soll doch bestimmt der Wechselkurs Schilling in EUR sein, oder? Diesen Wert kannst du außerdem am besten als Konstante definieren (*const*) und brauchst ihn nicht einlesen.

Wenn ich "55 13.7603" eingebe, erhalte ich mit deinem Programm:

```
Schilling zu Euro: 0.0399701Euro in Schilling: 756.817
```

Gruß


----------



## Bratkartoffel (22. Oktober 2010)

Hi,

in deinem Fall würde das Ganze in etwa so aussehen:

```
#include <stdio.h>

#define KURS 13.7603f

int main(void) {
  float eingabe = 0;
  printf("Geben Sie einen Betrag ein: ");
  int tmp = scanf("%f", &eingabe);

  if(tmp == 1) {    /* Element wurde erfolgreich gelesen */
    printf("Schilling -> Euro: %.2f\n", eingabe / KURS);
    printf("Euro -> Schilling: %.2f\n", eingabe * KURS);
  }
  else    /* Fehler beim Lesen der Eingabe (z.B wenn Eingabe keine Zahl) */
    printf("Keine gültige Eingabe, nochmal versuchen!\n");

  return 0;
}
```

Als Ergebnis erhalte ich:

```
Geben Sie einen Betrag ein: 55
Schilling -> Euro: 4.00
Euro -> Schilling: 756.82

Geben Sie einen Betrag ein: 13.7555555555
Schilling -> Euro: 1.00
Euro -> Schilling: 189.28

Geben Sie einen Betrag ein: a
Keine gültige Eingabe, nochmal versuchen!
```

Auch wenn das die Lösung (in C) ist, versuchs weiter komplett in C++ zu machen 

Gruß
BK


----------



## Marimi (22. Oktober 2010)

Ich versteh ned ma c++ XD. was isn der unterschied zwischen dem printf und dem cout? das es so if anweisungen in c++ gibt weiß ich auch schon also dürfte das ja zulässig sein XD


----------



## Marimi (22. Oktober 2010)

deepthroat hat gesagt.:


> Wie kommst du denn darauf?
> 
> Dir ist bewußt, dass du da 2 Werte einliest und dementsprechend auch 2 Werte eingeben mußt?
> 
> ...


 
Ich erhalte beim ausführen gar nix . Ja b soll der wechselkurs sein. achherje des is ne horror aufgabe fürn blutigen anfänger. Ich kann grad ma ein programm schreiben was umfang und fläche vom rechteck ausrechnet xD.


----------



## deepthroat (22. Oktober 2010)

@Bratkartoffel: Jetzt hast du ihn/sie verwirrt. :-(


Marimi hat gesagt.:


> Ich versteh ned ma c++ XD. was isn der unterschied zwischen dem printf und dem cout? das es so if anweisungen in c++ gibt weiß ich auch schon also dürfte das ja zulässig sein XD


Kümmere dich nicht um das printf/scanf. Das ist etwas komplizierter in C. Verwende einfach die >> und << Operatoren in C++, die machen automatisch das Richtige und du mußt nicht mit Zeigern hantieren (was du vermutlich noch nicht kannst...).

Gruß


----------



## deepthroat (22. Oktober 2010)

Marimi hat gesagt.:


> Ich erhalte beim ausführen gar nix . Ja b soll der wechselkurs sein. achherje des is ne horror aufgabe fürn blutigen anfänger. Ich kann grad ma ein programm schreiben was umfang und fläche vom rechteck ausrechnet xD.


Wie führst du das Programm denn aus? Was gibst du denn ein?

Das Programm beendet sich natürlich sofort nach der Ausgabe der Ergebnisse. Meinst du evtl. das damit, das es nichts berechnet? 

Füge mal vor dem return 0; noch ein:

```
cin.sync(); cin.get();
```

Gruß


----------



## Marimi (22. Oktober 2010)

Ich hab jetzt: 
#include <iostream>
using namespace std;

int main() {
    cout << "Geben Sie einen Betrag ein: ";
    double a;
    cin >> a;
    const double  Kurs=13.7603;
    cout << "Schilling zu Euro: " << (a/Kurs)/100;
    cout << "Euro in Schilling: " << a*Kurs << endl;

    cin.sync(); cin.get();
    return 0;
}   

Jetzt krieg ich sogar ergebnisse die sind aber wie du schon sagst voll bescheuert XD. des eien (a/b)/100 hab ich ja nur so geschreiebn egen der formatierung weil ich kein besseres mittel wusste mit meinem ****-wissen . if abfrage weiß ich das geht aber ich hab noch ne gelernt wie man die anwendet und so, aber ich werds probieren.


----------



## deepthroat (22. Oktober 2010)

Bitte verwende die Code-Tags für deinen Code. Also [code=cpp] ... [/code] um den Code schreiben.

Die Variable Kurs zu nennen ist immer noch nicht wirklich schön, da man ja gar nicht weiß welcher Kurs da jetzt gemeint ist:

```
const double EUR_to_Schilling = 13.7603;
```



Marimi hat gesagt.:


> Jetzt krieg ich sogar ergebnisse die sind aber wie du schon sagst voll bescheuert XD. des eien (a/b)/100 hab ich ja nur so geschreiebn egen der formatierung weil ich kein besseres mittel wusste mit meinem ****-wissen


Dann kümmere dich nicht um solche Dinge wie Formatierung, das ist doch nebensächlich.

Etwas elementare Mathematik reicht zur Lösung der Aufgabe aus.

Gruß

PS: Achte bitte auf die Netiquette!


----------



## vfl_freak (22. Oktober 2010)

Moin,



Marimi hat gesagt.:


> cout << "Schilling zu Euro: " << (a/Kurs)/100;



hierzu eine Anmerkung, da Du folgenden Fehler bislang konsequent durch den ganzen Thread geschleppt hast 

*Du darfst hier nicht durch '100' teilen !!*
Beipiel:
Die Eingabe sei :  55
geteilt durch _Kurs_ :  4,00 EUR (richtiges Ergebnis !!)

Teilst Du weiterhin durch 100, ist das Ergebnis nur noch 4 ct. !! ;-)

Gruß
Klaus


----------



## Marimi (24. Oktober 2010)

Ich möchte mich bei euch herzlichst bedanken. Das Programm funktioniert  Sorry dass ich nicht wusste wie ich die Codeansicht richtig mache ^^aber werds mir merken.


----------

