![]() |
|
|
#1
|
|||
|
|||
|
Программа которая при вводе слова, считает количество согласных латинских букв и в ответе выдаёт это слово плюс этоже слово в перевернутом видео столько раз, сколько согласных букв в этом слове.
Всё готово, только немогу перевернуть. Подкскажите пожалуйста как. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetConsonantCount (S: string): Integer;
const
Consonants: set of Char = ['b','c','d','f','g','h','k','l','m','n','p','r','s','t','v','z','x'];
var
I: Integer;
begin
Result := 0;
S := LowerCase(S);
for I := 1 to Length(S) do
begin
if S[i] in Consonants then
Inc(Result)
end
end;
function Count (const S: string): string;
var
I: Integer;
ConsonantCount: Integer;
begin
ConsonantCount := GetConsonantCount(S);
for I := 0 to ConsonantCount do
Insert (S,Result,I*(Length(S)+1));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Count(Edit1.Text)
end;
end. |
|
#2
|
|||
|
|||
|
Код:
function ReverseStr(const S: String): String;
var
L, i: Integer;
begin
L := Length(S);
Result := '';
for i := 1 to L do
Result := Result + S[L - i + 1];
end; |
|
#3
|
|||
|
|||
|
Спасибо, а как мне правильно интегрировать его в текст программы? Я пробую, не получается.
![]() |
|
#4
|
|||
|
|||
|
Если я правильно понял, что введенное слово находится в Edit1, тогда примерно так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var N: Integer; S: String; begin Edit2.Text := Count(Edit1.Text) Memo1.Clear; Memo1.Lines.Add(Edit1.Text); // Само введенное слово N := GetConsonantCount(Edit1.Text); // количество согласных S := ReverseStr(Edit1.Text); // переворачиваем слово While (N > 0) do begin // столько раз сколько согласных Memo1.Lines.Add(S); // добавляем слово в TMemo на форме N := N - 1; end; end; |
|
#5
|
|||
|
|||
|
Сам незнаю, в институте измываются над нами
Нет, для вывода используется Edit2.Text . Не получается что то. ошибки выдаёт |
|
#6
|
|||
|
|||
|
Цитата:
Как вы планировали работу программы организовать? Т.е. - вот есть Edit1, вводим туда текст, жмем кнопку - и? Куда нужно результаты выводить и в каком виде? |
|
#7
|
|||
|
|||
|
Хмм. На форме есть Edit1, Edit2 и Button1. В Edit1 я ввожу например слово "asd" , нажимаю на Button1 , и в получаю ответ в Edit2: "asddsadsa" .(т.е. в слове asd две согласные, значит он два раза приклеивает это слово в перевёрнутом виде). Воть
но на данном этапе программы, тот код что я выложил в самом начале, мой ответ в Edit2 : asdasdasd " ![]() |
|
#8
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function CountConsonants(S: String): LongInt;
const
ConsonantChars: Set of Char =
['b','c','d','f','g','h','k','l','m','n','p','r','s','t','v','z','x'];
var
L, i: LongInt;
begin
L := Length(S);
S := AnsiLowerCase(S);
Result := 0;
for i := 1 to L do
if S[i] in ConsonantChars then
Result := Result + 1;
end;
function ReverseStr(const S: String): String;
var
L, i: Integer;
begin
L := Length(S);
Result := '';
for i := 1 to L do
Result := Result + S[L - i + 1];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N: LongInt;
S: String;
begin
N := CountConsonants(Edit1.Text);
S := ReverseStr(Edit1.Text);
Edit2.Text := Edit1.Text;
while (N > 0) do begin
Edit2.Text := Edit2.Text + S;
N := N - 1;
end;
end;
end. |
|
#9
|
|||
|
|||
|
Ааааа, это просто магия. Спасибо огромное!!!
|
|
#10
|
|||
|
|||
|
Теперь не надо писать цикл для переворота, в модуле StrUtils есть такая фунция, напр.
Код:
Edit2.Text:= AnsiReverseString(Edit1.Text) |
|
#11
|
|||
|
|||
|
Цитата:
|