Консультация № 161367
25.02.2009, 12:34
0.00 руб.
0 1 1
Уважаемые эксперты помогите составить программу, которая позволяет ввести с клавиатуры произвольный текст и произвольный символ; считает, сколько раз данный символ встречается в заданном тексте и окрашивает эти символы в красный цвет. Далее программа обращает текст (переворачивает его задом наперед) и сообщает его длину.

Обсуждение

Неизвестный
25.02.2009, 16:44
общий
это ответ
Здравствуйте, iren26!

Код с комментариями в приложении. Процедура Button1Click считает сколько раз символ, заданный в поле Edit1, встречается в тексте и окрашивает в красный цвет.
Процедура Button2Click выводит общее количество символов, переворачивает текст и добавляет к набранному.
Удачи!

Приложение:
procedure TForm1.Button1Click(Sender: TObject);
var
k:integer;
NChar:integer; //кол-во символов
c:char;
begin
NChar:=0;
k:=1;
c:=Edit1.text[1];
while k<=Length(RichEdit1.Text) do
begin
if RichEdit1.Text[k]=c then
begin
RichEdit1.SelStart:=k-1; //если символ равен заданному
RichEdit1.SelLength:=1; //выделяем его
RichEdit1.SelAttributes.Color:=clRed; //и окрашиваем в красный
inc(NChar); //увеличиваем кол-во символов
end;
inc(k);
end;
Label1.Caption:=IntToStr(NChar);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
k,k1:integer; //k - номер абзаца, k1 - позиция символа в абзаце
S:string;
begin
//Считаем длину текста
Label2.Caption:=IntToStr(Length(RichEdit1.Text));
//Переворачиваем текст по абзацам
//начиная с последнего
for k:=RichEdit1.Lines.Count-1 downto 0 do
begin
S:='';
for k1:=1 to Length(RichEdit1.Lines.Strings[k]) do
S:=RichEdit1.Lines.Strings[k][k1]+S;
RichEdit1.Lines.Add(S)
end;
end;
Форма ответа