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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2014, 21:51   #1
David Backham
Новичок
Джуниор
 
Регистрация: 14.12.2014
Сообщений: 1
По умолчанию [Pascal] Задача на тип String

Формулировка задачи:
"Перечислить все слова каждого предложения, которые состоят из тех же букв, что и первое слово данного предложения. Из этих слов организовать новое предложение и записать его в конец исходного текста."
Собственно, текст я загружаю из текстового файла.Потом добавляю каждое предложение в массив, после этого первое слово каждого предложения я добавляю в переменную типа string. А дальше у меня вопрос : Как мне добавить переменную содержащую буквы первого слова во множество, сравнить это множество с остальными словами предложения и сделать это в цикле(так как предложений несколько)?
Вот то, что получилось:
Код:
const
  mnr = [' ', ',', '.', '-', '_', ':', ';'];
  mnp = ['!', '.', '?'];
 
var
  A: array[1..30] of string;
  i, n, j, np, k, g, l,d,np: byte;
  s, s1, s2, buf, st: string;
  f: text;
  mnr, mnp: set of char;
 
begin
  mnr:=mnr+mnp;
  assign(f, 'text.txt');
  reset(f);
  while not eof(f) do 
  begin
    read(f, s);
    write(s);
  end;
  writeln;
 for i:=1 to length(s) do               {предложения в массив}
    if not (s[i] in mnp) then s1:=s1+s[i] else
       if length(s1)>0 then
          begin
          k:=0;
          for j:=1 to d do
              if A[j]=s1 then inc(k);
          if k=0 then
             begin
             inc(d);
             a[d]:=s1;
             end;
          s1:='';
          end;
 
   
    
    for i := 1 to d do     {добавляем первое слово каждого предложения в переменную s2} 
  begin
    s1 := a[i];
    for j := 1 to length(s1) do 
    begin
      if not (s1[j] in mnr) then s2 := s2 + ' '
      else
      begin
        np := j;
        break;
      end;
    end;
    
    for k := 1 to length(s2) do {добавляем буквы первого слова во множество}
    begin
      if not (s2[k] in mnr) then begin
        mn1sl :=[s2[k]];
??????????
David Backham вне форума Ответить с цитированием
Старый 15.12.2014, 11:27   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

есть вариант добавлять в массив не все предложения а по одному и индексировать слова. проверку делать в цикле по файлу

if (s[i]//слово in mn1sl//множество букв из первого слова) then записываем в новый массив.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Читатели библиотеки - задача на тип запись (record) в Pascal\Delphi Ski Помощь студентам 1 15.05.2012 21:43
Тип String Руся93 Помощь студентам 1 23.10.2011 12:55
тип данных string на pascal knopach Помощь студентам 2 15.12.2010 16:28
Pascal (тип String и массивы). 4otenado Помощь студентам 8 25.12.2009 18:11
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13