C :: Aufgabe #14 :: Lösung #1

3 Lösungen Lösungen öffentlich
#14

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!



#1
vote_ok
von devnull (8870 Punkte) - 07.12.2013 um 19:47 Uhr
Quellcode ausblenden C-Code
/* 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;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben