תרגול אתגר בתנאים ושארית חלוקה


תרגול 3.3 מידול המציאות תנאים מורכבים ושארית חלוקה

התרגילים שכאן מאתגרים ומתאימים לסוף שנת הלימוד. למרות שהידע התחבירי דורש רק תנאים ושארית חלוקה, החשיבה שנדרשת לתרגום בעיה מציאותית לתבנית אלגברית אינה פשוטה.

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
לנוחותכם מצורף קוד להעתקה המצייר את הלוח ועליו הצריח והפרש במיקום שנקלט מהמשתמש.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Program
{
  static void Main()
  {
    // need strings since perfect square
    // requires 2 characters 
    string[,] board = new string[8, 8];

    // Fill board
    for (int row = 0; row < 8; row++)
    {
      for (int col = 0; col < 8; col++)
      {
        if ((row + col) % 2 == 0)
          board[row, col] = "██"; // Light squares
        else
          board[row, col] = "  "; // Dark squares
      }
    }

    DrawBoard(board); // Display initial board
    // Get positions
    Console.Write("Enter a rook Row: ");
    int rookRow = int.Parse(Console.ReadLine());
    Console.Write("Enter a rook Column: ");
    int rookCol = int.Parse(Console.ReadLine());
    Console.Write("Enter a bishop Row: ");
    int bishRow = int.Parse(Console.ReadLine());
    Console.Write("Enter a bishop Column: ");
    int bishCol = int.Parse(Console.ReadLine());

    board[rookRow, rookCol] = "R ";
    board[bishRow, bishCol] = "B ";

    DrawBoard(board); // Display final board

    //TODO: בידקו אם הרץ נמצא על המשבצות השחורות
    if (true)
      Console.WriteLine("\nBishop is on the blacks");

    // TODO: עדכנו את התנאי כדי לזהות איום של צריח
    if (true)
      Console.WriteLine("\nrook threathens bishop");

    // TODO: עדכנו את התנאי כדי לזהות איום של רץ
    if (true)
      Console.WriteLine("\nbishop threatens rook");

  }

  static void DrawBoard(string[,] board)
  {
    Console.Clear();
    Console.WriteLine();
    // Print column numbers header
    Console.Write("  ");
    for (int col = 0; col < 8; col++)
      Console.Write($"{col} ");

    Console.WriteLine();

    // Print board with row numbers
    for (int row = 0; row < 8; row++)
    {
      Console.Write($"{row} ");
      for (int col = 0; col < 8; col++)
        Console.Write($"{board[row, col]}");

      Console.WriteLine();
    }
  }
}

עליכם להשלים את הקוד כדי לזהות מצבים על הלוח

3.3.1 רץ נמצא על משבצות שחורות

עדכנו את התנאי בשורה מממ בקוד כדי לזהות אם הרץ נמצא על המשבצות השחורות.

מינוחים:

  • צריח: Rook,
  • רץ: Bishop
  • טור: Column
  • שורה: Row
  • שמות משתנים למיקום צריח: rookRow, rookCol
  • שמות משתנים למיקום רץ: bishRow, bishCol

3.3.2 צריח מאיים על רץ

צריח מאיים על רץ אם שניהם נמצאים באותה עמודה או באותה שורה. כתבו תנאי שמתקיים כאשר צריח מאיים על הרץ


3.3.3 רץ מאיים על צריח

רץ מאיים על צריח כאשר הם נמצאים על אותו אלכסון. כתבו תנאי שמתקיים כאשר רץ מאיים על צריח.


3.3.4 סוס מאיים על רץ

עדכנו את הקוד: הוסיפו סוס למערכה וכתבו תנאי המזהה אם הסוס מאיים על הרץ. מומלץ בשלב הפיתוח להגדיר מיקומים באופן ידני ללא קלט. לבסוף כשהכל עובד ניתן להוסיף קלט מהמשתמש.