//------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int kolprobelov;
int numedit;
char ch[19] = {'b', 'c', 'd', 'f', 'g', 'h', 'k', 'l', 'm', 'n',
'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'};
char glac[7] = {'a', 'e', 'i', 'j', 'o', 'u', 'y'};
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString tempword1;
char *tempword2;
kolprobelov = 0;
AnsiString str = Edit1->Text;
// Удаляем точку
str.Delete(Edit1->Text.Length(), 1);
// Ставим в конце предложения пробел
str.Insert(" ", Edit1->Text.Length());
// Определение количества пробелов
for (int i = 1; i <= Edit1->Text.Length(); i++)
{
if (str == ' ')
kolprobelov += 1;
}
// Динамическое создание компонентов под слово
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = new TEdit(this);
edit->Parent = this;
edit->Name = "edit"+AnsiString(numedit);
edit->Height = 21;
edit->Width = 121;
edit->Left = 448;
edit->Top = (i+10)*edit->Height;
edit->Text = "";
numedit += 1;
}
// Разбиваем предложение на слова
numedit = 3;
for (int i = 1; i <= str.Length(); i++)
{
AnsiString word = "";
if (str == ' ')
{
for (int j = 1; j < i; j++)
word += str[j];
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
edit->Text = word;
numedit += 1;
str.Delete(1, i);
i = 1;
}
}
// Редактирование предложения
numedit = 3;
char *symbols = new char [kolprobelov];
for (int i = 0; i < kolprobelov; i++)
{
tempword1 = "";
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
tempword1 = edit->Text;
tempword2 = tempword1.c_str();
symbols = tempword2[0];
numedit++;
}
// Сортировка
int k, x;
for( int i = 0; i < kolprobelov; i++)
{ // i - номер текущего шага
k = i;
x = symbols;
for ( int j = i+1; j < kolprobelov; j++) // цикл выбора наименьшего
элемента
{
if ( symbols[j] < x )
{
k = j;
x = symbols[j]; // k - индекс наименьшего элемента
}
}
symbols[k] = symbols;
symbols = x; // меняем местами наименьший с symbols
}
// Вывод
for (int i = 3; i < kolprobelov+2; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 7; j++)
{
if (tempword2[0] == symbols)
Memo1->Lines->Add(edit->Text);
}
}
for (int i = 3; i < kolprobelov+2; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 19; j++)
{
if (tempword2[0] == symbols)
Memo1->Lines->Add(edit->Text);
}
}
}
//------------------------------------------------------------------------
// Удаление слов
void __fastcall TForm1::Button2Click(TObject *Sender)
{
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
delete edit;
numedit +=1;
}
}
//------------------------------------------------------------------------
Упорядочить слова в предложении
То есть, если у меня предложение такое.
hard you down read.
Должно быть так
you down hard read
Я хочу пока только построчно вывести слова в нужном порядке.
Но в Memo1 вообще ни чего не выводится.
Подскажите пожалуйста, что я не так сделал.
Вот код.
Код:
Цитата:
То есть, если у меня предложение такое.
hard you down read.
Должно быть так
you down hard read
че то я не увидел здесь никакого смысла?
упорядочить по какому признаку надо?
Ну сначала все слова начинающиеся с гласной в порядке их возростания, а затем слова начинающиеся с согласной в порядке их возростания.
Код:
Set <char, 'a, 'y'> gl_set;
Set <char, 'b', 'z'> sogl_set;
gl_set<<'a'<< 'e'<< 'i'<< 'j'<< 'o'<< 'u'<< 'y';
sogl_set<<'b'<< 'c'<< 'd'<< 'f'<< 'g'<< 'h'<< 'k'<< 'l'<< 'm'<< 'n'<< 'p'<< 'q'<< 'r'<< 's'<< 't'<< 'v'<< 'w'<< 'x'<< 'z';
TStringList *lst = new TStringList;
TStringList *tmplst = new TStringList;
lst->Delimiter = ' ';
lst->DelimitedText = Edit1->Text;
for (int i=0;i<lst->Count; i++)
if (!sogl_set.Contains(lst->Strings[1]))tmplst->Add(lst->Strings);
tmplst->Sort();
AnsiString str;
for (int i=0;i<tmplst->Count; i++)
str+= tmplst->Strings + " ";
lst->Clear();
tmplst->Clear();
lst->Delimiter = ' ';
lst->DelimitedText = Edit1->Text;
for (int i=0;i<lst->Count; i++)
if (!gl_set.Contains(lst->Strings[1]))tmplst->Add(lst->Strings);
tmplst->Sort();
for (int i=0;i<tmplst->Count; i++)
str+= tmplst->Strings + " ";
delete lst;
delete tmplst;
Edit1->Text = str;
Set <char, 'b', 'z'> sogl_set;
gl_set<<'a'<< 'e'<< 'i'<< 'j'<< 'o'<< 'u'<< 'y';
sogl_set<<'b'<< 'c'<< 'd'<< 'f'<< 'g'<< 'h'<< 'k'<< 'l'<< 'm'<< 'n'<< 'p'<< 'q'<< 'r'<< 's'<< 't'<< 'v'<< 'w'<< 'x'<< 'z';
TStringList *lst = new TStringList;
TStringList *tmplst = new TStringList;
lst->Delimiter = ' ';
lst->DelimitedText = Edit1->Text;
for (int i=0;i<lst->Count; i++)
if (!sogl_set.Contains(lst->Strings[1]))tmplst->Add(lst->Strings);
tmplst->Sort();
AnsiString str;
for (int i=0;i<tmplst->Count; i++)
str+= tmplst->Strings + " ";
lst->Clear();
tmplst->Clear();
lst->Delimiter = ' ';
lst->DelimitedText = Edit1->Text;
for (int i=0;i<lst->Count; i++)
if (!gl_set.Contains(lst->Strings[1]))tmplst->Add(lst->Strings);
tmplst->Sort();
for (int i=0;i<tmplst->Count; i++)
str+= tmplst->Strings + " ";
delete lst;
delete tmplst;
Edit1->Text = str;
А в моём коде почему в Memo1 ни чего не выводится.
Вот код
Код:
// Сортировка
int min;
for ( int i = 0; i < kolprobelov-1; ++i )
{
int min = i;
for ( int j = i + 1; j < kolprobelov; ++j )
if ( symbols[min] > symbols[j] )
min = j;
char tmp = symbols;
symbols = symbols[min];
symbols[min] = tmp;
}
int min;
for ( int i = 0; i < kolprobelov-1; ++i )
{
int min = i;
for ( int j = i + 1; j < kolprobelov; ++j )
if ( symbols[min] > symbols[j] )
min = j;
char tmp = symbols;
symbols = symbols[min];
symbols[min] = tmp;
}
Проверил её
Вот код
Код:
for (int i = 0; i < kolprobelov; i++)
{
for (int j = 0; j < 7; j++)
{
if (symbols == glac[j])
Memo1->Lines->Add(symbols);
}
}
for (int i = 0; i < kolprobelov; i++)
{
for (int j = 0; j < 19; j++)
{
if (symbols == ch[j])
Memo1->Lines->Add(symbols);
}
}
{
for (int j = 0; j < 7; j++)
{
if (symbols == glac[j])
Memo1->Lines->Add(symbols);
}
}
for (int i = 0; i < kolprobelov; i++)
{
for (int j = 0; j < 19; j++)
{
if (symbols == ch[j])
Memo1->Lines->Add(symbols);
}
}
Результат работы я ввожу
sd a hg mpr yy aa.
Вывод
a
a
y
h
m
s
Но как сделать чтобы правельно работал этот код непойму, помогите пожалуйста.
Код
Код:
for (int i = 3; i < kolprobelov+2; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 7; j++)
{
if (tempword2[0] == glac[j])
Memo1->Lines->Add(edit->Text);
}
}
for (int i = 3; i < kolprobelov+2; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 19; j++)
{
if (tempword2[0] == ch[j])
Memo1->Lines->Add(edit->Text);
}
}
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 7; j++)
{
if (tempword2[0] == glac[j])
Memo1->Lines->Add(edit->Text);
}
}
for (int i = 3; i < kolprobelov+2; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(i));
tempword1 = edit->Text;
char *tempword2 = tempword1.c_str();
for (int j = 0; j < 19; j++)
{
if (tempword2[0] == ch[j])
Memo1->Lines->Add(edit->Text);
}
}
Результат этого кода
a
yy
sd
hg
mpr
А должно быть так
a
aa
yy
hg
mpr
sd
Помогите пожалуйста.
Код:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int kolprobelov;
int numedit;
char ch[19] = {'b', 'c', 'd', 'f', 'g', 'h', 'k', 'l', 'm', 'n',
'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'};
char glac[7] = {'a', 'e', 'i', 'j', 'o', 'u', 'y'};
AnsiString NewNas[100] ={" "};
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString tempword1;
char *tempword2;
kolprobelov = 0;
AnsiString str = Edit1->Text;
str.Delete(Edit1->Text.Length(), 1);
str.Insert(" ", Edit1->Text.Length());
for (int i = 1; i <= Edit1->Text.Length(); i++)
{
if (str == ' ')
kolprobelov += 1;
}
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = new TEdit(this);
edit->Parent = this;
edit->Name = "edit"+AnsiString(numedit);
edit->Height = 21;
edit->Width = 121;
edit->Left = 448;
edit->Top = (i+10)*edit->Height;
edit->Text = "";
numedit += 1;
}
numedit = 3;
int z=0;
for (int i = 1; i <= str.Length(); i++)
{
AnsiString word = "";
if (str == ' ')
{
for (int j = 1; j < i; j++)
word += str[j];
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
edit->Text = word;
NewNas[z] = word;
z++;
numedit += 1;
str.Delete(1, i);
i = 1;
}
}
//Sorting
for ( int i = 0; i < kolprobelov-1; i++)
{
for (int j=0; j < kolprobelov-1; j++)
{
AnsiString slowo = " ";
if (strcmp(NewNas[j].c_str(), NewNas[j+1].c_str()) >= 0)
{
/*AnsiString temp = glac[j];
if (strcmp(NewNas[j].c_str(), temp.c_str()) == 0)
{*/
slowo = NewNas[j];
NewNas[j] = NewNas[j+1];
NewNas[j+1] = slowo;
//}
}
}
}
for ( int z = 0; z < kolprobelov; z++)
Memo1->Lines->Add(NewNas[z]);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
delete edit;
numedit +=1;
}
}
//------------------------------------------------------------------------
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int kolprobelov;
int numedit;
char ch[19] = {'b', 'c', 'd', 'f', 'g', 'h', 'k', 'l', 'm', 'n',
'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'};
char glac[7] = {'a', 'e', 'i', 'j', 'o', 'u', 'y'};
AnsiString NewNas[100] ={" "};
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString tempword1;
char *tempword2;
kolprobelov = 0;
AnsiString str = Edit1->Text;
str.Delete(Edit1->Text.Length(), 1);
str.Insert(" ", Edit1->Text.Length());
for (int i = 1; i <= Edit1->Text.Length(); i++)
{
if (str == ' ')
kolprobelov += 1;
}
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = new TEdit(this);
edit->Parent = this;
edit->Name = "edit"+AnsiString(numedit);
edit->Height = 21;
edit->Width = 121;
edit->Left = 448;
edit->Top = (i+10)*edit->Height;
edit->Text = "";
numedit += 1;
}
numedit = 3;
int z=0;
for (int i = 1; i <= str.Length(); i++)
{
AnsiString word = "";
if (str == ' ')
{
for (int j = 1; j < i; j++)
word += str[j];
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
edit->Text = word;
NewNas[z] = word;
z++;
numedit += 1;
str.Delete(1, i);
i = 1;
}
}
//Sorting
for ( int i = 0; i < kolprobelov-1; i++)
{
for (int j=0; j < kolprobelov-1; j++)
{
AnsiString slowo = " ";
if (strcmp(NewNas[j].c_str(), NewNas[j+1].c_str()) >= 0)
{
/*AnsiString temp = glac[j];
if (strcmp(NewNas[j].c_str(), temp.c_str()) == 0)
{*/
slowo = NewNas[j];
NewNas[j] = NewNas[j+1];
NewNas[j+1] = slowo;
//}
}
}
}
for ( int z = 0; z < kolprobelov; z++)
Memo1->Lines->Add(NewNas[z]);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
delete edit;
numedit +=1;
}
}
//------------------------------------------------------------------------
Но это не совсем правильно, так как
я ввожу
sd a hg mpr yy aa.
А результат такой
a
aa
hg
mpr
sd
yy
А должен быть такой
a
aa
yy
hg
mpr
sd
Помогите пожалуйста.
(sd a hg mpr yy aa) => (a aa yy hg mpr sd)
Просто хочется написать дригим способом.
Цитата: zuze
Просто хочется написать дригим способом.
F1 и F8 в помощь
Вот код
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include<iostream>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int kolprobelov;
int numedit;
AnsiString ch[19] = {"b", "c", "d", "f", "g", "h", "k", "l", "m", "n",
"p", "q", "r", "s", "t", "v", "w", "x", "z"};
AnsiString glac[7] = {"a", "e", "i", "j", "o", "u", "y"};
AnsiString NewNas[100] ={" "};
int number1=0;
using namespace std;
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString tempword1;
char *tempword2;
kolprobelov = 0;
AnsiString str = Edit1->Text;
str.Delete(Edit1->Text.Length(), 1);
str.Insert(" ", Edit1->Text.Length());
for (int i = 1; i <= Edit1->Text.Length(); i++)
{
if (str == ' ')
kolprobelov += 1;
}
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = new TEdit(this);
edit->Parent = this;
edit->Name = "edit"+AnsiString(numedit);
edit->Height = 21;
edit->Width = 121;
edit->Left = 448;
edit->Top = (i+10)*edit->Height;
edit->Text = "";
numedit += 1;
}
numedit = 3;
int z = 0;
for (int i = 1; i <= str.Length(); i++)
{
AnsiString word = "";
if (str == ' ')
{
for (int j = 1; j < i; j++)
word += str[j];
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
edit->Text = word;
NewNas[z] = word;
z++;
numedit += 1;
str.Delete(1, i);
i = 1;
}
}
// Sorting
for (int j = 0; j < kolprobelov; j++)
{
AnsiString slowo = " ";
for (int z = 0; z < 7; z++)
{
if ((strncmp(NewNas[j].c_str(),glac[z].c_str(),1) == 0))
{
swap(NewNas[number1],NewNas[j]);
number1++;
}
}
}
for (int i = 0; i < number1-1; i++)
{
for (int j = 0; j < number1-1; j++)
{
AnsiString slowo = " ";
if ((strcmp(NewNas[j].c_str(),NewNas[j+1].c_str()) >= 0))
{
slowo = NewNas[j];
NewNas[j]=NewNas[j+1];
NewNas[j+1]=slowo;
}
}
}
for (int i = number1; i < kolprobelov-1; i++)
{
for (int j = number1; j < kolprobelov-1; j++)
{
AnsiString slowo = " ";
if ((strcmp(NewNas[j].c_str(),NewNas[j+1].c_str()) >= 0))
{
slowo = NewNas[j];
NewNas[j]=NewNas[j+1];
NewNas[j+1]=slowo;
}
}
}
for ( int k = 0; k < kolprobelov; k++)
Memo1->Lines->Add(NewNas[k]);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
delete edit;
numedit +=1;
}
}
//------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include<iostream>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int kolprobelov;
int numedit;
AnsiString ch[19] = {"b", "c", "d", "f", "g", "h", "k", "l", "m", "n",
"p", "q", "r", "s", "t", "v", "w", "x", "z"};
AnsiString glac[7] = {"a", "e", "i", "j", "o", "u", "y"};
AnsiString NewNas[100] ={" "};
int number1=0;
using namespace std;
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString tempword1;
char *tempword2;
kolprobelov = 0;
AnsiString str = Edit1->Text;
str.Delete(Edit1->Text.Length(), 1);
str.Insert(" ", Edit1->Text.Length());
for (int i = 1; i <= Edit1->Text.Length(); i++)
{
if (str == ' ')
kolprobelov += 1;
}
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = new TEdit(this);
edit->Parent = this;
edit->Name = "edit"+AnsiString(numedit);
edit->Height = 21;
edit->Width = 121;
edit->Left = 448;
edit->Top = (i+10)*edit->Height;
edit->Text = "";
numedit += 1;
}
numedit = 3;
int z = 0;
for (int i = 1; i <= str.Length(); i++)
{
AnsiString word = "";
if (str == ' ')
{
for (int j = 1; j < i; j++)
word += str[j];
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
edit->Text = word;
NewNas[z] = word;
z++;
numedit += 1;
str.Delete(1, i);
i = 1;
}
}
// Sorting
for (int j = 0; j < kolprobelov; j++)
{
AnsiString slowo = " ";
for (int z = 0; z < 7; z++)
{
if ((strncmp(NewNas[j].c_str(),glac[z].c_str(),1) == 0))
{
swap(NewNas[number1],NewNas[j]);
number1++;
}
}
}
for (int i = 0; i < number1-1; i++)
{
for (int j = 0; j < number1-1; j++)
{
AnsiString slowo = " ";
if ((strcmp(NewNas[j].c_str(),NewNas[j+1].c_str()) >= 0))
{
slowo = NewNas[j];
NewNas[j]=NewNas[j+1];
NewNas[j+1]=slowo;
}
}
}
for (int i = number1; i < kolprobelov-1; i++)
{
for (int j = number1; j < kolprobelov-1; j++)
{
AnsiString slowo = " ";
if ((strcmp(NewNas[j].c_str(),NewNas[j+1].c_str()) >= 0))
{
slowo = NewNas[j];
NewNas[j]=NewNas[j+1];
NewNas[j+1]=slowo;
}
}
}
for ( int k = 0; k < kolprobelov; k++)
Memo1->Lines->Add(NewNas[k]);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
numedit = 3;
for (int i = 0; i < kolprobelov; i++)
{
TEdit *edit = (TEdit*)FindComponent("edit"+AnsiString(numedit));
delete edit;
numedit +=1;
}
}
//------------------------------------------------------------------------