C :: Aufgabe #14
3 Lösungen

Zahlen erraten lassen.
Anfänger - C
von zayc_
- 28.12.2012 um 14:08 Uhr
Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) in einem vom User angegebenen Bereich Erraten soll.
Konsolenausgabe:
Bitte Untergränze angeben: 0
Bitte Obergränze angeben: 100
Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob
R die Zahl richtig ist
G die gesuchte Zahl grösser ist
K die gesuchte Zahl kleiner ist
1. Versuch: 50.
k
2. Versuch: 25
g
3. Versuch: 37
g
4. versuch: 42
g
5. Versuch: 46
k
6. Versuch: 44
k
7. Versuch: 43
r
Die gesuchte Zahl war also die 43!
Lösungen:

/* guess2.c devnull,07-12-2013 */ #include <stdlib.h> #include <stdio.h> /* main */ int main() { int lower, upper; int guess, cguess; char answer[2]; printf("Bitte Untergrenze angeben: "); scanf( "%d", &lower ); printf("Bitte Obergrenze angeben : "); scanf( "%d", &upper ); if (lower >= upper) { printf("Bereich ungültig!\n"); return 1; } printf("Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob\n" \ "R die Zahl richtig ist\n" \ "G die gesuchte Zahl grösser ist\n" \ "K die gesuchte Zahl kleiner ist\n"); for (cguess=1;;cguess++) { guess = (upper + lower)/2; printf("%3d. Versuch: %4d\n", cguess, guess); scanf("%s", answer); switch (answer[0]) { case 'k': case 'K': upper = guess; break; case 'g': case 'G': lower = (upper-guess>1)?guess:guess+1; break; case 'r': case 'R': lower = upper = guess; break; } if (lower == upper) break; } printf("Die gesuchte Zahl war also die %d!\n", lower); return 0; }

#include <stdio.h> #include <stdlib.h> int berechne_zahl(int zahl1, int zahl2) { int ergebnis; ergebnis = (zahl1+zahl2)/2; return ergebnis; } int main(void) { int obergrenze, untergrenze, versuche, zahl; char eingabe[100]; versuche = 1; printf("\nBitte denke dir eine Zahl aus und der Computer probiert sie zu erraten.\n\n"); printf("Bitte Untergrenze angeben: "); scanf("%d", &untergrenze); fflush(stdin); printf("Bitte Obergrenze angeben: "); scanf("%d", &obergrenze); fflush(stdin); printf("\nBitte geben sie nach jedem Versuch folgendes ein:\n"); printf("r - die Zahl ist richtig.\n"); printf("g - die gesuchte Zahl ist größer.\n"); printf("k - die gesuchte Zahl ist kleiner.\n\n"); do { zahl = berechne_zahl(untergrenze,obergrenze); printf ("%d. Versuch: %d\n", versuche, zahl); fgets(eingabe,obergrenze,stdin); printf("Test: %c \n", eingabe[0]); if (eingabe[0]=='r'){ printf("Die gesuchte Zahl war also die %d! Ich habe %d Versuche gebraucht.\n", zahl, versuche); } else if (eingabe[0]=='g'){ untergrenze = zahl; } else if (eingabe[0]=='k'){ obergrenze = zahl; } else { printf("Sie haben ein falsches Zeichen eingegeben.\n"); break; } versuche++; }while(eingabe[0]!='r'); return EXIT_SUCCESS; }

/**************************************************************************** * * * Linux GCC * * Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) * * in einem vom User angegebenen Bereich Erraten soll. * * * ****************************************************************************/ #include <stdio.h> #include <stdlib.h> /***** FEhler eingabe funktion *****/ void fehler(void){ printf("Eingabefehler!!! Versuchen sie es noch ein mal.\n"); } int main(void){ int oberg, unterg, check1, check2, wieder=0; char antwort; do{ /****** Eingabe der Ober/Untergrenze *****/ do{ printf("Bitte Untergrenze eingeben: "); do{ check1=scanf("%d", &unterg); if(check1!=1){ fehler(); printf("Bitte Untergrenze eingeben: "); } } while(getchar()!='\n'); printf("Bitte Obergrenze eingeben: "); do{ check2=scanf("%d", &oberg); if(check2!=1){ fehler(); printf("Bitte Obergrenze eingeben: "); } } while(getchar()!='\n'); if(unterg>=oberg){ fehler(); printf("\n"); } } while(unterg>=oberg); /***** Ausdruck, Spielanleitung *****/ printf("\n\nBitte geben sie nach jedem Versuch R, G oder K. Je nachdem ob\n"); printf("R die Zahl richtig ist\n"); printf("G die Zahl Groesser ist\n"); printf("K die Zahl Kleiner ist\n\n"); int versuch=0, zahl=0, gewonnen=0; do{ ++versuch; zahl=(unterg+oberg)/2; printf("%d. Versuch: %d\n", versuch, zahl); scanf("%c%*c", &antwort); switch(antwort){ case 'G': case 'g': unterg=zahl; break; case 'K': case 'k': oberg=zahl; break; case 'J': case 'j': printf("Erraten\n"); gewonnen=1; break; default: printf("Bitte verwenden sie nur die Buchstaben R, G und J\n"); versuch--; } } while(gewonnen==0); printf("Diene Nummer lautet: %d\n", zahl); printf("Wollen sie noch ein Spiel? J(a)/N(ein): "); scanf("%c%*c", &antwort); if(antwort=='j'){ wieder=1; printf("\n\n---NUE GAME---\n\n"); } else if(antwort=='J'){ wieder=1; printf("\n\n---NUE GAME---\n\n"); } else wieder=0; } while(wieder==1); printf("\n\n---GAME OVER---\n\n"); return EXIT_SUCCESS; }