Задача: Есть массив char text[20][81], в нем записаны строки, необходимо найти и удалить содержимое правильно расставленных скобок, включая сами скобки. Сложность заключается в том, каким образом мне нужно определить пару для скобки среди других пар? При том, что скобки могут иметь пару на другой строке.
int index = 0, j = 0;//переменные для циклов
int open = 0, close = 0;//подсчет скобок
int arrayL[80] = {};//массив индексов левых скобок
int arrayR[80] = {};//массив индексов правых скобок
int l=0, r=0; // счетчик индексов для массива
while (index < strCount)
{
while (text[index][j] != NULL)
{
switch (text[index][j])
{
case '(':
{
open++;
arrayL[l] = j;
l++;
}
case ')':
{
close++;
arrayR[r] = j;
r++;
}
}
j++;
}
index++;
}
Моя попытка создать массив из левых и правых скобок, но в случае если скобки будут на разных строках придётся прикручивать костыль в виде подсчета элементов между ними(планировалось просто отнять от большего меньшее в стандартном случае)
Задача поиска парных скобок стара, как мир :-) И решение её известно давным-давно.
Если при достижении конца буфера выяснилось, что inside != 0, то это означает, что нарушен синтаксис расстановки скобок.
Разумеется, это очень черновой вариант. Но, я думаю, идея понятна.
int i, j, n, k=0;//переменные для цикла
int lenght;//длина строки
int indL[2] = {}, indR[2] = {};//левая и правая скобка соотв.
int flag = 0;//показатель была ли найдена открывающая скобка, 1 - найденна левая скобка
//[0] - координата по У; [1] - координата по Х
//Поиск последней закрывающей скобки
for(i = lineIndex; i < strCount; i++)
{
lenght = strlen(text[i]);
for (j = characterIndex; j <= lenght; j++)
{
if (text[i][j] == ')')
{
indR[0] = i;
indR[1] = j;
for (n = i; n > -1; n--)
{
while (k < 81 && k != NULL && k < j)
{
if ('(' == text[i][j])
{
indL[0] = i;
indL[1] = j;
flag = 1;
}
k++;
}
if (flag) n = -1;//ОСТАНОВОЧКА
}
if (flag)
{
brackets[0] = indL[0];
brackets[1] = indL[1];
brackets[2] = indR[1];
brackets[3] = indR[0];
j = 81;//АСТАНОВОЧКА
i = strCount;//ТОЖЕ АСТАНОВОЧКА
}
}
}
}
if (flag != 2)
{
brackets[0] = -1;
brackets[1] = -1;
brackets[2] = -1;
brackets[3] = -1;
}
Я решил эту задачу путем поиска закрывающей скобки, т.к. удобнее всего производить поиск парной(просто найти ближайшую). Там если мы нашли закр. скобку, то производится поиск в обратном порядке, пока не найдем открывающую, если не нашли, то ищем другую закрывающую. Мне показался этот способ самым наглядным. Принимаю критику что можно сделать по другому)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Читаю данные с последовательного порта, с arduinoНашел код в интернете, но он странно работает
Читаю данные из ком порта делал это с помощью readFile С которым раньше серьёзно никогда не работал, код просто непонятныйПотом подумал если...
Почему не выводит текст с буквой t на конце? Правильно ли я пытаюсь задать конец строки?