Ja / Nein.. auswahl wie geht das? wo liegt mein Fehler?



  • Also ich bin ein blutiger neuling (also wenn ihr mir noch gute tuts geben könnt her damit (hab bisher hauptsächlihc http://www.tutorials.at/ gemacht)

    Aber zu meiner Frage...

    ICh wolte mich mal an einer Bildlichen auswahl versuchen [zwischen ja und nein]

    aber mein code hat irgendwie fehler [vieleicht ist die idee ganz falsch]

    sagt einfach mal was dazu bitte

    #include <stdio.h>
    #include <conio.h>
    
    int d = 0;
    
    int zeigen()
    {
    
    if (d == 0)
    	{
    	printf("<JA>\t NEIN");
    	}
    else if (d == 1)
    	{
    	printf(" JA \t<NEIN>");
    
    	}
    }
    
    int waehlen()
    {
    char press();
    
    press = getch();
    
    if ((press == 75) || (press == 77) )
    	{
    	if (d == 1)
    		{
    		d=0
    		}
    	else
    		{
    		d=1
    		}
    printf ("\r");
    return zeigen();
    }
    
    int main()
    {
    printf ("bitte wählen sie, und bestätigen sie mit Enter:\n");
    printf ("\n");
    return zeigen();
    }
    
    

    Danke schon mal



  • tutorial:
    - http://www.pronix.de/pronix-4.html

    befehlsreferenzen und man page repository:
    - http://www-ccs.ucsd.edu/c/
    - http://www.dinkumware.com/manuals/reader.aspx?lib=c99
    - http://www.cppreference.com/index.html
    - http://man.linuxquestions.org/

    code, den ich schreiben wuerde:

    #include <stdio.h>
    #include <conio.h>
    
    int auswahl(void);
    
    int main(void)
    {
        unsigned wahl;
    
        /* puts macht von selber nochmal ein ein \n dran, also kommt \n\n raus */
        puts("bitte wählen sie, und bestätigen sie mit Enter:\n");
    
    	wahl = auswahl();
        printf("Sie haben \"%s\" gewaehlt", (wahl ? "JA" : "NEIN")); /* trinaeroperator, eine wundervolle sache */
    
        return 0;
    }
    
    int auswahl(void)
    {
    	unsigned wahl = 0, key;
        while (1) /* endlosschleife */
        {
        	/* ausgabe */
    		if (wahl)
    			printf("<JA>\t NEIN \r");
    		else
    			printf(" JA \t<NEIN>\r");
    
            key = getch();
            if (key == 13 || key == 10) break; /* enter -> verlassen und return */
            if (key != 224) continue; /* pfeiltasten werden mit ascii 224 eingeleitet */
            key = getch(); /* eigentliche pfeiltaste lesen */
            wahl += (key == 77) - (key == 75); /* 77 -> +1, 75 -> -1, sonst 0 */
            wahl %= 2; /* % ist modulo, z.b. 9 % 4 = 1 (der rest bei division) */
        }
    	return wahl;
    }
    

    code ungetestet.
    uebrigens ist <conio.h> kein ansi c, sondern win32/dos konsolenprogrammierung und borlandspezifisch (vom compiler abhaengig).

    konzeptionell war an deinem code falsch, dass du grundlos in funktionen eingeteilt hast. die auswahl ja/nein laesst sich nicht in zwei funktionen teilen. main() sollte null zurueckgeben und nichts anderes.

    wenn du programmieren mit "goto" gewohnt bist, wirst du dich an prozedurale programmierung gewoehnen muessen.



  • Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hab das bei mir so gemacht:

    while(u=getch())
    {
    	if(u==0x50)		// Pfeiltaste UNTEN
    
    	else if(u==0x48)	// Pfeiltaste OBEN
    

    ging irgendwie nur mit HEX und nicht mit INT (war immer 224)...kann man das so lassen?



  • aahhhhh *erleuchtung*

    Heisst das getch() gibt 0 bzw. 224 zurück und lässt das Übrige im stdin-buffer?!


Anmelden zum Antworten