[C] Problem bei Umsetzung

thehasso

Erfahrenes Mitglied
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.
Code:
#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);
i=i+1;
}
Wobei beim ersten durchlauf 1 gedrückt werden muss.



gruß
 
Leg dir doch dafür ne Variable an.
Die hat vor Programmstart den Wert = 1, wenn das Programm
jetzt startet wird sie um eins erhöht. Wenn die Variable dann = 2 ist,
werden die anderen Menüpunkte angezeigt.
 
Leg dir doch dafür ne Variable an.
Die hat vor Programmstart den Wert = 1, wenn das Programm
jetzt startet wird sie um eins erhöht. Wenn die Variable dann = 2 ist,
werden die anderen Menüpunkte angezeigt.

Es beim 2 Durchlauf ds Programm nicht mehr nötig sein erst die taste 1 zu drücken. Weil sich schon Umsätze im Programm befinden..

Bei der Umsetzung happerts noch... kannst du mal anschub gegeben?



gruß
 
Hab dies schnell mal zusammengestellt, ich hoffe du kannst damit
was anfangen oder das es bissel deinen Wünschen entspricht:

C++:
#include <stdio.h>

char first_use = 1;

int get_modus() {

   if( first_use ) { first_use = 0; return 0; } //muss noch umseatze eingeben

   int m = 0;
   
   while(1)
      {
      	printf("Menue 1: Ausgabe Umsaetze\nMenue 2: Mittelwert\nMenue 3: Standardarabweichung\nMenue 4: Min/Max\nMenue 5: Beenden\nAuswahl: ");
                 
      	fflush(stdin);
      	scanf("%i", &m);
      	
             if( m<=0 || m>5 ) // nicht innerhalb des auswahlbaren bereich
                {
                   printf("\nUngueltige Eingabe!\n\n");
                }
                else
                {
                  printf("\n");
                  return m;
                }
             
      }
}

int main(void) {

	printf("|======================================================================|\n");
	printf("|=                    < Programmname here >                           =|\n");
	printf("|=                            by me                                   =|\n");
	printf("|======================================================================|\n\n");

   while(1) 
      {
         switch( get_modus() )
            {
               case 0:
                  printf("[Bitte Umsaetze eingeben!]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n");
                  fflush(stdin); getc(stdin);
                  printf("Danke fuer den Input!\n\n");
                  // <Funktionsaufruf für diesen Fall!>
                  break;

               case 1: 
                  printf("[Ausgabe Umsaetze]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n\n");
                  // <Funktionsaufruf für diesen Fall!>
                  break;

               case 2: 
                  printf("[Mittelwert]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n\n");
                  // <Funktionsaufruf für diesen Fall!>
                  break;

               case 3:
                  printf("[Standardabweichung]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n\n");
                  // <Funktionsaufruf für diesen Fall!>
                  break;

               case 4:
                  printf("[Min/Max]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n\n");
                  // <Funktionsaufruf für diesen Fall!>
                  break;
                  
               case 5:
                  // <Funktionsaufruf zum saubermachen des Programms dann beenden!>
                  printf("\[Programm Ende!]");
                  return 0;
            }
      }

   return 0;
}

Einfach mal kompilieren und ausprobieren :) Have fun noch.
 
Zuletzt bearbeitet von einem Moderator:
Hi Van,

Ich habs anders gelöst.. mit mein Struktogramm ..


hast du vielleicht msn oder skype? und drüber schauen obs richtig ist?



gruß


p.s Beim complimieren sind einige Fehler aufgetaucht.
 
p.s Beim complimieren sind einige Fehler aufgetaucht.

Echt komisch, weil ich mir sicher bin das da keine Fehler sein dürften,
habs sogar selber erfolgreich kompiliert. Was für Meldungen gibt der
Compiler bei dir aus?

PS.:

"complimieren", heißt eigentlich "compile" [englisch] oder "kompilieren" [deutsch]
Immer schön auf die Netiquette achten :)
 
Der Compiler zeigt an das m nicht deklariert wär.


Ich habs so..klappt nicht so ganz.. warum?
Code:
#include <stdio.h> 

void main(void) 
{ 

int i; 
int beenden; 
int eingabe; 
int first_use=1;

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?"); 

if (first_use = 1){


do 
{ 
scanf("%i",&eingabe);
first_use= first_use +1;
} 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); 
}


gruß
 
Zurück