Hi,
ich habe folgendes Programm geschrieben. Beim ersten Durchlauf funktioniert alles. Doch mein Problem ist, dass ich am Ende des 1. Durchlaufes fragen will, ob das Programm beendet werden soll.
----------
printf("Um Programm zu beenden druecken Sie e, falls nicht irgend eine beliebige Taste\n");
scanf("%c", &Ende);
------------
Doch ich kann beim simulieren garkeine Auswahl treffen. Das Programm springt automatisch wieder zum Anfang.
Zudem kann ich dann auch nicht mehr auswählen, was ich berechnen will (Geschwindigkeit, Weg oder Zeit).
Könnte mir jemand weiterhelfen?
-----------------------------------------------------------
#include<stdio.h>
int main() {
char Ende='a';
while (Ende!='e') {
int a, ok;
char enter;
printf("Was moechten sie berechnen?\n1...Weg\n2...Geschwindigkeit\n3...Zeit\n");
ok=scanf("%d%c", &a, &enter);
//Test richtige Eingabe
if(ok==2 && enter=='\n' && (a==1||a==2||a==3)) {
//Berechnung
float Weg, Gesch, Zeit;
switch (a) {
case 1:
printf("Sie haben die Berechnung von dem Weg gewaehlt.\n");
printf("Geschwindigkeit (km/h) -> ");
scanf("%f", &Gesch);
printf("Zeit (min) -> ");
scanf("%f", &Zeit);
Weg=Gesch*(Zeit/60);
printf("Bei einer Geschwindigkeit von %.2f km/h und einer Zeit von %.2f Minuten kommen sie %.2f km.\n\n", Gesch, Zeit, Weg);
break;
case 2:
printf("Sie haben die Berechnung von der Geschwindigkeit gewaehlt.\n");
printf("Weg (km) -> ");
scanf("%f", &Weg);
printf("Zeit (min) -> ");
scanf("%f", &Zeit);
if (Zeit==0) { printf("Fehler, Division durch 0 nicht moeglich!");
return 0; }
Gesch=Weg/(Zeit/60);
printf("Bei einem zurueckgelegten Weg von %.2f km und einer benoetigten Zeit von %.2f Minuten fuhren Sie im Durchschnitt %.2f km/h.\n\n", Weg, Zeit, Gesch);
break;
case 3:
printf("Sie haben die Berechnung von der Zeit gewaehlt.\n");
printf("Geschwindigkeit (km/h) -> ");
scanf("%f", &Gesch);
printf("Weg (km) -> ");
scanf("%f", &Weg);
if (Gesch==0) { printf("Fehler, Division durch 0 nicht moeglich!");
return 0; }
Zeit=60*Weg/Gesch;
printf("Bei einer Geschwindigkeit von %.2f km/h brauchen Sie fuer %.2f km %.2f Minuten.\n\n", Gesch, Weg, Zeit);
break;
}
}
else {
printf("Falsche Eingabe");
}
//Wiederholung
printf("Um Programm zu beenden druecken Sie e, falls nicht irgend eine beliebige Taste\n");
scanf("%c", &Ende);
}
return 0;
}
ich habe folgendes Programm geschrieben. Beim ersten Durchlauf funktioniert alles. Doch mein Problem ist, dass ich am Ende des 1. Durchlaufes fragen will, ob das Programm beendet werden soll.
----------
printf("Um Programm zu beenden druecken Sie e, falls nicht irgend eine beliebige Taste\n");
scanf("%c", &Ende);
------------
Doch ich kann beim simulieren garkeine Auswahl treffen. Das Programm springt automatisch wieder zum Anfang.
Zudem kann ich dann auch nicht mehr auswählen, was ich berechnen will (Geschwindigkeit, Weg oder Zeit).
Könnte mir jemand weiterhelfen?
-----------------------------------------------------------
#include<stdio.h>
int main() {
char Ende='a';
while (Ende!='e') {
int a, ok;
char enter;
printf("Was moechten sie berechnen?\n1...Weg\n2...Geschwindigkeit\n3...Zeit\n");
ok=scanf("%d%c", &a, &enter);
//Test richtige Eingabe
if(ok==2 && enter=='\n' && (a==1||a==2||a==3)) {
//Berechnung
float Weg, Gesch, Zeit;
switch (a) {
case 1:
printf("Sie haben die Berechnung von dem Weg gewaehlt.\n");
printf("Geschwindigkeit (km/h) -> ");
scanf("%f", &Gesch);
printf("Zeit (min) -> ");
scanf("%f", &Zeit);
Weg=Gesch*(Zeit/60);
printf("Bei einer Geschwindigkeit von %.2f km/h und einer Zeit von %.2f Minuten kommen sie %.2f km.\n\n", Gesch, Zeit, Weg);
break;
case 2:
printf("Sie haben die Berechnung von der Geschwindigkeit gewaehlt.\n");
printf("Weg (km) -> ");
scanf("%f", &Weg);
printf("Zeit (min) -> ");
scanf("%f", &Zeit);
if (Zeit==0) { printf("Fehler, Division durch 0 nicht moeglich!");
return 0; }
Gesch=Weg/(Zeit/60);
printf("Bei einem zurueckgelegten Weg von %.2f km und einer benoetigten Zeit von %.2f Minuten fuhren Sie im Durchschnitt %.2f km/h.\n\n", Weg, Zeit, Gesch);
break;
case 3:
printf("Sie haben die Berechnung von der Zeit gewaehlt.\n");
printf("Geschwindigkeit (km/h) -> ");
scanf("%f", &Gesch);
printf("Weg (km) -> ");
scanf("%f", &Weg);
if (Gesch==0) { printf("Fehler, Division durch 0 nicht moeglich!");
return 0; }
Zeit=60*Weg/Gesch;
printf("Bei einer Geschwindigkeit von %.2f km/h brauchen Sie fuer %.2f km %.2f Minuten.\n\n", Gesch, Weg, Zeit);
break;
}
}
else {
printf("Falsche Eingabe");
}
//Wiederholung
printf("Um Programm zu beenden druecken Sie e, falls nicht irgend eine beliebige Taste\n");
scanf("%c", &Ende);
}
return 0;
}