Проверить, имеется ли в заданном тексте баланс скобок си++ Не могу найти ошибку. - вопрос №5012202

#include <stdio.h> #include <stdlib.h> int main(void) //Проверить, имеется ли в заданном тексте баланс скобок. { int i=0; int string str[100] = "()"; for(int i = 0; i<str; i++) { if(str[i] == ')'); i++; if(str[i] == '("'); i++; { printf(«Balanced»); printf(«Not Balanced»); printf("\nTekst bez zapyatih: %s", str); return 0; } } }
25.12.22
1 ответ

Ответы

Привет! В коде, который вы предоставили, есть несколько ошибок:

    Неправильно объявлена переменная 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++;
    }
  }

  if (open == close) {
    printf(«Balanced\n»);
  } else {
    printf(«Not Balanced\n»);
  }

  printf(«Tekst bez zapyatih: %s\n», str);
  return 0;
}

Этот код проверяет, является ли количество открывающих и закрывающих скобок в тексте одинаковым, и выводит соответствующее сообщение. Также выводится оригинальный текст без запятых.

Обратите внимание, что в этом коде проверяется только одна строка str, которая задана заранее. Если вы хотите, чтобы пользователь мог вводить текст самостоятельно, то нужно использовать функцию gets() или fgets() для ввода строки, а затем работать с ней.
12.04.23
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store