Технологии
Проверить, имеется ли в заданном тексте баланс скобок си++ Не могу найти ошибку. - вопрос №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, 2022 г.
-
Всего ответов: 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() для ввода строки, а затем работать с ней.
Похожие вопросы
Дано действительное число а и натуральное число n вычислить P=a*(a+1)...(a+n-1) код есть а блоксхему не знаю как создать,помогите,заранее благодарен
март 15, 2013 г.
составить программу в С++ Поезд прибывает на станцию в а часов b минут и отправляется в с часов d минут. Пассажир пришел на платформу в n часов m минут. Составить программу, определяющую: будет ли пое
май 11, 2015 г.
Решено
дана последовательность действительных чисел а1,а2,..аn.выяснить будет ли она возрастающей
ноябрь 2, 2015 г.