93 lines
3.1 KiB
C
93 lines
3.1 KiB
C
#include <stdio.h>
|
|
|
|
#define N 30
|
|
#define CUBE 6
|
|
#define INDEX_PlAYER 24
|
|
#define ZERO 0
|
|
#define ONE 1
|
|
#define TWO 2
|
|
#define ABS(x) (x) * (((2 * (x)) + 1) % 2)
|
|
#define BOOLEAN unsigned short
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
// NumBBiggerThenNumA
|
|
// ------------------
|
|
//
|
|
// General : Checks if the second number (B) is greater than the first number (A).
|
|
//
|
|
// Parameters :
|
|
// number1 - first number (int)
|
|
// number2 - second number (int)
|
|
//
|
|
// Return value : If the second number (B) is greater than the first number (A) (BOOLEAN).
|
|
//
|
|
//---------------------------------------------------------------------------------------
|
|
// Programmer : Cohen Idan
|
|
// Student No : None
|
|
// Date : 21.10.2019
|
|
//---------------------------------------------------------------------------------------
|
|
BOOLEAN NumBBiggerThenNumA(int a, int b)
|
|
{
|
|
int sub = a - b + ONE;
|
|
BOOLEAN answer = (ONE / (ABS(sub) + (sub) + ONE));
|
|
return answer;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
// ChangeBool
|
|
// ----------
|
|
//
|
|
// General : Boolean variable inverse.
|
|
//
|
|
// Parameters :
|
|
// bool1 - Boolean variable (BOOLEAN)
|
|
//
|
|
// Return value : Boolean variable (BOOLEAN).
|
|
//
|
|
//---------------------------------------------------------------------------------------
|
|
// Programmer : Cohen Idan
|
|
// Student No : None
|
|
// Date : 21.10.2019
|
|
//---------------------------------------------------------------------------------------
|
|
BOOLEAN ChangeBool(BOOLEAN bool1)
|
|
{
|
|
BOOLEAN answer = ++bool1 % TWO;
|
|
return answer;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
// Exercise 2
|
|
// ----------
|
|
//
|
|
// General : The program checks the amount of cube flips for which the player
|
|
// can advance his tool forward.
|
|
//
|
|
// Input : None.
|
|
//
|
|
// Process : The program counts the number of zeros on the board to position 6
|
|
// after the player's position on the board.
|
|
//
|
|
// Output : The amount of cube throws for which the player can advance
|
|
// his tool (unsigned short).
|
|
//
|
|
//---------------------------------------------------------------------------------------
|
|
// Programmer : Cohen Idan
|
|
// Student No : 211675038
|
|
// Date : 23.10.2019
|
|
//---------------------------------------------------------------------------------------
|
|
void main(void)
|
|
{
|
|
unsigned short board[N] =
|
|
{0,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,1,1,1,1,0};
|
|
|
|
unsigned short sum = ZERO,
|
|
counter = INDEX_PlAYER,
|
|
last_step = counter + CUBE;
|
|
|
|
for (++counter; NumBBiggerThenNumA(counter, last_step); counter++)
|
|
{
|
|
sum += ChangeBool(board[counter]);
|
|
}
|
|
|
|
printf("Sum: %hu\n", sum);
|
|
} |