/***************************************
/*INCLUDE files for: GuessingProgram
/***************************************/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

/***************************************
/* Name: GuessingProgram
/* Description:
/*     This program can guess any number between one and nine that you might
/*     have in mind by asking you some simple questions.
/* By: Gonzales Cenelia
/*
/* Inputs: it takes characters as input
/*
/* Returns: it return sentences
/*
/* Assumes: None
/*
/* Side Effects: no side effects
/* This code is copyrighted and has limited warranties.
/* Please see
/*   http:/*www.Planet-Source-Code.com/xq/ASP/txtCodeId.3445/lngWId.3/qx/vb/scripts/ShowCode.htm
/* for details.
/***************************************/

char GetAnswer( void ) {
    char choice = 0  ;
	while( choice != 'y' && choice != 'n' ) {
		printf("\n\rPlease choose \"y\" or \"Y\" for yes or \"n\" or \"N\" for no: ");
		scanf ( " %c", & choice ) ;
		choice = tolower(choice);
	}
	return choice;
}

int my_random( int num ) {
    if(num == 0) {
		return 0;
	}
	srand(( unsigned ) time( NULL ));
    return rand() % num;
}

int main()
{
    int keep_playing = 1;
    char answer ;
    int choice ;

	system ("CLS") ;
	printf("\n\t\t\t================");
	printf("\n\t\t\tGuessing program\n");
	printf("\t\t\t================\n\n");
    while ( keep_playing )
    {

	printf("\n\rDo you have a number between 1 and 9 in mind? Yes(y) No(n): ");
	scanf ( " %c", & answer) ;
	answer = tolower(answer);
    if( answer == 'y' ) {
        printf("Is it a prime number? Yes(y) No(n): ");
        if( GetAnswer() == 'y' ) {
            printf("Is it bigger than 4? Yes(y) No(n): ");
            if( GetAnswer() == 'y' ) {
                switch(my_random(2)){
				case 0:
					printf("Your number is 7? Yes(y) No(n): ");
                    if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
					else {
						printf("Now,i know for sure that your number is 5\n");
					}
                    break;
                case 1:
					printf("Your number is 5? Yes(y) No(n): ");
                    if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
                    else {
						printf("Now,i know for sure that your number is 7\n");
					}
                    break;
				}
			}
			else {
				switch(my_random(2)){
				case 0:
					printf("Your number is 3? Yes(y) No(n): ");
                    if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
                    else {
                        printf("Now,i know for sure that your number is 2\n");
					}
                    break;
                case 1:
					printf("Your number is 2? Yes(y) No(n): ");
					if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
					else {
						printf("Now,i know for sure that your number is 3\n");
					}
					break;
				}
			}
		}
		else {
			printf("Is it odd? Yes(y) No(n): ");
			if( GetAnswer() == 'y' ) {
				switch(my_random(2)){
				case 0:
					printf("Your number is 1? Yes(y) No(n): ");
					if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
					else {
						printf("Now,i know for sure that your number is 9\n");
					}
                    break;
				case 1:
					printf("Your number is 9? Yes(y) No(n): ");
					if( GetAnswer() == 'y' ) {
						printf("Well,i am intelligent i have found your number !\n");
					}
                    else {
						printf("Now,i know for sure that your number is 1.\n");
					}
                    break;
				}
			}
			else {
				printf("So,your number is even? Yes(y) No(n): ");
				if( GetAnswer() == 'n' ) {
					printf("I think that you are not telling me the truth.\n");
				}
				else {
					printf("Is it bigger than 5? Yes(y) No(n): ");
					if( GetAnswer() == 'n')
						printf("Without any doubt,i know that your number is 4\n");
					else {
						switch(my_random(2)){
						case 0:
							printf("Your number is 8? Yes(y) No(n): ");
							if( GetAnswer() == 'y' ) {
								printf("Well,i am intelligent i have found your number !\n");
							}
                            else {
								printf("Now,i know for sure that your number is 6\n");
							}
							break;
						case 1:
							printf("Your number is 6? Yes(y) No(n): ");
							if( GetAnswer() == 'y' ) {
								printf("Well,i am intelligent i have found your number !\n");
							}
							else {
								printf("Now,i know for sure that your number is 8.\n");
							}
							break;
						}
					}
				}
			}
		}
    }
	printf("\n\ndo you want to continue Yes(y) No(n): ");
	getchar();
	choice = getchar();
	if( choice != 'y' ) break;

    }
    printf ( "\n\n\r Goodbye!\n\r" );
    system ("PAUSE") ;
    return 0;
}