• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Строки в Lazarus

  • Автор темы Автор темы NAt
  • Дата начала Дата начала

NAt

Новые
Регистрация
9 Дек 2012
Сообщения
45
Реакции
0
Баллы
0
Строки в Lazarus

Здравствуйте, подскажите пожалуйста с задачей: Дана строка текста. Найти номер позиции, где находится последняя точка. Далее отсортировать буквы по алфавиту, которые расположены после этой последней точки.что я тут не правильно делаю:
var x,x1:string;
k,i,j:integer;
begin
k:=length(Edit1.Text);
for i:=1 to k do
begin
if Edit1.Text='.' then
Edit2.Text:=IntToStr(i);
end;
for i:=IntToStr(i) to k do
begin
for j:=IntToStr(i) to k-1 do
begin
if Edit1.Text[j]>Edit1.Text[j+1] then
begin
Edit3.Text:=Edit1.Text[j];
Edit1.Text[j]:=Edit1.Text[j+1];
Edit1.Text[j+1]:= Edit3.Text;
end;
end;
 
Если честно, то программу наверняка можно оптимизировать. Сорри, но леньки...
Код:
var x1:string;
    k,i,j,l,n:integer;
    x: char;
begin
     k:=length(Edit1.Text);
     for i:=0 to k do
     begin
          if Edit1.Text[i]='.' then
             begin
             Edit2.Text:=IntToStr(i);
             n := i+1;
             end;
     end;

     x1 := Edit1.Text;
     for l:=n to k do
     begin
          for j:=n to k do
          begin
               if x1[l] < x1[j] then
               begin
                    x := x1[l];
                    x1[l] := x1[j];
                    x1[j] := x;
               end;
          end;
     end;
     Edit1.text := x1;
end;
 
Назад
Сверху