U
#include <iostream.h>
#include <ctype.h>
#include <string.h>
//Funktion zur Ermillung einer Zahl aus einem String
int get_number( char * );
int main()
{
int izufallszahl = 10;//diese Zahl kannst du ja vorher noch durch deinen "Zufallszahlen-Generator" ermitteln lassen
int itmp = 0;
bool bnochmal = false;
//mit "new char" ohne Groessenangabe bin ich mir nich ganz sicher ob das so gut ist, obwohl es funktioniert,
//kann sein das das vom freien Speicher abhaengt ob`s grad geht oder eben nich
char *izahl = new char;
do
{
cout<<"\nBitte geben sie ihre Zahl ein: ";
cin>>izahl;//Die Eingabe wird in einem String gespeichert
if((itmp = get_number(izahl)) == false)//nicht sehr hübsch aber funktioniert halt auch,
{ //besser die Zuweisung vorher machen u. dann pruefen
cout<<"\nFehler bei der Eingabe !"<<endl;
bnochmal = true;//es ist keine Zahl
}
else
{
if( itmp > izufallszahl)
{
cout<<"\nIhre Zahl ist zu gross !"<<endl;
bnochmal = true;
}
else if( itmp < izufallszahl )
{
cout<<"\nIhre Zahl ist zu klein !"<<endl;
bnochmal = true;
}
else if ( itmp == izufallszahl )//if(...) könnte man auch weglassen, so ist aber besser zu lesen
{
cout<<"\n\t"<< izahl <<"\tIst die richtige Zahl"<<endl;
cout<<"\nNoch ein Spiel ?\nja[1] | nein[0]: ";
cin>>itmp;//verwende ich wieder um Variable zu sparen
itmp == 1 ? bnochmal = true : bnochmal = false;
}
}
}
while( bnochmal );
return 0;
}
int get_number( char * izahl_tmp)
{
int ilen = 0;
int iergebnis = 0;
int ifaktor = 1;
ilen = strlen(izahl_tmp);//Laenge unseres String ermitteln, benoetigt "string.h"
int *itmp_array = new int [ilen];//neues temporaeres Array anlegen, mit der Laenge unseres Strings
//Hier wird jetzt jedes Element im String mit seinem Ascii-Wert verglichen,
//wenn eins gefunden wurde, dann die enstprechende Zahl in das Array eintragen
for (int i = 0; i < ilen; i++)
{
switch( (izahl_tmp[i]) )
{
case 48:itmp_array[i] = 0;break;
case 49:itmp_array[i] = 1;break;
case 50:itmp_array[i] = 2;break;
case 51:itmp_array[i] = 3;break;
case 52:itmp_array[i] = 4;break;
case 53:itmp_array[i] = 5;break;
case 54:itmp_array[i] = 6;break;
case 55:itmp_array[i] = 7;break;
case 56:itmp_array[i] = 8;break;
case 57:itmp_array[i] = 9;break;
default: return false;
}
}
//Die einzelnen Werte aufaddieren
//muss man nich von unbedingt von hinter her machen, geht aber einfacher
for(int j = ilen-1; j >= 0 ; j--)
{
iergebnis += itmp_array[j] * ifaktor;
ifaktor *= 10;
}
delete []itmp_array;//meinen allokierten Speicher wieder freigeben (sehr wichtig !)
return iergebnis;//das Ergebnis der vorangegangenen Berechnung (also unsere Zahl) zurückgeben
}
Ich hoffe du kannst mit Code wenigstens ein bisschen was anfangen.
Die Sache ist denke ich auch kürzer machbar, für das herausfiltern von Buschaben etc. gibts glaubig schon Funktionen. Musst halt mal gucken.
Wenn noch Fragen sein sollten, mail, ICQ.