Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 10

Строки. В чём может быть ошибка в сделанной мной программе?

05.11.2018, 16:56. Показов 1244. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, не подскажете в чём может быть ошибка в сделанной мной программе ? Может я что-то не дописал или что-то не так сделал ? Просто мой преподаватель оставил такой вот комментарий на мою работу:
(- неправильный алгоритм. Например, в строке "a(b c)d e(f)g" есть две группы символов в скобках: "b c" и "f".
Ответом должно быть "b c", а у вас программа выводит "e(f)g".
Т.е. вообще не то, что требуется!)

Буду очень благодарен за вашу помощь !
Вложения
Тип файла: 7z Строки.7z (124.8 Кб, 4 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2018, 16:56
Ответы с готовыми решениями:

В чем в этой программе может быть ошибка NaN?
Program aaa; Const N=((2*(15/17)-(7*(5/8)))/(1/10+1/15)); C1=5.9; C2=1.2; x=-8; var y:real; K:integer; Begin Writeln('Введите...

В чём может быть ошибка?
Не пойму в чём ошибка в программе: #include <iostream> using namespace std; int main( ) // Program that...

В чём может быть ошибка?
У меня программа, которая должна удалять из введенного сообщения все гласные. Использую класс - StringBuilder. - выдаёт ошибку:...

6
135 / 130 / 60
Регистрация: 16.06.2013
Сообщений: 527
05.11.2018, 21:28
Не совсем понятно, зачем всё это делать в форме т.к. для такой программы более чем хватит консоли + удобнее. Но ладно.
Не могли бы вы привести тут полный текст задания? Понять, что точно программа должна делать, только по примеру ответа, слегка проблематично.
0
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 10
05.11.2018, 22:46  [ТС]
Да, конечно, вот текст задания:
(Из данной строки выделить группы символов, расположенных между скобками '(' и ')'. Вывести группу с наибольшей длиной. Предполагается, что внутри пары скобок других скобок нет. Если в строке скобок нет, вывести в компонент вывода строку "Скобок нет")
0
135 / 130 / 60
Регистрация: 16.06.2013
Сообщений: 527
06.11.2018, 00:42
Лучший ответ Сообщение было отмечено under2134 как решение

Решение

under2134, регулярные выражения проходили? Или это нужно сделать поиском по строке?

Добавлено через 1 час 53 минуты
Кхм... Я немного упоролся, пока делал ваше задание, и добавил проверки на кучу ошибок, которых быть вообще не должно %). Если что - просто удалите их.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 
        private void button1_Click(object sender, EventArgs e)
        {
            //Проводим поиск в строке из первого текстбокса, и выводим результат 
            //во второй текстбокс
            textBox2.Text = stringSearch(textBox1.Text);
        }
 
        /// <summary>
        /// Проводим поиск самого длинного содержимого 
        /// внутри скобок
        /// </summary>
        /// <param name="search">Строка, в которой ищем</param>
        /// <returns>Результат</returns>
        private string stringSearch(string search)
        {
            //Строка для результата
            string ex = "";
            //Строка поиска
            string searchString = "";
            //Флаг нахождения скобки
            bool brFlag = false;
            //Флаг ошибки при переборе
            bool errorFlag = false;
 
            //Просто доп. проверка
            if (search.Length == 0)
                ex = "Входная строка пуста";
            else
            {
                //Проходимся по всем символам строки
                for (int i = 0; i < search.Length; i++)
                {
                    //Если нашли открывающую скобку
                    if(search[i] == '(')
                    {
                        //Просто на всякий случай, если всё-таки будет 2 открывающих скобки подряд
                        if (brFlag)
                        {
                            ex = "Ошибка - входная строка не соответствует заданию";
                            errorFlag = true;
                            break;
                        }
                        //Если скобки не было
                        else
                        {
                            //Ставим флаг текста в скобках
                            brFlag = true;
                            //Обнуляем строку поиска
                            searchString = "";
                        }
                    }
                    //Если закрывающая скобка
                    else if(search[i] == ')')
                    {
                        //Если у нас была открывающая скобка
                        if (brFlag)
                        {
                            //Если найденая строка больше выходной строки
                            if(searchString.Length > ex.Length)
                                //Запоминаем её
                                ex = searchString;
                            
                            //Сбрасываем флаг скобок
                            brFlag = false;
                        }
                        //Если закрывающая скобка не имеет парной открывающей
                        else
                        {
                            ex = "Ошибка - входная строка не соответствует заданию";
                            errorFlag = true;
                            break;
                        }
                    }
                    //Если любой другой символ
                    else
                    {
                        //Если символ внутри скобок
                        if (brFlag)
                            //Записываем символ
                            searchString += search[i];
                    }
                }
            }
 
            //Если ошибки не было
            if (!errorFlag)
            {
                //Если не найдено ни одной строки внутри скобок
                if (ex.Length == 0)
                    ex = "Скобок нет";
                else
                {
                    //Если есть флаг открытой скобки
                    //т.е. для одной из открытых скобок не было парной закрывающей
                    if (brFlag)
                        ex = "Ошибка - входная строка не соответствует заданию";                    
                }
            }
 
            return ex;
        }
    }


Кроме прочего. Как я полагаю, данные задания даются для того, чтобы студенты освоили базовые алгоритмы. И решать их при помощи Split-ов и Trim-ов... Странно, что преподаватель не указал вам на это.
0
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 10
06.11.2018, 12:37  [ТС]
Спасибо Вам большое, Вы мне очень сильно помогли
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
06.11.2018, 15:02
т.е. регулярки пользовать нельзя было?
Ну и ладно - раз в 2 строки решить не нужно - тогда можно и так )
0
135 / 130 / 60
Регистрация: 16.06.2013
Сообщений: 527
06.11.2018, 15:05
hoolygan, ну, я предположил, что это лабораторная работа на поиск по строкам. Естественно, что с регулярками это было бы на порядок проще - находим вхождения по маске, и получаем самое длинное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2018, 15:05
Помогаю со студенческими работами здесь

В чём может быть ошибка
Здравствуйте, помогите пожалуйста решить проблемму: Сайт нормально работал в течении года, в том числе и вчера - после внесения...

В чем может быть ошибка?
Что означает такая ошибка? Появляться только при вводе функций explicit, ALL. Если вводить каждый элемент по отдельности, то...

В чем может быть ошибка?
Есть такой небольшой скрипт: в файле links.txt хранятся ссылки на страницы сайтов. Скрипт ходит по этим страницам, парсит ссылки на...

В чем может быть ошибка
В чем может быть ошибка

В чем может быть ошибка?
function megaDate($timestamp) { global $tpl, $server_time; $diff = time() - $timestamp; $hours = floor($diff/3600); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru