- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Gesuchter Befehl [gelöst]

  1. #1

    Gesuchter Befehl [gelöst]

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich geh auf eine Schule für Informationstechnische Asistenten, und da lernen wir dann auch Progen und wir fangen mit C an.
    Nun haben wir halt angefangen und auch schon unsere Programme geschrieben, aber mir fehlt ein kleiner Befehl den ich nicht finde.
    Und zwar wenn ich mir ein Menü bastel so wie hier:

    clrscr();
    printf("\t\t\t\t##################\n");
    printf("\t\t\t\t#Rechenprogramm #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Menü #\n");
    printf("\t\t\t\t#1.Addition #\n");
    printf("\t\t\t\t#2.Subtraktion #\n");
    printf("\t\t\t\t#3.Multiplikation #\n");
    printf("\t\t\t\t#4.Division #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#0.Beenden #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Ihre Wahl: #\n");
    printf("\t\t\t\t##################\n");
    scanf("%i", &wahl);
    und wenn ich dann auf 0-4 drücke, dann möchte ich gerne sofort in das Programm starten kann, also nicht das ich das mit der Eingabe-Taste bestätigen muss.

    Wäre nett wenn mir jemand helfen könnte wäre ich ihm sehr dankbar.
    Und schon mal danke Im Voraus....

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2006
    Beiträge
    15
    Hallo,

    Ich glaube die meisten hier schreiben ihre C Programme für den Mikroprozessor (ich auch), und benutzen deswegen verschiedene "Include"-Datein (Head-Dateien oder so.)

    Aber da, wie es scheint, du grundsätzliche Befehle suchst kann ich dir sogar weiterhelfen.

    Du könntest es über eine if-Bedingung lösen:
    also:
    Code:
    if (wahl == 1)
    {
      //Addition
    }
    else if (wahl == 2)
    {
      //Subtraktion
    }
    Oder du könntest es mit der switch-Anweisung machen (empfiehlt sich wenn du mehrere Ergebnisse abgleichen musst)

    lies dir am besten das Tutorial durch:
    https://www.roboternetz.de/wissen/index.php/C-Tutorial

    MFG
    Maximus

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.11.2004
    Ort
    München
    Alter
    37
    Beiträge
    447
    Hallo,
    @Maximus: Ich glaube du hast sein Problem nicht ganz verstanden.
    Ihm gefällt es nicht, dass man bei scanf ein return eingeben muss, und er will wissen wie das ohne return geht.

    @KaffeeSahne: Soweit ich weiß, gibt es dein Problem nicht im C-Standard. Das bedeutet natürlich nicht, dass dein Problem nicht lösbar ist - es bedeutet nur, dass es vom Compiler/Betriebsystem und sonst was alles abhägt.
    Unter Windows sollte dir da kbhit() aus der Datei conio.h weiterhelfen.

    MfG Alex

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Das ist Abhängig von der Plattform etc.

    google mal nach kbhit, getch, conio.h
    Disclaimer: none. Sue me.

  5. #5
    Erst einmal danke für die schnellen Antworten, aber ich verstehen es nicht ganz deswegen werde ich nun einmal den kompletten Quelltext posten.

    #include <stdio.h>
    main(){
    int zahl1, zahl2, wahl, summe;

    clrscr();
    printf("\t\t\t\t##################\n");
    printf("\t\t\t\t#Rechenprogramm #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Men #\n");
    printf("\t\t\t\t#1.Addition #\n");
    printf("\t\t\t\t#2.Subtraktion #\n");
    printf("\t\t\t\t#3.Multiplikation#\n");
    printf("\t\t\t\t#4.Division #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#0.Beenden #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Ihre Wahl: #\n");
    printf("\t\t\t\t##################\n");
    scanf("%i", &wahl);

    if(wahl==1){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Addition entschieden\n\n\a");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1+zahl2;
    printf("Das Ergebniss lautet: %i + %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==2){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Subtraktion entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1-zahl2;
    printf("Das Ergebniss lautet: %i - %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==3){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Multiplikation entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1*zahl2;
    printf("Das Ergebniss lautet: %i * %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==4){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Division entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    if(zahl2<=0){
    printf("Sie drfen nicht durch 0 teilen\a");
    }
    else{
    summe=zahl1/zahl2;
    printf("Das Ergebniss lautet: %i / %i = %i ",zahl1, zahl2, summe);
    getch();
    }
    }

    else if(wahl==0){
    clrscr();
    printf("\t\t\tHier endet das Programm.\n");
    printf("\t\t\tAuf wiedersehen.");
    }

    while (wahl>=5){
    clrscr();
    printf("Sie haben falsch gewählt");
    printf("\t\t\t\t##################\n");
    printf("\t\t\t\t#Rechenprogramm #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Men #\n");
    printf("\t\t\t\t#1.Addition #\n");
    printf("\t\t\t\t#2.Subtraktion #\n");
    printf("\t\t\t\t#3.Multiplikation#\n");
    printf("\t\t\t\t#4.Division #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#0.Beenden #\n");
    printf("\t\t\t\t# #\n");
    printf("\t\t\t\t#Ihre Wahl: #\n");
    printf("\t\t\t\t##################\n");
    scanf("%i", &wahl);

    if(wahl==1){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Addition entschieden\n\n\a");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1+zahl2;
    printf("Das Ergebniss lautet: %i + %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==2){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Subtraktion entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1-zahl2;
    printf("Das Ergebniss lautet: %i - %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==3){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Multiplikation entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    summe=zahl1*zahl2;
    printf("Das Ergebniss lautet: %i * %i = %i ",zahl1, zahl2, summe);
    getch();
    }

    else if(wahl==4){
    clrscr();
    printf("Sie haben sich fr die Rechenmethode Division entschieden\n\n");
    printf("Bitte geben sie die erste Zahl an ");
    scanf("%i", &zahl1);
    printf("Bitte geben sie die zweite Zahl an ");
    scanf("%i", &zahl2);
    if(zahl2<=0){
    printf("Sie drfen nicht durch 0 teilen\a");
    }
    else{
    summe=zahl1/zahl2;
    printf("Das Ergebniss lautet: %i / %i = %i ",zahl1, zahl2, summe);
    getch();
    }
    }

    else if(wahl==0){
    clrscr();
    printf("\t\t\tHier endet das Programm.\n");
    printf("\t\t\tAuf wiedersehen.");
    }
    }
    getch();
    }

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Ganz einfach:

    statt scanf irgendeine Funktion nehmen, die Sprinter gepostet hat
    Code:
    char c = ' ';
    do
    {
       c = getc();
    } while (c < '1' || c>'5')
    int selection = atoi(c);
    Da ich das genaue Verhalten von getc & Co nicht im Kopf habe, solltest Du vorher noch einen Blick in die Beschreibung werfen.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    lol, lustiger code..
    das geht aber eleganter, try this:
    Code:
    #include <stdio.h> 
    #include <conio.h> 
    
    int menu(void)
    {
    clrscr(); 
    printf("\t\t\t\t##################\n"); 
    printf("\t\t\t\t#Rechenprogramm #\n"); 
    printf("\t\t\t\t# #\n"); 
    printf("\t\t\t\t# #\n"); 
    printf("\t\t\t\t#Men? #\n"); 
    printf("\t\t\t\t#1.Addition #\n"); 
    printf("\t\t\t\t#2.Subtraktion #\n"); 
    printf("\t\t\t\t#3.Multiplikation#\n"); 
    printf("\t\t\t\t#4.Division #\n"); 
    printf("\t\t\t\t# #\n"); 
    printf("\t\t\t\t#0.Beenden #\n"); 
    printf("\t\t\t\t# #\n"); 
    printf("\t\t\t\t#Ihre Wahl: #\n"); 
    printf("\t\t\t\t##################\n");
    
    return getch(); // <----- hier was du wolltest, liefert den ascii code des zeichens
    
    }
    
    int main(void){ 
    int zahl1, zahl2, wahl, summe; 
    
    for(;;) // endlos-schleife
    {
    
    clrscr(); 
    wahl=menu();
    
    if(wahl=='1'){ 
    clrscr(); 
    printf("Sie haben sich f?r die Rechenmethode Addition entschieden\n\n\a"); 
    printf("Bitte geben sie die erste Zahl an "); 
    scanf("%i", &zahl1); 
    printf("Bitte geben sie die zweite Zahl an "); 
    scanf("%i", &zahl2); 
    summe=zahl1+zahl2; 
    printf("Das Ergebniss lautet: %i + %i = %i ",zahl1, zahl2, summe); 
    getch(); 
    } 
    
    else if(wahl=='2'){ 
    clrscr(); 
    printf("Sie haben sich f?r die Rechenmethode Subtraktion entschieden\n\n"); 
    printf("Bitte geben sie die erste Zahl an "); 
    scanf("%i", &zahl1); 
    printf("Bitte geben sie die zweite Zahl an "); 
    scanf("%i", &zahl2); 
    summe=zahl1-zahl2; 
    printf("Das Ergebniss lautet: %i - %i = %i ",zahl1, zahl2, summe); 
    getch(); 
    } 
    
    else if(wahl=='3'){ 
    clrscr(); 
    printf("Sie haben sich f?r die Rechenmethode Multiplikation entschieden\n\n"); 
    printf("Bitte geben sie die erste Zahl an "); 
    scanf("%i", &zahl1); 
    printf("Bitte geben sie die zweite Zahl an "); 
    scanf("%i", &zahl2); 
    summe=zahl1*zahl2; 
    printf("Das Ergebniss lautet: %i * %i = %i ",zahl1, zahl2, summe); 
    getch(); 
    } 
    
    else if(wahl=='4'){ 
    clrscr(); 
    printf("Sie haben sich f?r die Rechenmethode Division entschieden\n\n"); 
    printf("Bitte geben sie die erste Zahl an "); 
    scanf("%i", &zahl1); 
    printf("Bitte geben sie die zweite Zahl an "); 
    scanf("%i", &zahl2); 
    if(zahl2<=0){ 
    printf("Sie d?rfen nicht durch 0 teilen\a"); 
    } 
    else{ 
    summe=zahl1/zahl2; 
    printf("Das Ergebniss lautet: %i / %i = %i ",zahl1, zahl2, summe); 
    getch(); 
    } 
    } 
    
    else if(wahl=='0'){ 
    clrscr(); 
    printf("\t\t\tHier endet das Programm.\n"); 
    printf("\t\t\tAuf wiedersehen."); 
    getch();
    break;
    }
    
    } // end for
    return 0;
    }
    die for-schleife läuft bis zum break, wenn ascii '0' getippt wird.

    vielleicht für zahl1, zahl2, summe float/double nehmen? dann gehen kommazahlen, musst nur im scanf/printf %i in %f (float) bzw. %lf (=longfloat, double) ändern. ausserdem geht 1/-1 nicht, weil du alles <=0 abwürgst. also da ein ==0 hin.

    gib auch mal statt einer zahl einen buchstaben ein.. wirst sehen, dass du fehleingaben noch nicht abfängst. aber ich wills etz nicht übertreiben an perfektion.. ^^

    noch was am rande:
    ist euch schon aufgefallen, was für eine kunst es ist, hier geposteten code zu copypasten, wenn er länger als eine seite ist? keiner meiner browser kann das. evtl wäre da eine "alles-markieren" funktion ganz nett..

    gruesse von der katze

  8. #8
    Jau danke, nu klappt es genau so wie ich das gern hab.
    Seid echt klasse und ziehmlich schnell^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress