eingabe
-
Hallo,
Hab ein frage die etwas schwiriger zu beantworten ist .. denk ich mal!!
und zwar:
Es stehen jemand 5 Menü Punkte zu verfügung.
1. Umsätze einlesen.
2. Umsätze Ausgabe
3. Mittelwerausgabe
...Zu beginn des Programm soll den Benutzer gefragt werden Welches Menü Punkt er öffnen möchte.
Wenn 2,3,4,5 gedrückt wird und keine Umsätze zu verfügung stehen muss der Vorgang wiederholt werden bis der Benutzer 1 eingibt.
Das hab ich Soweit geschaft.
Jetzt den Gedanke den ich hab um den umzusetzen ist etwas schwer.
Und zwar hab ich mit gedacht wenn Menü 1 gedrückt wird soll beim 2 Durchlauf des Programms i = ++ = 2 sein
Und wenn i > 1 ist soll es den Benutzer gestattet sein auch eingabe 2 , 3, 4, 5
zu taetigen.Wobei beim ersten durchlauf 1 gedrückt werden muss.
#include <stdio.h> void main(void) { int i; int beenden; int eingabe; do { printf("Menue 1 Umsaetze\n" "Menue 2 Ausgabe Umsaetze\n" "Menue 3 Mittelwert\n" "Menue 4 Standardarabweichung\n" "Menue 5 Min/Max\n"); printf("Welchen Menue Punkt open?"); do { scanf("%i",&eingabe); } while(eingabe !=1); switch(eingabe) { case 1: printf("Umsätze Bitte eingeben!\n"); case 2: printf("Asugabe Umsaetze\n"); case 3: printf("Mittelwert\n"); case 4: printf("Standardabweichung\n"); case 5: printf("Min/Max\n"); } printf("Programm Beenden! (1/0)?"); scanf("%i",&beenden); }while(beenden==1); }
soo..
jetzt ist mal die intiligenz gefragt!
gruß hasso
-
Ich verstehe zwar nicht ganz, was du meinst (soll nach 1 automatisch 2 ausgeführt werden oder was? Wäre ja simpel...), aber viel besser wäre es doch, wenn der Benutzer nur sinnvolle Auswahlmöglichkeiten sieht. Wenn also für 2 die Voraussetzung (1) noch nicht erfüllt ist, dann wird 2 auch noch nicht angezeigt und ist nicht anwählbar.
P.S.: Rücke den Code doch bitte richtig ein.
-
merk dir da, wo die umsätze gespeichert sind (speicher, datenbank, file. etc), ob sie gültig sind oder überhaupt existieren. wenn ja, dann erlaube die menüpunkte 2,3,4,5.
-
Ich glaube, ich weiß was du willst. Dein Programm erlaubt momentan NUR die Eingabe 1 (while eingabe!=1). Es ist nicht möglich, die anderen Punkte irgendwie aufzurufen. Wenn du willst, dass danach erstmal NUR 2 erlaubt ist (usw.), dann mache aus der Konstante eine Variable (while eingabe!=iAllowed), die du im jeweiligen Case-Zweig (also z.B. wenn 1 gedrückt wurde) erhöhen kannst.
Ist das, was du willst? Wäre aber natürlich sehr user-unfreundlich, und sollte höchstens gaaanz kurz zum Test eingebaut und am besten direkt wieder gelöscht werden... Besser ist mein voriger Vorschlag.
-
Hallo,
Ich hab mir das so vorgestellt..
Bei Programmstart wird eine Variable angelegt die den Wert = 1 hat, wenn das Programm jetzt startet bei einer eingabe 1 = Umsätze werden eingelesen. Dann wird die Variable 1 um eins erhöht. Wenn die Variable dann = 2 ist, Wird dem Benutzer erlaubt die anderen Menüpunkt beim wiederholen des Programms auch anzeigen zu lassen ohne um erst das Menü 1 zu drücken. Weil Werte schon zu verfügen stehen , die angezeigt werden sollen.
Meint ihr klingt das logisch .. ist es umsetzbar?
Lg
-
heyyy leute
habs das programm zuende auf einen Struktogramm gemacht.
Jetzt müsste maal jemand drüber schauen.
Hat jemand msn oder skype ??gruß hasso
-
Solche Menuführungen wurden hier im Forum doch schon einige Male
gepostet.Hier mal ein grober Rahmen für dein Problem.
#include <stdio.h> static int menu(int umsaetze_ok) { int eingabe = 0; if (umsaetze_ok == 0) { printf("Menue 1 Umsaetze eingaben\n"); printf("Menue 2 Ausgabe Umsaetze (noch nicht moeglich)\n"); printf("Menue 3 Mittelwert (noch nicht moeglich)\n"); printf("Menue 4 Standardabweichung (noch nicht moeglich)\n"); printf("Menue 5 Min/Max (noch nicht moeglich)\n"); } else { printf("Menue 1 Umsaetze eingaben\n"); printf("Menue 2 Ausgabe Umsaetze \n"); printf("Menue 3 Mittelwert \n"); printf("Menue 4 Standardabweichung \n"); printf("Menue 5 Min/Max \n"); } while (1) { printf("Eingabe: "); scanf("%d", &eingabe); getchar(); if ( (!umsaetze_ok && eingabe != 1) || (eingabe<1) || (eingabe>5)) { printf("(E) falsche Eingabe\n"); } else { break; } } return eingabe; } int main(void) { int eingabe, umsaetze_ok = 0; int beenden = 0; do { eingabe = menu(umsaetze_ok); /* hier weiter ... */ umsaetze_ok = 1; printf("Programm Beenden! (1/0)? "); scanf("%i",&beenden); getchar(); }while(beenden==0); return 0; }
Die getchar()'s müssten noch durch eine entsprechende Funktion
ersetzt werden, die alle im Tastaturpuffer befindlichen Zeichenn löscht.Gruß mcr
PS: Sind das irgendwelche Hausaufgaben?
-
Was ist denn jetzt aus deinem Programm geworden, wie sieht die Endversion aus? Ein Feedback ist immer nett. Und was hat der Lehrer gesagt?