Anzeige

IF-Anweisung


#1
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;

}
 

cwriter

Erfahrenes Mitglied
#2
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
 
#3
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.
 

cwriter

Erfahrenes Mitglied
#4

cwriter

Erfahrenes Mitglied
#6
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
 
#7
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?
 
Anzeige
Anzeige