Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Перернуть строку


Автор: merfi 22.1.2008, 15:25
IDE MS DEV Studio C++ 2005 express
Задача: 
Введенную строку вывести наоборот. Реверс не простой. Надо выводить по одному символу начиная с последнего с задержкой в 500 мс.
Написал следующее:

int i ,j;
                 array<Char>^myArray = textBox1->Text->ToCharArray();
                 i = textBox1->Text->LastIndexOf("\0");
                 for(j=0; i>j; j++){
                     textBox1->Text = myArray[i];    // ругается на несовместимость типов
                     System::Threading::Thread::Sleep(500);

Может есть решение и короче 
Подскажите ламеру пожалуйста!! smile  

Автор: NiJazz 22.1.2008, 18:25
Можно вот так перевернуть строку:
Код

char str[] = "Кабан упал и лапу набоок";

size_t len = sizeof str / sizeof str[0] - 1;

for ( size_t i = 0; i < len / 2; ++ i )
{
    char& c1 = str[i];
    char& c2 = str[len-1-i];

    c1 = c1 ^ c2;
    c2 = c1 ^ c2;
    c1 = c1 ^ c2;
}

Автор: merfi 22.1.2008, 18:31
Спасибо Все прекрасно работает А теперь представим что 
1 строка задается динамически 
2 используем визуальное программирование

Автор: JackYF 22.1.2008, 20:20
Цитата(merfi @  22.1.2008,  17:31 Найти цитируемый пост)
2 используем визуальное программирование

 smile это что?

Автор: Earnest 23.1.2008, 19:48
Цитата(JackYF @  22.1.2008,  21:20 Найти цитируемый пост)
  это что? 

Двигаем операторы взглядом? smile 

Автор: JackYF 23.1.2008, 20:23
Ага. Или так: думаем в голове операторы, а они сами прописываются в текстовом редакторе, а дебагер имплантируется в мозг smile

Автор: jonie 23.1.2008, 21:56
Модератор: Сообщение скрыто.

Автор: NiJazz 24.1.2008, 19:23
Вот как динамически:
Код

char * str = new char[128];

strcpy( str, "Кабан упал и лапу набоок" );

size_t len = strlen( str );

for ( size_t i = 0; i < len / 2; ++ i )
{
    char& c1 = str[i];
    char& c2 = str[len-1-i];

    c1 = c1 ^ c2;
    c2 = c1 ^ c2;
    c1 = c1 ^ c2;
}


delete str;
str = 0;


Что касается визуального, то можно так: 
Код

SetWindowTextA( hwnd, str );

Автор: Lycifer 25.1.2008, 15:09
А если у тебя буфер char переполнится?(ну хотя бы исключениями воспользуйся, ну или массив char-ов создай)
А насщёт "визуального программирования" - это как?

Добавлено через 4 минуты и 41 секунду
Ну предположем ты имел ввиду MFC? тогда вопрос какого типа переменная text?
Создай упровляющию переменную для комбобокса, и воспользуйся функциеё AddString();
описание не помню но кажется принимает char(если проект без  UNICODE) 
Посмотри в MSDN

Автор: NiJazz 25.1.2008, 17:43
Цитата

А если у тебя буфер char переполнится?

А чтобы он не переполнился, мы сделаем его большим-пребольшим.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)