akito schrieb:
, wie integrierte Funktionen. Sollte sie auch nicht benutzen, sondern das ganze eher mit den Basics umsetzen.
In Standard-C gibt es keine integrierten Funktionen sondern nur Funktionen, und Funktionen sind zum Benutzen da.
/* solche nichtsignifikanten Namen vergibt man nicht, schon gar nicht per define */
#define MIN 'a'
#define MAX 'f'
#define LENGTH 4
void creatModel ( char*,int,char,char );
//void outputModel ( char*,int );
void inputModel ( char*,int );
int outputRating ( const char*,const char*,int );
int main()
{
char secret[LENGTH], guessed[LENGTH];
int ready = 0, attempts = 0;
srand( time(NULL) );
printf( "MASTERMIND\n\n" );
creatModel( secret,LENGTH,MIN,MAX );
//outputModel( secret, LENGTH );
do
{
attempts++;
printf( "\n%2d Try: ",attempts );
inputModel( guessed,LENGTH );
//outputModel( guessed,LENGTH );
ready = outputRating( secret, guessed, LENGTH );
}while( !ready );
printf( "%2d attempts!\n", attempts );
return 0;
}
void creatModel( char* secret,int length,char min,char max )
{
int i;
for( i=0;i<length;i++ )
{
secret[i] = MIN + rand()%(MAX-MIN+1);
putchar( secret[i] );
}
}
void inputModel ( char* guessed,int length )
{
char s[10];
sprintf(s,"%%%dc",length); /* "%4c" -> 4 Zeichen aber keinen String einlesen */
scanf(s,guessed); while(getchar()!='\n'); /* standardkonform stdin leeren */
}
int outputRating( const char* secret,const char* guessed,int length )
{
int i;
int j;
int a;
for( i=0;i<length;i++ )
{
if( secret[i]==guessed[i] )
{
printf( "s" );
}
}
for( i=0;i<length;i++ )
{
for( j=0;j<length;j++ )
{
if( (secret[j]==guessed[i]) && (secret[j]!=guessed[j]) )
printf( "w" );
break;
}
}
printf("\n");
for( i=0;i<length;i++ )
{
if( secret[i]==guessed[i] )
{
a=1;
}
else
{
return 0;
}
}
return a;
}