Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2013, 17:37   #1
Daelan
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 10
По умолчанию Вставка символов

Доброго времени суток!
Очень нужна помощь. Обычно я работаю с С++, но сейчас пишу реализацию алгоритма Плейфера на шарпе. Проблема следующая: если в исходном тексте встречаются два рядом стоящих одинаковых символа, то между ними ставится разделяющий символ-пустышка (пример "balloon" после обработки "bal*l*o*o*n").
Вот код:
Код:
string text = textBox1.Text;
string pust = "*";
for (int i = 0; i < text.Length; i++)
if (text[i] == text[i + 1])
text = text.Insert(i + 1, pust);
Daelan вне форума Ответить с цитированием
Старый 09.05.2013, 18:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
string text = textBox1.Text;
string pust = "*";
string reg="";
for (int i = 0; i < text.Length; i++){
 if (text[i] == text[i + 1]) reg+=text[i] +pust+ text[++i];
 else reg+=text[i];
}
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.05.2013, 18:45   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
между ними ставится разделяющий символ-пустышка (пример "balloon" после обработки "bal*l*o*o*n").
както пример не согласуется с заданием.

Цитата:
Обычно я работаю с С++
так покажите ее на с++ а мы поможем переделать, я думаю там переделок будет раз два и обчелся
eval вне форума Ответить с цитированием
Старый 09.05.2013, 20:15   #4
Daelan
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 10
По умолчанию

Нет, не подходит, выход за границу строки.
Работающий вариант (сделано на C++ Builder)
Код:
AnsiString MyText = "";
MyText = Form1->Memo1->Text;
  for (int i=1; i<MyText.Length(); i++)
    if (MyText[i] == MyText[i+1])
      MyText = MyText.Insert(Pust,i+1);
Кстати, верно, пример написал с ошибкой. Верный вариант (пример "balloon" после обработки "bal*lo*on"). Спасибо за примечание.

Последний раз редактировалось Daelan; 09.05.2013 в 20:22.
Daelan вне форума Ответить с цитированием
Старый 09.05.2013, 21:24   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выход за границу строки.
От недогадливый....
Ну так поставь там text.Length-1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.05.2013, 21:36   #6
Daelan
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 10
По умолчанию

Мистика, раньше ставил -1, даже -2 от безысходности, но компилятор давал висяка, а сейчас сработало. А может, по запарке не туда вписывал. В любом случае, спасибо большое
Daelan вне форума Ответить с цитированием
Старый 09.05.2013, 22:10   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
раньше ставил -1, даже -2 от безысходности
В Си строки начинают свой отсчет с нуля, соответственно от длины строки нужно отнимать единицу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.05.2013, 14:30   #8
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию

если в исходном тексте встречаются два рядом стоящих одинаковых символа, то между ними ставится разделяющий символ-пустышка (пример "balloon" после обработки "bal*l*o*o*n").
после обработки должно бить так, если по заданию
"bal*lo*on"

Код:
     //string text="balloon";
            char[] mas = textBox1.Text.ToCharArray();
            string result="";
            for (int i = 0; i <mas.Length-1; ++i)
            {
                if (mas[i] == mas[i+1])
                    result += mas[i] + "*";
                else
                    result += mas[i];
            }
            result+= mas[mas.Length - 1];
Serg94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка символов Senjja Microsoft Office Word 14 19.12.2013 14:52
Delphi2010 DBGrid win1251 вставка русских символов в базу (interbase) maLoy*508 Общие вопросы Delphi 5 02.12.2012 23:09
подсчет числа комбинации символов 'ab' во входном потоке символов (Си) skrappy_kokko Помощь студентам 4 14.09.2011 23:10
Вставка произвольных непечатных символов перед шифрованием Zibiv Общие вопросы Delphi 13 01.06.2011 22:57
верно ли, что среди символов данного текста есть n подряд идущих символов, Yuliya-Nik Помощь студентам 0 06.10.2010 23:44