Чем можно заменить 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 из СИ»
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; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки.
- Определение альтернативных имен для булевых значений.
- Объявление двух переменных типа int для хранения булевых значений.
- Присваивание значения TRUE первой переменной и FALSE второй.
- Проверка значения первой переменной и вывод соответствующего сообщения.
- Проверка значения второй переменной и вывод соответствующего сообщения.
- Завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д