Другие языки программирования и технологии

Помогите написать прогу на с++.

Дан произвольный текст, состоящий из слов. Отредактировать его, оставив между словами по одному пробелу, а между предложениями по два.
Вот тект на билдере. Если прога должна быть написана не на билдере то нужно просто по другому инициализировать str и len, вместо обработчика "void __fastcall TForm2::Button1Click(TObject *Sender)" поставить обычную ф-ю, а также изменить способ отображения результата ShowMessage(str_result). В остальном все дано в общем виде.

//Параметр определяющий положение символа в тексте:
enum TMod {
ISNone,//перед текстом
IsWord,// в слове
WordBlank,//в промежутке между словами
SentenceBlank//в промежутке между предложениями
} Mod;
//Функция добавления символа к новому тексту
void StrAddChar (char * &Str, char Char, int &pos)
{
Str =(char*) realloc(Str,++pos);
Str[pos-1] = Char;
Str[pos] = 0;
return;
}

//Основная функция
void __fastcall TForm2::Button1Click(TObject *Sender)
{
char * str = Memo1->Text.c_str();//Исходный текст
int len = Memo1->Text.Length();//Длина текста
char * str_result = new char (1);//Новый текст
int Pos = 0;//Положение в новом тексте

for (int i = 0; i< len; i++)
{
if (str == '.') //Начало промежутка между предложениями
{
Mod = SentenceBlank;
StrAddChar(str_result,str, Pos);
StrAddChar(str_result,' ', Pos);
StrAddChar(str_result,' ', Pos);
}
if (str == ' ' && Mod == IsWord)//Начало промежутка между словами
{
Mod = WordBlank;
StrAddChar(str_result,str, Pos);
}
if (str != ' ' && str != '.')//Начало слова
{
Mod = IsWord;
StrAddChar(str_result,str, Pos);
}
}
ShowMessage(str_result);
free (str_result);
}
ДК
Димитрий Керавич
2 224
Лучший ответ
я с++ тока начал учить так что просто исходник дать не смогу.... вообще пишу на делфе..., так что просто расскажу принцип.
Если вы работаете в С++ билдер от борланд все элементарно:
Ставим на форму компонент мемо (сюда текст вводить будут)
и кнопку (инициатор действия)
нам понадобятся 3 переменные
a: integer (для цикла)
s: string (сюда текст загоняем)
по нажатии на кнопку присваеваем переменной S (string) значения текста в мемо1 (помойму так но точно не помню s=Memo1.Text;).
Потом простым FOR перебираем весь этот текст проверяя каждый символ ни равен ли он случайно точке.. . и если он равен точке то просто впереди точки добавляем один " " (пробел в смысле)
Валера 777
Валера 777
1 482