0 Daumen
977 Aufrufe

/* bspl0007.c */
#include <stdio.h>

main()
{
    float u_faktor,betrag;
    printf("\n\t W a e h r u n g s r e c h n e n\n");
    printf("\nBitte Umrechnungsfaktor eingeben: ");
    scanf("%f", &u_faktor);
    printf("Bitte DM-Betrag eingeben: ");
    scanf("%f",&betrag);
    printf("\n%.2f DM entsprechen ",betrag);
    printf("%.2f in der Fremdwaehrung.",
            betrag*u_faktor);

}



Sprache C
Compiler: https://www.onlinegdb.com/

1. Frage:

Was sind jetzt in diesem Fall die ausdrücke u_faktor und betrag?
Ich weiss das ich davor hin und wieder int x,y geschreiben habe.
Das bedeutet, ich definiere zwei ganzzahlige Variabeln x und y.

Im obenstehenden Code sage ich mit float, dass ich für zwei Variabeln ...

1. Variabel: u_faktor
2. Variabel: betrag

... Nachkommastellen haben möchte, standardmässig sind es sechs Nachkommastellen. 
Mit dem %.2f kürzt es die sechs-Nachkommastellen auf zwei Nachkommastellen. 
Stimmt das?

2. Frage:

Hätte ich die standardmässigen 6 Nachkommastellen behalten wollen,
hätte ich statt %.2f einfach %f geschrieben, oder?

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort
Was sind jetzt in diesem Fall die ausdrücke u_faktor und betrag?

u_faktor und betrag sind Variablen vom Typ Float. Wenn Du zuvor int vor Deine Variablen gesetzt hast, hast Du dem Compiler damit mitgeteilt, dass Du an dieser Stelle eine Variable vom Typ Integer (Ganzzahl) definierst. Du kannst den Floats auch direkt Werte zuweisen:

float u_faktor = 3.14f

Für die Ausgabe mit printf würde

printf("%f",u_faktor);

dann 3.140000 liefern. Mit printf druckst Du formatierte Strings. Das %f signalisiert, dass an dieser Stelle eine Float-Variable stehen muss! Diese fügst Du dann kommasepariert an. Dies funktioniert für endlich viele Variablen.

Mit dem %.2f kürzt es die sechs-Nachkommastellen auf zwei Nachkommastellen.  Stimmt das?

Das stimmt. Allerdings nur in der Ausgabe! Intern wird dadurch nicht gerundet.

Hätte ich die standardmässigen 6 Nachkommastellen behalten wollen, hätte ich statt %.2f einfach %f geschrieben, oder?

Richtig. Du kannst Dir auch noch mehr Stellen ausgeben lassen (soweit es der Datentyp Float von der Größe her eben sinnvoll zulässt). So liefert z. B. 

    float u_faktor=1.0f/3.0f;
    printf("%.20f",u_faktor);

die Ausgabe 0.33333334326744079590, was natürlich mathematisch falsch ist!

Noch zwei Tipps:

1.) Verwende für die Main die Signatur int main(). Dies entspricht dem Standard für Funktionsdefinitionen.

2.) Signalisiere am Ende der Main durch return 0, dass das Programm fehlerfrei durchgelaufen ist. Wenn Du später mit Exception-Handling hantierst, kannst Du darüber z. B. Fehlercodes zurückgeben.

Avatar von

Perfekt, vielleicht werde ich zu einzelnen Sachen wenn es weitergeht noch nachfragen müssen. :-)


Sehr sehr gute Antwort!

Perfekt, vielleicht werde ich zu einzelnen Sachen wenn es weitergeht noch nachfragen müssen.

Gerne! Ich freue mich, wenn ich helfen kann :)

Sehr sehr gute Antwort!

Danke für das Lob ;)

Vielen Dank


Habe viel dazugelernt. Habe mich auch gefragt wieso standardmässig int main im editor des onlinegdb steht.

Du hast die Antwort geliefert !:)

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community