Nightspider
2011-12-04, 23:45:18
Aktuelle Frage siehe Post # 6
Hallo ich lerne gerade im Studium das Programmieren mit Visual Studio.
Die Aufgabenstellung lautet:
Das Programm soll folgenden Ablauf realisieren:
1. Anzeige einer Liste aller verfügbaren Artikel mit Preisangabe und Menünummer
2. Nutzereingabe einer Artikelauswahl
3. Nutzereingabe der Anzahl des gewünschten Artikels
4. In Abhängigkeit von Artikel und Anzahl den Zwischenpreis anzeigen
5. Nutzereingabe (j/n) für einen eventuellen weiteren Wunsch
6. Wenn weiterer Wunsch, dann zu Schritt 1 gehen, ansonsten weiter mit 7.
7. Zu zahlenden Gesamtbetrag ausgeben
8. Nutzereingabe des gezahlten Betrages
9. Eventuell Restgeld ausgeben
10. Verabschieden und beenden des Programmes
Und dazu habe ich folgenden Programmcode geschrieben:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define ESC 27
int Auswahl(0),Anzahl(0);
float Eins(1.20),Zwei(1.00),Drei(1.20),Vier(0.80),Fünf(2.50),Sechs(2.50),Sieben(3.00);
int scanf_return;
float Zwischensumme(0),Summe(0),Eingezahlt(0),Restgeld(0);
int summe(int x, int y);
int differenz(int x, int y);
float produkt(int x, int y);
float quotient(float x, float y);
int main(void)
{
char Nochetwas;
char n(110); // weist der Variable 'n' die Zahl 110 zu (ASCI CODE)
char j(106); // weist der Variable 'j' die Zahl 106 zu (ASCI CODE)
char programm_ende = 0;
do
{
do
{
printf ("Cafeteria-Automat\n"); //Anzeige der Auswahlmöglichkeiten
printf ("Waehlen Sie eines der folgenden Produkte:\n");
printf ("------------------\n");
printf ("1 - Kaffee \t\t\t\t1,20Euro\n");
printf ("2 - Tee \t\t\t\t1,00Euro\n");
printf ("3 - Kakaeo \t\t\t\t1,20Euro\n");
printf ("4 - Wasser \t\t\t\t0,80Euro\n");
printf ("5 - Sandwich Salami \t\t\t2,50Euro\n");
printf ("6 - Sandwich Schinken \t\t\t2,50Euro\n");
printf ("7 - Sandwich Deluxe \t\t\t3,00Euro\n\n");
do
{
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%i", &Auswahl); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
}while (scanf_return == 0 || Auswahl>7 || Auswahl<1); //Bedingungen zum Fehler auffangen
printf("Auswahl:");
switch (Auswahl) //Auswahl zur Angabe des ausgewählten Artikels
{
case 1:
{
printf("Kaffee\n");
break;
}
case 2:
{
printf("Tee\n");
break;
}
case 3:
{
printf("Kakao\n");
break;
}
case 4:
{
printf("Wasser\n");
break;
}
case 5:
{
printf("Sandwich Salami\n");
break;
}
case 6:
{
printf("Sandwich Schinken\n");
break;
}
case 7:
{
printf("Sandwich Deluxe\n");
}
}
printf ("Waehlen sie die Anzahl aus!\n\n");
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%i", &Anzahl); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
printf ("Anzahl: %i \n\n",Anzahl); //Einlesen der Anzahl
switch (Auswahl) // Berechnung der Zwischensumme mit Anzahl der Auswahl
{
case 1:
{
Zwischensumme=Eins*Anzahl;
break;
}
case 2:
{
Zwischensumme=Zwei*Anzahl;
break;
}
case 3:
{
Zwischensumme=Drei*Anzahl;
break;
}
case 4:
{
Zwischensumme=Vier*Anzahl;
break;
}
case 5:
{
Zwischensumme=Fünf*Anzahl;
break;
}
case 6:
{
Zwischensumme=Sechs*Anzahl;;
break;
}
case 7:
{
Zwischensumme=Sieben*Anzahl;
}
}
printf ("Zwischensumme: %.2f Euro\n\n",Zwischensumme); // Ausgabe der Zwischensumme
Summe=Summe+Zwischensumme; // Berechnung der Summe
printf ("Die gesamte Summe betraegt: %.2f Euro\n\n",Summe); // Ausgabe der Gesamtumme
printf ("Moechten Sie noch etwas kaufen? j=ja, n=nein\n");
do
{
Nochetwas = getch();
}while ((Nochetwas != n) && (Nochetwas != j)); //Bedingungen für ja/nein Eingabe
}while (Nochetwas != n); //Bedingung für weitere Auswahl
printf ("Die zu zahlende Summe beträgt %.2f Euro\n\n",Summe);
printf ("Bitte geben Sie die Hoehe des eingezahlten Geldes ein!\n\n");
do
{
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%f", &Eingezahlt); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
}while ((scanf_return == 0) || (Eingezahlt < Summe));
Restgeld=Eingezahlt-Summe; // Berechnung des Restgeldes
printf ("Ihr Restgeld betraegt %.2f Euro\n\n",Restgeld); // Ausgabe des Restgeldes
printf ("Vielen Dank, das Sie mich benutzt haben. \n\n\n");
printf("Programm beenden mit 'ESC', zum Fortsetzen beliebige andere Taste \n\n\n");
programm_ende = getch();
system("cls");
}while (programm_ende != ESC); // Beendigung des Programmes mit ESC
return 0;
}
Und ich bekomme immer diese Warnungen:
http://www.abload.de/img/fehler5zv6p.jpg
Bis auf die Berechnung der Zwischensumme (Auswahl*Anzahl) scheint alles zu funktionieren.
Aber irgendwie finde ich den Fehler nicht bzw. weiß noch nicht, was das Problem ist. :(
Würde mich freuen, wenn mir jemand helfen kann.
Edit: Argh, jetzt hab ich auf einen Schlag gesehen, das ich bei der 2. Switch Anweisung in der Klammer Anzahl, statt Auswahl stehen hatte.
Warnungen kommen aber dennoch.
Hallo ich lerne gerade im Studium das Programmieren mit Visual Studio.
Die Aufgabenstellung lautet:
Das Programm soll folgenden Ablauf realisieren:
1. Anzeige einer Liste aller verfügbaren Artikel mit Preisangabe und Menünummer
2. Nutzereingabe einer Artikelauswahl
3. Nutzereingabe der Anzahl des gewünschten Artikels
4. In Abhängigkeit von Artikel und Anzahl den Zwischenpreis anzeigen
5. Nutzereingabe (j/n) für einen eventuellen weiteren Wunsch
6. Wenn weiterer Wunsch, dann zu Schritt 1 gehen, ansonsten weiter mit 7.
7. Zu zahlenden Gesamtbetrag ausgeben
8. Nutzereingabe des gezahlten Betrages
9. Eventuell Restgeld ausgeben
10. Verabschieden und beenden des Programmes
Und dazu habe ich folgenden Programmcode geschrieben:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define ESC 27
int Auswahl(0),Anzahl(0);
float Eins(1.20),Zwei(1.00),Drei(1.20),Vier(0.80),Fünf(2.50),Sechs(2.50),Sieben(3.00);
int scanf_return;
float Zwischensumme(0),Summe(0),Eingezahlt(0),Restgeld(0);
int summe(int x, int y);
int differenz(int x, int y);
float produkt(int x, int y);
float quotient(float x, float y);
int main(void)
{
char Nochetwas;
char n(110); // weist der Variable 'n' die Zahl 110 zu (ASCI CODE)
char j(106); // weist der Variable 'j' die Zahl 106 zu (ASCI CODE)
char programm_ende = 0;
do
{
do
{
printf ("Cafeteria-Automat\n"); //Anzeige der Auswahlmöglichkeiten
printf ("Waehlen Sie eines der folgenden Produkte:\n");
printf ("------------------\n");
printf ("1 - Kaffee \t\t\t\t1,20Euro\n");
printf ("2 - Tee \t\t\t\t1,00Euro\n");
printf ("3 - Kakaeo \t\t\t\t1,20Euro\n");
printf ("4 - Wasser \t\t\t\t0,80Euro\n");
printf ("5 - Sandwich Salami \t\t\t2,50Euro\n");
printf ("6 - Sandwich Schinken \t\t\t2,50Euro\n");
printf ("7 - Sandwich Deluxe \t\t\t3,00Euro\n\n");
do
{
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%i", &Auswahl); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
}while (scanf_return == 0 || Auswahl>7 || Auswahl<1); //Bedingungen zum Fehler auffangen
printf("Auswahl:");
switch (Auswahl) //Auswahl zur Angabe des ausgewählten Artikels
{
case 1:
{
printf("Kaffee\n");
break;
}
case 2:
{
printf("Tee\n");
break;
}
case 3:
{
printf("Kakao\n");
break;
}
case 4:
{
printf("Wasser\n");
break;
}
case 5:
{
printf("Sandwich Salami\n");
break;
}
case 6:
{
printf("Sandwich Schinken\n");
break;
}
case 7:
{
printf("Sandwich Deluxe\n");
}
}
printf ("Waehlen sie die Anzahl aus!\n\n");
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%i", &Anzahl); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
printf ("Anzahl: %i \n\n",Anzahl); //Einlesen der Anzahl
switch (Auswahl) // Berechnung der Zwischensumme mit Anzahl der Auswahl
{
case 1:
{
Zwischensumme=Eins*Anzahl;
break;
}
case 2:
{
Zwischensumme=Zwei*Anzahl;
break;
}
case 3:
{
Zwischensumme=Drei*Anzahl;
break;
}
case 4:
{
Zwischensumme=Vier*Anzahl;
break;
}
case 5:
{
Zwischensumme=Fünf*Anzahl;
break;
}
case 6:
{
Zwischensumme=Sechs*Anzahl;;
break;
}
case 7:
{
Zwischensumme=Sieben*Anzahl;
}
}
printf ("Zwischensumme: %.2f Euro\n\n",Zwischensumme); // Ausgabe der Zwischensumme
Summe=Summe+Zwischensumme; // Berechnung der Summe
printf ("Die gesamte Summe betraegt: %.2f Euro\n\n",Summe); // Ausgabe der Gesamtumme
printf ("Moechten Sie noch etwas kaufen? j=ja, n=nein\n");
do
{
Nochetwas = getch();
}while ((Nochetwas != n) && (Nochetwas != j)); //Bedingungen für ja/nein Eingabe
}while (Nochetwas != n); //Bedingung für weitere Auswahl
printf ("Die zu zahlende Summe beträgt %.2f Euro\n\n",Summe);
printf ("Bitte geben Sie die Hoehe des eingezahlten Geldes ein!\n\n");
do
{
fflush(stdin); // loeschen Tastaturpuffer//
scanf_return = scanf_s("%f", &Eingezahlt); // Erste Zahl einlesen //
if(scanf_return == 0)
{
printf("Das war keine gueltige Eingabe!\n");
}
}while ((scanf_return == 0) || (Eingezahlt < Summe));
Restgeld=Eingezahlt-Summe; // Berechnung des Restgeldes
printf ("Ihr Restgeld betraegt %.2f Euro\n\n",Restgeld); // Ausgabe des Restgeldes
printf ("Vielen Dank, das Sie mich benutzt haben. \n\n\n");
printf("Programm beenden mit 'ESC', zum Fortsetzen beliebige andere Taste \n\n\n");
programm_ende = getch();
system("cls");
}while (programm_ende != ESC); // Beendigung des Programmes mit ESC
return 0;
}
Und ich bekomme immer diese Warnungen:
http://www.abload.de/img/fehler5zv6p.jpg
Bis auf die Berechnung der Zwischensumme (Auswahl*Anzahl) scheint alles zu funktionieren.
Aber irgendwie finde ich den Fehler nicht bzw. weiß noch nicht, was das Problem ist. :(
Würde mich freuen, wenn mir jemand helfen kann.
Edit: Argh, jetzt hab ich auf einen Schlag gesehen, das ich bei der 2. Switch Anweisung in der Klammer Anzahl, statt Auswahl stehen hatte.
Warnungen kommen aber dennoch.