Чем можно заменить bool из СИ - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
unsigned CharToPos(char ch)
{
   static const int COffs = 49;
   return (ch - COffs);
}
void PrintField(const char* arr)
{
   static const char CField[] = " 1 | 2 | 3 \n"
                                "---+---+---\n"
                                " 4 | 5 | 6 \n"
                                "---+---+---\n"
                                " 7 | 8 | 9 \n";
   const char* ch = CField;
   while (*ch)
   {
      if (isdigit(*ch) && arr[CharToPos(*ch)])
      {
         printf("%c", arr[CharToPos(*ch)]);
      }
      else
      {
         printf("%c", *ch);
      }
      ch++;
   }
}
bool SetValue(char* arr, char val, unsigned pos)
{
   bool isExecute = false;
   if (arr[pos] == 0)
   {
      arr[pos] = val;
      isExecute = true;
   }
   return isExecute;
}
bool CheckWin(const char* arr)
{
   return (arr[0] && (arr[0] == arr[1]) && (arr[1] == arr[2])) ||
          (arr[3] && (arr[3] == arr[4]) && (arr[4] == arr[5])) ||
          (arr[6] && (arr[6] == arr[7]) && (arr[7] == arr[8])) ||
          (arr[0] && (arr[0] == arr[3]) && (arr[3] == arr[6])) ||
          (arr[1] && (arr[1] == arr[4]) && (arr[4] == arr[7])) ||
          (arr[2] && (arr[2] == arr[5]) && (arr[5] == arr[8])) ||
          (arr[0] && (arr[0] == arr[4]) && (arr[4] == arr[8])) ||
          (arr[2] && (arr[2] == arr[4]) && (arr[4] == arr[6]));
}
int main()
{
   static const char CVal[] = {'x', 'o'};
   char arr[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   unsigned notUsed = sizeof(arr) / sizeof(*arr);
   
   unsigned player = 0;
   char ch;
   bool isPlay = true;
   PrintField(arr);
   while (isPlay)
   {
      printf("[%c]: ", CVal[player]);
      scanf("%c", &ch);
      fflush(stdin);
      printf("\n");
      if (isdigit(ch) && SetValue(arr, CVal[player], CharToPos(ch)))
      {
         notUsed--;
         player = !player;
      }
      PrintField(arr);
      if (CheckWin(arr))
      {
         isPlay = false;
         printf("Player '%c' is win!\n", CVal[!player]);
      }
      else if (notUsed == 0)
      {
         isPlay = false;
         printf("Game over\n");
      }
   }
   return 0;
}
Вот сама прога Х и О . Интересует чем можно заменить bool из Си

Решение задачи: «Чем можно заменить bool из СИ»

textual
Листинг программы
#include <stdio.h>
#define TRUE  1
#define FALSE 0
 
int main(void)
{
    int first_bool;
    char second_bool;
    
    first_bool = TRUE;
    second_bool = FALSE;
    
    if (first_bool == TRUE)
        puts("true");
    else
        puts("false");
    if (second_bool == TRUE)
        puts("True");
    else
        puts("False");
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки.
  2. Определение альтернативных имен для булевых значений.
  3. Объявление двух переменных типа int для хранения булевых значений.
  4. Присваивание значения TRUE первой переменной и FALSE второй.
  5. Проверка значения первой переменной и вывод соответствующего сообщения.
  6. Проверка значения второй переменной и вывод соответствующего сообщения.
  7. Завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5