Проверить текст на несоответствие числа открывающих и закрывающих круглых скобок - C (СИ)
Формулировка задачи:
Дан текстовый файл f, содержащий программу на языке Си. Проверить эту программу на несоответствие числа открывающих и закрывающих круглых скобок:
Когда оператор программы занимает не более одной строки файла f
Когда оператор программы может занимать произвольное число строк файла
Если кто-нибудь, что-нибудь знает, то прошу написать, может быть есть какие то, идеи, не могу даже понять саму суть
Решение задачи: «Проверить текст на несоответствие числа открывающих и закрывающих круглых скобок»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { const char CFile[] = "program.c"; FILE* f = fopen(CFile, "r"); int bracket = 0; char ch; if (f == NULL) { perror(CFile); return EXIT_FAILURE; } while ((0 <= bracket) && ((ch = fgetc(f)) != EOF)) { switch (ch) { case '(': bracket++; break; case ')': bracket--; break; } } fclose(f); printf("%s\n", (bracket == 0) ? "Ok" : "Error"); return EXIT_SUCCESS; }
Объяснение кода листинга программы
В этом коде проверяется корректность текста на наличие парных скобок.
- Первые 4 строки определяют файл, который нужно проверить, и открывают его для чтения.
- Следующая строка инициализирует переменную bracket = 0, которая отслеживает количество открытых скобок.
- В цикле while происходит чтение файла посимвольно.
- В операторе switch проверяется каждый символ:
- Если символ '(', то переменная bracket увеличивается на 1.
- Если символ ')', то переменная bracket уменьшается на 1.
- После цикла while файл закрывается.
- В последней строке выводится сообщение об ошибке или о корректности текста. Код проверяет, что парные скобки в тексте открываются и закрываются в нужном порядке. Если в конце текста останется открытая скобка, то выведется сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д