C :: Aufgabe #15 :: Lösung #1
1 Lösung
#15
Zahlen Raten - Fortgeschrittener
Fortgeschrittener - C
von zayc_
- 28.12.2012 um 14:00 Uhr
Das zu programmierende Programm soll eine Zufallszahl (integer, der User soll nach dem Bereich gefragt werden) generieren.
Der User soll diese erraten. Nach jedem Versuch soll der User darüber informiert werden, der wie vielte Versuch es war, ob er richtig oder falsch liegt, und wenn er falsch liegt ob die gesuchte Zahl grösser oder kleiner als die vom User eingegebene ist.
Zusatz für Fortgeschrittene:
Bei Falscheingaben (Buchstaben, Sonderzeichen, etz.) soll der User darüber informiert werden.
Bei den Versuchen >10 soll eine führende Null mit ausgegeben werden (also statt 1,2,3 soll 01, 02 ,03 ausgegeben werden.)
Bei der wiederholten Eingabe einer Zahl soll der User darüber informiert werden.
Der User soll den Bereich in dem die Zufallszahl liegen soll, selbst definieren.
Der User soll informiert werden, wenn sein Versuch ausserhalb des definierten Bereichs liegt.
Beispiel einer Konsolenausgabe:
Der User soll diese erraten. Nach jedem Versuch soll der User darüber informiert werden, der wie vielte Versuch es war, ob er richtig oder falsch liegt, und wenn er falsch liegt ob die gesuchte Zahl grösser oder kleiner als die vom User eingegebene ist.
Zusatz für Fortgeschrittene:
Bei Falscheingaben (Buchstaben, Sonderzeichen, etz.) soll der User darüber informiert werden.
Bei den Versuchen >10 soll eine führende Null mit ausgegeben werden (also statt 1,2,3 soll 01, 02 ,03 ausgegeben werden.)
Bei der wiederholten Eingabe einer Zahl soll der User darüber informiert werden.
Der User soll den Bereich in dem die Zufallszahl liegen soll, selbst definieren.
Der User soll informiert werden, wenn sein Versuch ausserhalb des definierten Bereichs liegt.
Beispiel einer Konsolenausgabe:
Konsolenausgabe:
Bitte die Untergränze wählen: 20
Bitte die Obergränze wählen: 60
Bitte erraten sie die gesuchte Zahl, sie befindet sich zwischen 20 und 60.
Ihr 01. Versuch: 5
Die eingegebene Zahl befindet sich ausserhalb des von ihnen definierten Bereich.
Ihr 02. Versuch: halloooo
Bitte nur Z A H L E N eingeben.
Ihr 03. Versuch: 55
Die gesuchte Zahl ist kleiner.
Ihr 04. Versuch: 25
Die gesuchte Zahl ist grösser.
Ihr 05. Versuch: 55
Mit dieser Zahl haben Sie es schon einmal versucht!
Ihr 06. Versuch: 40
Glückwunsch die von Ihnen eingegebene Zahl ( 40 ) stimmt mit der gesuchten Zahl überein.
#1
von psych0dad (260 Punkte)
- 16.11.2020 um 17:05 Uhr
/********************************************************************************************
* Linux gcc *
* *
* Das zu programmierende Programm soll eine Zufallszahl (integer, der User soll nach dem *
* Bereich gefragt werden) generieren. Der User soll diese erraten. Nach jedem Versuch soll *
* der User darüber informiert werden, der wie vielte Versuch es war, ob er richtig oder *
* falsch liegt, und wenn er falsch liegt ob die gesuchte Zahl grösser oder kleiner als die *
* vom User eingegebene ist. *
* *
********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
/***** Funktion Eingabefehler *****/
void eingabefehler(void){
printf("Eingabefehler!!! Versuchen sie es noch ein Mal.\n");
}
int main(void){
int zufall, eingabe, versuch=0, check1, check2, check3, check4, count;
const int zahlx, zahly;
/***** Eingabe der Unter und Obergrenze *****/
do{
printf("Bitte Untergrenze eingeben: ");
do{
check1=scanf("%d", &zahlx);
if(check1!=1){
eingabefehler();
printf("Bitte Untergrenze eingeben: ");
}
} while(getchar()!='\n');
printf("Bitte Obergrenze eigeben: ");
do{
check2=scanf("%d", &zahly);
if(check2!=1){
eingabefehler();
printf("Bitte Obergreze eingeben: ");
}
} while(getchar()!='\n');
if(zahlx>=zahly){
printf("Die Untergrenze muss Groesser Obergrenze sein!\n");
printf("Versuchen sie es noch ein Mal\n");
}
} while(zahlx>=zahly);
/***** Groesse des Arrays berechnen *****/
/***** Erzeugen Zufallszahl *****/
srand(time(NULL));
zufall=(rand() %((zahly+1)-zahlx))+zahlx;
/***** Eingabe der zugelassenen Versuche *****/
printf("\n---------------------------------------\n");
printf("Waehlen sie die Anzahl der Versuche: ");
do{
check3=scanf("%d", &count);
if(check3!=1){
eingabefehler();
printf("Waehlen sie die Anzahl der Versuche: ");
}
} while(getchar()!='\n');
printf("---------------------------------------\n\n");
/***** Groesse des eingebefeldes zuweisen *****/
int array1[count], array2[count];
/***** Ausgabe von Untergrenze und zugelassene Versuche *****/
printf("Bitte erraten sie die gesuchte Zahl. Sie befindet sich Zwischen %d und %d.\n", zahlx, zahly);
printf("Sie haben %d Versuche.\n\n", count);
/***** Eingabe der zu erratenden Zahl *****/
do{
++versuch;
if(versuch<10)
printf("Ihr 0%d Versuch: ", versuch);
else
printf("Ihr %d Versuch: ", versuch);
do{
check4=scanf("%d", &eingabe);
if(check4!=1){
eingabefehler();
if(versuch<10)
printf("Ihr 0%d Versuch: ", versuch);
else
printf("Ihr %d Versuch: ", versuch);
}
} while(getchar()!='\n');
/***** Vergleich der eingegebenen Zahlen *****/
int adresse=versuch-1, i, doppelt=0; // array variablen
array1[adresse]=eingabe;
array2[adresse]=eingabe;
for(i=0; i<adresse; i++){
if(array1[i]==array2[adresse])
doppelt=1;
}
if(doppelt==1)
printf("Diese Zahl haben sie schon Verwendet.\n");
/***** Bedingungen nach Zahl eingabe *****/
if(eingabe==zufall){
printf("-----------------GAME OVER-------------------\n");
printf("Sie haben Gewonnen. %d ist die gesuchte Zahl.\n", eingabe);
printf("-----------------GAME OVER-------------------\n");
}
else if
(versuch==count){
printf("-------------GAME OVER---------------\n");
printf("Sie haben zu Viele Versuche gebraucht\n");
printf("-------------GAME OVER---------------\n");
printf("----------Die Zahl war %d------------\n", zufall);
}
else if(eingabe<zufall)
printf("Die gesuchte Zahl ist Groesser!\n\n");
else
printf("Die gesuchte Zahl ist Kleiner!\n\n");
/*Wenn ich nur eine Bedingugng verwende, dann funktioniert es perfekt.*/
} while( (versuch!=count) && (eingabe!=zufall) );
return EXIT_SUCCESS;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
