IF-Anweisung

Hallo,

schreibe gerade ein Programm, bei dem man die Art des Treibstoffes und die Menge eingeben kann, sich darauf dann der Preis errechnet und dieser ausgegeben wird.
Man kann zwischen drei Arten von Treibstoff wählen.

Komme jetzt bei der IF-Bedingung nicht weiter, wie muss ich die setzen, dass das Programm weiß, welche Art von Treibstoff der Benutzer ausgewählt hat?

Viele Grüße

C:
#include <stdio.h>
#include <stdlib.h>

int main()

{

float p1 = 1.213;
float p2 = 1.257;
//float p3 = 1.358;

char diesel = 'D';
char benzin = 'B';
//char super = 'S';


float menge = 0;
//float s = 0;


printf("Geben Sie die Menge und die Art des Treibstoffes ein: \t");
scanf("%f, %c, %c\n", &menge, &diesel, &benzin);


if(char == 'D')
{
    menge = menge * p1;
    printf("Preis: %.2f Euro\n", menge);


if(char == 'B')
{
    menge = menge *p2;
    printf("Preis: %.2f Euro\n", menge);

}

}
    return EXIT_SUCCESS;

}
 
Komme jetzt bei der IF-Bedingung nicht weiter, wie muss ich die setzen, dass das Programm weiß, welche Art von Treibstoff der Benutzer ausgewählt hat?
Uhm, warum denn
C:
scanf("%f, %c, %c\n", &menge, &diesel, &benzin);
So sagst du, dass du eine Eingabe wie "10, D, B" erwartest. Aber du willst doch nur eine Treibstoffart.
Daher:
C:
char art = '-';
scanf("%f, %c", &menge, &art); // das \n kannst du bei scanf weglassen
if(art == diesel)
{
    // ... 
}
else if(art == benzin)
{
    // ...
}
else
{
    // art == '-' => Fehlerhafte Eingabe
}

cwriter
 
Was genau macht dieses "char = '-'; "?

Weiß jetzt nicht, ob ich es richtig verstanden habe, aber wenn ich das so mache:
C:
char art = '-';
char diesel = 'D';
char benzin = 'B';
//char super = 'S';


float menge = 0;
//float s = 0;


printf("Geben Sie die Menge und die Art des Treibstoffes ein: \t");
scanf("%f, %c", &menge, &art);


if(art == diesel)
{
    menge = menge * p1;
    printf("Preis: %.2f Euro\n", menge);
}

else if(art == benzin)
{
    menge = menge *p2;
    printf("Preis: %.2f Euro\n", menge);

}

gibt es mir gar nichts aus.
 
Wenn ich z.B. 30 D eingebe.
C:
scanf("%f, %c", &menge, &art);
Kunststück. Du müsstest nach deiner Spezifikation auch "30, D" (oder "30,D") eingeben. Genau deshalb ist es immer wichtig, genau zu sagen, was du eigentlich willst, und wenn Fehler auftreten, bei welcher Eingabe.

Der Rückgabewert von scanf wäre übrigens 1 gewesen, und das hätte dir gesagt, dass nur der erste Wert korrekt gelesen wurde.
C:
int r = scanf("%f %c", &menge, &art);
if(r < 2) printf("Falsche Eingabe!\n");
Damit geht es besser (vor allem: Kein Komma :) )

cwriter
 
C:
scanf("%f, %c", &menge, &art);
Kunststück. Du müsstest nach deiner Spezifikation auch "30, D" (oder "30,D") eingeben. Genau deshalb ist es immer wichtig, genau zu sagen, was du eigentlich willst, und wenn Fehler auftreten, bei welcher Eingabe.
Mein Fehler^^.

C:
int r = scanf("%f %c", &menge, &art);
if(r < 2) printf("Falsche Eingabe!\n");
Damit geht es besser (vor allem: Kein Komma :) )

cwriter

Das mit dem Rückgabewert ist mir noch nicht ganz klar. Wo sehe ich, welcher Wert mir zurückgegeben wird?
 
Zurück