Exemple #1
0
int checkGuess(char* guess, int i, int j){
	char *token;
	int x;
	token = strsep(&guess, " "); // extract first input 
	if(validNumber(token) && atoi(token) == i){	// 	proceed is first input is
												//	correct
		token = strsep(&guess, "\n");//extract second input
		if(validNumber(token) && atoi(token) == j){
			printf("Right!\n");	// User is correct.
			return 1;		
		}
	}	
	printf("Wrong\n");	//	User is incorrect
	return 0;
}
Exemple #2
0
int getWidth(int noEntries, char* entries[]){
	if(noEntries > 1 && validNumber(entries[1])){
		 return atoi(entries[1]);
	}
	else{
		return 5;
	}
}
void inputData()
{
	unsigned i, j;
	
	resetData();
	printf("* Enter fixed numbers for all input. (1, 2, 4, 8, 16, 32, etc)\n");
	printf("* Cache size must be smaller than or equal to main memory size.\n");
	printf("* Block Size must be smaller than or equal to cache size.\n");
	printf("Enter main memory size (words): ");
	scanf("%d", &mainMemorySize);
	if (mainMemorySize < 0 || validNumber(mainMemorySize) == 0)
	{
		error("Invalid main memory size...");
	}
	printf("Enter cache size (words): ");
	scanf("%u", &cacheSize);
	if (validNumber(cacheSize) == 0 || cacheSize > mainMemorySize)
	{
		error("Invalid cache size...");
	}
	printf("Enter block size (words/block): ");
	scanf("%u", &blockSize);
	if (validNumber(blockSize) == 0 || blockSize > cacheSize)
	{
		error("Invalid block size...");
	}
	lines = cacheSize / blockSize;
	mainMemory = (int *)malloc(mainMemorySize * sizeof(int));
	for (i = 0; i < mainMemorySize; i++)
	{
		mainMemory[i] = mainMemorySize - i;
	}
	cache = (Line *)malloc(lines * sizeof(Line));
	for (i = 0; i < lines; i++)
	{
		cache[i].tag = -1;
		cache[i].block = (int *)malloc(blockSize * sizeof(int));
		for (j = 0; j < blockSize; j++)
		{
			cache[i].block[j] = 0;
		}
	}
	printf("\n");
}
unsigned validNumber(unsigned number)
{
	unsigned value = 0;
	
	if (number == 1)
	{
		value = 1;
	}
	else if (number % 2 == 0 && number != 0)
	{
		value = validNumber(number / 2);
	}
	return value;
}
Exemple #5
0
int verifyTokens(struct tokenList* tokens)
{
	int i, flag = 0;
	struct tokenElement* node = tokens->first;

	for (i = 0; i < tokens->qnt; i++)
	{
		if (node->token->text[0] == '\'')
		{
			if (validChar(node->token))
				node->token->code = tokenToCode(node->token->text,'c');
			else
				flag = 1;
		}
		else if (node->token->text[0] == '\"')
		{
			if (validString(node->token))
				node->token->code = tokenToCode(node->token->text,'s');
			else
				flag = 1;
		}
		else if (isalpha(node->token->text[0]))
			node->token->code = tokenToCode(node->token->text,'i');
		else if (isdigit(node->token->text[0]))
		{
			if (validNumber(node->token))
				node->token->code = tokenToCode(node->token->text,'n');
			else
				flag = 1;
		}
		else if (validSeparator(node->token))
			node->token->code = tokenToCode(node->token->text,'t');
		else
			flag = 1;

		node = node->next;
	}

	if (!flag)
		return 1;
	else
		return 0;
}