Привет! В коде, который вы предоставили, есть несколько ошибок:
Неправильно объявлена переменная str. Нужно написать char str[100], а не string str[100].
Неправильно происходит проверка скобок. У вас есть лишняя точка с запятой после if(str[i] == ')'). Это приводит к тому, что увеличение счетчика i происходит независимо от того, была найдена скобка или нет. Также, вы забыли про проверку открывающей скобки — если встречается открывающая скобка, нужно проверить, есть ли соответствующая ей закрывающая скобка в тексте.
Внутри блока if(str[i] == '("') есть лишняя открывающая фигурная скобка.
Код для вывода сообщений о сбалансированности скобок и оригинального текста вместе стоит внутри цикла. Нужно их вынести за пределы цикла.
Нужно добавить проверку на то, что количество открывающих и закрывающих скобок равно.
Исправленный код:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str[100] = "()";
int open = 0, close = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == '(') {
open++;
} else if (str[i] == ')') {
close++;
}
}
printf(«Tekst bez zapyatih: %s\n», str);
return 0;
}
Этот код проверяет, является ли количество открывающих и закрывающих скобок в тексте одинаковым, и выводит соответствующее сообщение. Также выводится оригинальный текст без запятых.
Обратите внимание, что в этом коде проверяется только одна строка str, которая задана заранее. Если вы хотите, чтобы пользователь мог вводить текст самостоятельно, то нужно использовать функцию gets() или fgets() для ввода строки, а затем работать с ней.
Добрый день. Меня заинтересовал ваш ответ "Привет! В коде, который вы предоставили, есть несколько ошибок:
Неправильно объявлена перемен..." на вопрос http://www.liveexpert.org/topic/view/5012202-proverit-imeetsya-li-v-zadannom-tekste-balans-skobok-si-ne-mogu-najti-oshibku. Можно с вами обсудить этот ответ?