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; }
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; }
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; }