Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54

Переворот строки - ошибка (((

09.11.2009, 10:26. Показов 3082. Ответов 16
Метки нет (Все метки)

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

for(int i=Edit1->Text.Length();i>0;i--)
Edit2->Text=Edit2->Text[i];
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2009, 10:26
Ответы с готовыми решениями:

Переворот строки
Добрый день интересует вопрос про функцию std::reverse, при использовании цифр и букв она работает как надо, но при добавлении в строку...

Переворот строки
Нужно написать рекурсивную подпрограмму переворота строки. Например: прога->агорп

Переворот строки
Удивительно, но в поиске такого не нашел... В общем, нужно создать метод переворота заданной строки. Вот мое решение. static string...

16
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
09.11.2009, 10:33
Для переворота строки используй функцию Reverce, помоему так она называется
0
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
09.11.2009, 10:45  [ТС]
а всё - сделал ... надо было так:

for(int i=Edit1->Text.Length();i>0;i--){
Edit2->Text=Edit2->Text+Edit1->Text[i]; }
0
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
10.11.2009, 11:12  [ТС]
Блин ... прощитался ... я ...

вот у меня сть строка Edit1->Text="1,2,10,13,15,2,16" , этим способом получается так Edit2->Text="61,2,51,31,01,2,1" ... т.е. с цифрами наклдочка ...

как монжо перевернусть строку, чтобы цифры не изменились ... ???

что бы было так:
Edit2->Text="16,2,15,13,10,2,1"
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
10.11.2009, 14:10
если это некритично, идея такова: цифры пишешь как "01,02,10,13,15,02,16." и используешь такую же функцию как у тебя тока с шагом 3... можно еще после каждой итерации удалять ноль (ну если числа заданы или че нить в этом роде...), а в конце последний символ (точку)... или там например делать StrToInt(IntToStr(Edit1->Text[i])) (наверное это уберет нули, но над запятыми придется подумать (н.п. удалил - обработал - добавил)... ну так в общем...

Добавлено через 48 минут
Sorry Sorry ошибочка вышла невкурил сперва про функцию (но про запятые всеже верно))))) вот проверено:

если это некритично, идея такова: цифры пишешь как "01,02,10,13,15,02,16."
Далее такой алгоритм:
Будем вытаскивать по 3 символа с конца и записывать в Edit 2.
Код почти рабочий (хз там какой-то косяк.. но посмотри все равно)... короч тебе надо использовать SubString
C++
1
2
3
4
5
6
7
8
int i=1;
for (int n=0; n<Edit1->Text.Length(); n=n+3)
{
AnsiString A;
A=Edit1->Text.SubString(Edit1->Text.Length()-3*i, 3);
Edit2->Text=Edit2->Text+A;
i++;
}
0
225 / 54 / 0
Регистрация: 29.09.2008
Сообщений: 52
10.11.2009, 14:13
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
тока с шагом 3
а если там будут цифры например 120, 143
тогда такой вариант не проканает)))
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
10.11.2009, 14:47
ну я так идею подкинул... ведь и шаг мона выставить и числа сделать хоть 000...(стопицот нулей)...01
!
если это некритично
!
Суть ведь не в этом
0
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
10.11.2009, 18:54  [ТС]
да не ... нельзя (01,02 и т.д.) ... ноли не канают ... ((( ... а что там насчёт функции "Reverce" из второго ответа? - кто-нить про неё, чо-нить знает?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
10.11.2009, 19:23
reverse - Алгоритм преобразования последовательностей

template <class BidirectionalIterator>
void reverse(BidirectionalIterator first,
BidirectionalIterator last)

Изменяет последовательность элементов в интервале [first, last) на обратную.

подобные алгоритмы: reverse, reverse_copy
Аффтар - жосский дятька Архангельский

Сам лично не пользовался, но ИМО reverse наверное все же не подойдет
Если не секрет нельзя ли подробнее о вашем проекте... точнее о образовании ряда чисел.. мб че нить придумаем...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.11.2009, 19:27
Попробуй так
C++
1
Edit5->Text = ReverseString(Edit4->Text);
Вместо моих эдитов подставь свои

Добавлено через 52 секунды
И не забудь вверху подключить вот это

C++
1
#include "Strutils.hpp"
1
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
10.11.2009, 19:53
2Sasha
так-то не гуд:

Miks

вот у меня сть строка Edit1->Text="1,2,10,13,15,2,16" , этим способом получается так Edit2->Text="61,2,51,31,01,2,1" ... т.е. с цифрами наклдочка ...

что бы было так:
Edit2->Text="16,2,15,13,10,2,1"
трабла остается.

2Miks

Я тут че подумал... вот код... правда довольно замороченный, наверно мона попроще, зато проверенный (подобное делал): примерно так считаем разделители (то бишь запятые), заносим их положение в массив, считаем сколько символов в строке занимает каждое число (или число+разделитель хз как сложится) ну и действуем по вышеприведенному (там где с нулями) алгоритму, тока подогнать его нада)):

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
AnsiString A;
int y[1024]; //массив содержит все положения запятой (например y[0]=3(й символ), y[1]=(5)й и т.д.
int x; // текущая позиция ","
 
A=Edit1->Text;
 
for (int i=0; i<Edit1->Text.Length();)
{
x=A.Pos(",");
 
if (x!=0)
        {
        A.Delete(A.Pos(","), 1);
        y[i]=x;
        cp=NULL;
        i++;
        }
else
        {
        i=Edit1->Text.Length();
        }
}
/*
Далее необходимо вычислить длину каждого числа в сиволах между каждой запятой:
1й как y[0]-0
2й как y[1]-y[0]
nй как y[n+1]-y[n]
и т.п... короч в массив загнать или сразу... тут цикл..
ну а потом примерно как в ранее предложеном алгоритме только подумать еще придется
*/
0
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
11.11.2009, 09:00  [ТС]
Ну это так - приложения для упрощения жизни одного хорошего человека, по своей сути предназначенно для вёрстки, а точнее для правильной нумерации страниц при печати. Т.е. идею заключается в том, чтобы пользователь ввёл сколько страниц будет в методичке, а программа вывела последовательность чисел(номера страниц), в какой последовательности они должны печататься ... до переворота всё работало нормально - н купили новый мфу у которого нет зеркального отображения печати, и теперь необходимо сделать это програмно, т.е. отобразить все числа(номера страниц) в обратной последовательности.

но чо-то я никак немогу сообразить как это сделать ((( ...

есть прикреплённый файлик ... мож кто посмотрит да поможет мну с этой проблеммой ... (( ... чо-то никак немогу понять ...
Вложения
Тип файла: 7z вёрст2.7z (283.6 Кб, 14 просмотров)
0
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
11.11.2009, 09:01  [ТС]
код отображения неободим для case 0:
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
11.11.2009, 09:10
ээээээээ.... недопонял... т.е. если мы вводим число в Edit1 6, то требуется вывести последовательность в Edit2 6,5,4,3,2,1?
Или как?
Там чето какой-то StringGrid вообще...
ммм... а че мой код?
1
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
11.11.2009, 09:25  [ТС]
а ... - второй StringGrid ... пока не предилах (та он там и ненужен ... яэ я чо-то делал .. и не ужалил) ... а первый стринг идёт, как наглядное отображение, страниц, т.е. вводится число 6, в стринге получается:

6 1
5 2
4 3

вот т,е. на одном листе бумаги (в альбомном виде) печатаются 1 и 6 страница, потом мфу переворачивает лист и с другой стороны печатает 5 и 2ю страницы и так до конца ...

вот - я их считываю сигзагом (так нужно) и заношу в Edit ... в итоге получается 1,6,5,2,3,4 ... а мне нужно наоборот
...

а твой код чо-то я не пойму ... немогу применить ...
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
11.11.2009, 09:38
ооооот оно че Михалыч! Все ясно...



попробуй так:

C++
1
2
3
4
5
int x=StrToInt(Edit1->Text);
for (int i=1; i<=x/2; i++)
{
Edit2->Text=Edit2->Text + IntToStr(x-i+1) + "," + IntToStr(i) + ",";
}
Добавлено через 3 минуты
тока запятую надо удалить... RTFM.. да или тупо посмотри в постах выше... Delete
1
 Аватар для Miks
8 / 8 / 0
Регистрация: 19.06.2008
Сообщений: 54
11.11.2009, 09:42  [ТС]
да да ... - тока не Михалыч ... а Захарыч ... ... спасибо тебе огромное за помощь - уже сделал ))) ... ток немного подругому ... ))) .. всёравно спасиба )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2009, 09:42
Помогаю со студенческими работами здесь

Переворот строки
Реализуйте класс ReversibleString, хранящий строку и поддерживающий методы Reverse для переворота строки и ToString для получения строки. ...

Переворот строки
Ребят,у меня есть 2 часа чтоб понять!УМОЛЯЮ, помогите...объясните в этой функции( которая переворачивает строку и читатет ее) строку ...

Переворот строки
Почему при использовании указателя ошибка, а при использование массива всё нормально? void RevStr(char *str){ char *start,*end; ...

Переворот строки
Добрый вечер. Нужно перевернуть строку 12345 в 54321. Подскажите, где неверно в коде. Если можно не кодом, а словами (идеей), чтобы...

Хитрый переворот строки
требуется перевернуть строку и попарно символы в ней, т.е. было 1234567890 - исходная строка переворот 0987654321 попарно ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru