Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2009, 23:38   #1
Михаил70
Пользователь
 
Регистрация: 22.08.2009
Сообщений: 16
По умолчанию Помогите новечку в Delphi

Помогите мне пожалуйста с не очень сложной задачкой.
Вот условие задачи. Это разработка небольшой программки редактора текста.
На форму помещаются следующие компоненты
Label1.caption’Исходная строка’
Label2.caption’Длина строки результата’
Edit1
Edit2
Button1.caption’Редактирование’
Button2.caption’Выход’
В Edit1 Записывается строка текста. При нажатии на кнопку Button1.caption’Редактирование’
Удаляются в строке все одинаковые символы и в поле Edit2 получаем результат, который выводиться на Label2.caption’Длина строки результата’ = ..................

Не знаю. Надеюсь понятно объяснил. Помогите пожалуйста.
Михаил70 вне форума Ответить с цитированием
Старый 23.08.2009, 01:00   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Код:
function dlt(ch:string; s:string; index:integer):string;
var
 n:integer;
begin
  n:=index+1;
  while n <= length(s) do
  if s[n]=ch then delete(s,n,1) else inc(n);
  Result:=s;
end;



Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=1;
  asd:=edit1.Text;
  while i<=length(asd) do
  begin
    asd:=dlt(asd[i], asd,i);
    inc(i);
  end;
  edit2.Text:=asd;
  label1.caption:=inttostr(length(asd));
end;

Последний раз редактировалось TwiX; 23.08.2009 в 20:42.
TwiX вне форума Ответить с цитированием
Старый 23.08.2009, 21:10   #3
Михаил70
Пользователь
 
Регистрация: 22.08.2009
Сообщений: 16
По умолчанию

Мне не совсем понятно какие тут объявлять переменные

причом забыл сказать, что одна строка должна назваться s
Михаил70 вне форума Ответить с цитированием
Старый 23.08.2009, 21:27   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

i:integer;
asd:string;//сюда едит записываем
TwiX вне форума Ответить с цитированием
Старый 23.08.2009, 23:24   #5
Михаил70
Пользователь
 
Регистрация: 22.08.2009
Сообщений: 16
По умолчанию

У меня получился вот такой код, но программа почемуто не работает.
Компилятор выдает ошибку на строке a,s,d:=edit1.Text;
Вот какой у меня получился код. Подскажите где тут ошибка

Код:
var
  Form1: TForm1;
     i:integer;
a,s,d:string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   i:=1;
  a,s,d:=edit1.Text;
  while i<=length(a,s,d) do
  begin
    a,s,d:=dlt(asd[i], asd,i);
    inc(i);
  end;
  edit2.Text:=asd;
  label1.caption:=inttostr(length(a,s,d));
end;

end.
И еще подскажите какой условный оператор обеспечивает сравнение символов в строке

Последний раз редактировалось Stilet; 25.08.2009 в 09:07.
Михаил70 вне форума Ответить с цитированием
Старый 23.08.2009, 23:33   #6
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

1. a,s,d - это три разных переменных xD
asd:string

2. как Вы понимаете сравнение символов?
s[i] - i-ый символ в строке s
TwiX вне форума Ответить с цитированием
Старый 23.08.2009, 23:48   #7
Михаил70
Пользователь
 
Регистрация: 22.08.2009
Сообщений: 16
По умолчанию

Я исправил
теперь компилятор выдает ошибку на строке

asd:=dlt(asd[i], asd,i);
Михаил70 вне форума Ответить с цитированием
Старый 24.08.2009, 00:33   #8
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Человек хочет научиться.... Не жадничайте на коментарии.

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var
  a, b : Integer; //Переменые для циклов.
  S : String; //Наша строка из Edit1.
  Z : String; //Вспомогательная строка для неповторных символов.
  P : Boolean; //Флаг регистрирующий повторность символа.
Begin
//На всякий случай установим значения переменых.
Z := ''; P := False;
//Присвоим переменой S значение из Edit1
S := Edit1.Text;
//В цикле пройдёмся по всей строке S.
For a := 1 To Length(S) Do
  Begin
    //Проходим в цикле по всей строке Z.
    //Если в строке Z уже есть символ S[a],
    //то выставляем флаг P в True.
    //Если в строке Z символ S[a] не встретился,
    //Значит флаг P остался False.
    For b := 1 To Length(Z) Do If S[a] = Z[b] Then P := True;
    //Проверим чему равен флаг P.
    //Если флаг равен False то мы добавляем символ S[a] в строку Z.
    //Если в True, то мы просто переводим флаг P в False.
    If P = False Then Z := Z + S[a] Else P := False;
  End;
//После выполнения вышеприведённого цикла в строке Z будут находиться
//Все символы, без повторов, строки S.
Edit2.Text := Z;
End;

Procedure TForm1.Button2Click(Sender: TObject);
Begin
//Закрываем приложение.
Close;
End;
Для справки:
Цикл For : http://www.delphibasics.ru/For.php
Функция Length : http://www.delphibasics.ru/Length.php
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 24.08.2009, 00:34   #9
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

случайно не забыли вставить
Цитата:
function dlt(ch:string; s:string; index:integer):string;
var
n:integer;
begin
n:=index+1;
while n <= length(s) do
if s[n]=ch then delete(s,n,1) else inc(n);
Result:=s;
end;
перед procedure TForm1.Button1Click(Sender: TObject);
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 24.08.2009, 00:36   #10
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Что за ошибка?
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с БД на Delphi aks Помощь студентам 11 20.02.2009 15:46
Помогите с Delphi Lenusik Помощь студентам 0 31.05.2008 21:36
Помогите новечку в изучении InterBase Tarnym БД в Delphi 3 27.11.2007 18:14