Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 08.11.2015
Сообщений: 9

Исправить код, работающий со строками

09.03.2016, 19:44. Показов 1369. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string.h>
void Razb_Poisk_Ed(int ,String &);
int Poisk_Ed=0,Poisk_Ed_Case=0,Poisk_Ud=0;
String h="";
void Razb(String &Lev,String &Prav,TLabel* L){
    int i,k=1;
    while(k!=0){
        i=1; k=Lev.Length()-1;
        while(i<k){
            i++;
            Razb_Poisk_Ed(i,Lev);
        }
    }
    L->Caption=h;
};
void Razb_Poisk_Ed(int i,String &Part){
    int o=Part.Length();
    if(i-1==1){if(Part[i]==','){Poisk_Ed=i-1;Poisk_Ed_Case=1;}} else
    if(i+1==o){if(Part[i]==','){Poisk_Ed=i+1;Poisk_Ed_Case=2;}} else
    if(Part[i-2]==',' && Part[i]==','){Poisk_Ed=i-1;Poisk_Ed_Case=3;}
    h=h+Part[Poisk_Ed];
};
Здравствуйте.
Даны две строки. В данном коде используется только строка Lev.
Если предпоследний символ явл-ся запятой, то выдается ошибка. К примеру "fdfew,r"->будет ошибка.
Писал весь код на Rad Studio C++ Builder 2010.
Сюда дал только код из библиотеки.
В чём ошибка?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2016, 19:44
Ответы с готовыми решениями:

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

Не получается со строками (исправить код)
Добрый вечер! У меня возникла такая проблема: есть задача, я ее разбил на подпрограммы, подпрограммы написал, а вот теперь составить одну...

Исправить код работы со строками
#include&lt;stdio.h&gt; int main(int argc, char *argv) { char a={&quot;zyd&quot;,&quot;qwe&quot;,&quot;asd&quot;,&quot;asd&quot;,&quot;asd&quot;,&quot;qwe&quot;}; for(int i=0;i&lt;6;i++) { ...

8
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,410
Записей в блоге: 3
10.03.2016, 17:42
1. На кой ляд #include <string.h> если везде работаешь со String?
2. Какая ошибка?
3. Что вообще сделать надо?
0
1 / 1 / 1
Регистрация: 08.11.2015
Сообщений: 9
10.03.2016, 18:37  [ТС]
D1973
1) Не знаю. На Rad Studio я недавно, раньше Borland, Dev и немного Visual пользовался.
2) Скидывает в библиотеку ustirng.h и указывает на строчку
C++
1
      ThrowIfOutOfRange(idx);   // Should Range-checking be optional to avoid overhead ??
Полная функция в котором эта строчка
C++
1
2
3
4
5
6
    wchar_t& __fastcall operator [](const int idx)
    {
      ThrowIfOutOfRange(idx);   // Should Range-checking be optional to avoid overhead ??
      Unique();                 // Ensure we're not ref-counted (and Unicode)
      return Data[idx-1];
    }
3)Постараюсь доступнее. Дана строка. Нужно в этой строке найти случаи: 1. "a,*"; 2. "*,a,*"; 3. "*,a";
Если я нахожу, то передаю его значения в глобальную переменную, а там дальше свои мысли по ней.

P.S. Если это что-то даст, то это часть программы по методу Вонга, именно пишу часть расщепления.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
10.03.2016, 18:50
Лучший ответ Сообщение было отмечено EjikPoni как решение

Решение

EjikPoni, 21-я строка твоего кода гласит:
C++
1
    h=h+Part[Poisk_Ed];
, Poisk_Ed инициализируется нулем. В Билдере (поскольку это близнец Дельфи) индексация строк начинается с 1-цы. Вот и первое место - кандидат на вылет с приведенной ошибкой.
1
1 / 1 / 1
Регистрация: 08.11.2015
Сообщений: 9
10.03.2016, 18:52  [ТС]
D1973
Вот скрин окна выводящегося при ошибке.
Миниатюры
Исправить код, работающий со строками  
0
1 / 1 / 1
Регистрация: 08.11.2015
Сообщений: 9
10.03.2016, 18:54  [ТС]
volvo,
Цитата Сообщение от volvo Посмотреть сообщение
Poisk_Ed инициализируется нулем
Он не использует Poisk_Ed только после того, как Poisk_Ed присвоен i.
Цитата Сообщение от EjikPoni Посмотреть сообщение
Poisk_Ed=i-1;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
10.03.2016, 18:59
Ну вот только не нужно мне рассказывать, что используется, а что - нет. Я вижу, что программа лезет туда, куда ей лезть нельзя. Поставь точку останова на этой строке, и посмотри, откуда хочет взять символ твой код.

Что должно произойти, по-твоему?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
10.03.2016, 19:03
Чтобы Poisk_Ed=i-1; отработало, нужно, чтобы одновременно 1) i-1 было равно 1 (это выполняется) и 2) Part[i] должен быть равен ',' (а вот это - нет. Все, облом, попытка взять нулевой элемент строки - вылет)
1
1 / 1 / 1
Регистрация: 08.11.2015
Сообщений: 9
10.03.2016, 19:13  [ТС]
volvo, Спасибо. Заработало.
Я не сильно понял почему, но немного до меня дошло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2016, 19:13
Помогаю со студенческими работами здесь

Ошибка в классе работающий с строками
Дано условие: &quot;Написать класс для эффективной работы со строками, позволяющий форматировать и сравнивать строки, хранить в строках...

Распараллелить код, работающий с графами
Есть програма. В ней масив структур-вершины графа, у которых есть поля соседи, номер и цветовой код(от уля и вперед) Метод NumberOfCollors...

Правильно работающий неправильный код
РНР-скрипт формирует код, приведенный ниже. Насколько я понимаю, этот код синтаксически неправильный, но работает нормально. ...

Прокомментировать код, работающий с квадратной матрицей
объясните, пожалуйста, каждую строку Console.WriteLine(&quot;Введите размер квадратной матрицы от 3 до 10: &quot;) int n =...

Ищу работающий код для i2c..
Это, не кинет ли в меня кто-то кодом для обмена данными (даже не обмена, а передачи в одну сторону) по y2s между двумя мегами16? Одна мега...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru