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

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

09.03.2016, 19:44. Показов 1354. Ответов 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
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,384
Записей в блоге: 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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
10.03.2016, 18:59
Ну вот только не нужно мне рассказывать, что используется, а что - нет. Я вижу, что программа лезет туда, куда ей лезть нельзя. Поставь точку останова на этой строке, и посмотри, откуда хочет взять символ твой код.

Что должно произойти, по-твоему?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru