Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [delphi] сравнение слов, найти схожие слова в двух предложениях 
V
    Опции темы
TwisT_X
Дата 18.10.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Доброго суток дня!
Задание: Создать приложение, которое будет находить общее слово двух заданных предложений..

Вот примерный код, который я уже "накалякал":

Код

procedure TForm1.Button1Click(Sender: TObject);
var tmp, s1, s2: string;
    i, j, p: byte;
    ms1, ms2: array of string;
begin
  s1:= edit1.Text;
  s2:= edit2.Text;
  p:=0;
  tmp:= '';
  for i:= 1 to length(s1) do
    if ((s1[i]<>' ') or (s1[i]<>'.') or (s1[i]<>','))
      then tmp:= tmp+s1[i]
      else begin
        setlength(ms1, p+1);
        ms1[p]:= tmp;
        tmp:= '';
        inc(p);
      end;
  p:= 0; tmp:= '';
  for i:= 1 to length(s2) do
    if ((s2[i]<>' ') or (s2[i]<>'.') or (s2[i]<>','))
      then tmp:= tmp+s2[i]
      else begin
        setlength(ms2, p+1);
        ms2[p]:= tmp;
        tmp:= '';
        inc(p);
      end;
  for i:= 0 to length(ms1)-1 do
    for j:= 0 to length(ms2)-1 do
      if ms1[i]=ms2[j]
        then label1.Caption:= ms1[i];
end;


Компилится нормально, но при нажатии на кнопу выдает ошибку в адресе памяти.. Я понимаю, что это связано как-то с массивами, но как исправить не догадываюсь.. Подскажите пожалуйста smile


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Rodman
Дата 18.10.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



а динамический массив обязателен?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
TwisT_X
Дата 18.10.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



а как если не через массив? через укзатели? вдруг слово не одно а несколько их?)))


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
volvo877
Дата 18.10.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



TwisT_X, может, одного массива хватит?

Код

procedure TForm1.Button1Click(Sender: TObject);
var tmp, s1, s2: string;
    i, j: byte;
    ms: array of string;
begin
  s1:= edit1.Text + ' ';
  s2:= edit2.Text + ' ';

  SetLength(ms, 0);
  for i := 1 to Length(s1) do begin
    if not (s1[i] in [' ', ',', '.']) then tmp := tmp + s1[i]
    else begin
      setlength(ms, Length(ms) + 1);
      ms[Length(ms) - 1] := tmp; tmp := '';
    end;
  end;

  label1.Caption := '';
  for i := 1 to length(s2) do begin
    if not (s2[i] in [' ', ',', '.']) then tmp := tmp + s2[i]
    else begin

      for j := 0 to Length(ms) - 1 do begin
        if ms[j] = tmp then begin
          label1.Caption := label1.Caption + tmp + ' ';
          break;
        end;
      end;
      tmp := '';

    end;
  end;

  SetLength(ms, 0);
end;

PM MAIL   Вверх
TwisT_X
Дата 18.10.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



volvo877, большое спасибо.. щас поисчу в чем у меня были ошибки..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.