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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2014, 12:25   #1
Nil09511
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 13
По умолчанию Строки в паскале

Помогите доделать программу. Т.е. чтобы один или несколько пробелов не считались за слова.
Суть программы: Дана строка. Для каждого из слов указать, сколько раз оно встречается в тексте.

Код:
var 
   s, w : string;
   m, n : byte;
   wc : integer;
begin
   readln(s);
   s := s + ' ';
   n := Pos(' ', s);
   while (n > 0) do
   begin
      w := copy(s, 1, n - 1);
      s := copy(s, n + 1, 255);
      m := Pos(' ' + w + ' ', ' ' + s);
      wc := 1;
      while (m > 0) do
      begin
         wc := wc + 1;
         s := copy(s, 1, m - 1) + copy(s, m + length(w) + 1, 255);
         m := Pos(' ' + w + ' ', ' ' + s);
      end;
   writeln('Слово ', w , ' встречено ', wc, ' раз(а)');
   n := Pos(' ', s);
   end;
   readln;
end.
Nil09511 вне форума Ответить с цитированием
Старый 04.12.2014, 14:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если задаться целью внести МИНИМАЛЬНЫЕ поправки (т.е. не менять алгоритм обработки, это это можно сделать так:
замените строчку
Цитата:
Код:
s := copy(s, n + 1, 255);
на строчку:
Код:
      s := Trim(copy(s, n + 1, 255))+' ';

либо, можно исключить пробелы из проверки.
так (привожу только основную часть программы):
Код:
.....
  n := Pos(' ', s);
  while (n > 0) do
  begin
    w := copy(s, 1, n - 1);
    s := copy(s, n + 1, 255);
    if length(w) > 0 then begin
      m := Pos(' ' + w + ' ', ' ' + s);
      wc := 1;
      while (m > 0) do
      begin
        wc := wc + 1;
        s := copy(s, 1, m - 1) + copy(s, m + length(w) + 1, 255);
        m := Pos(' ' + w + ' ', ' ' + s);
      end;
      writeln('Слово ', w, ' встречено ', wc, ' раз(а)');
    end;
    n := Pos(' ', s);
  end;

Последний раз редактировалось Serge_Bliznykov; 04.12.2014 в 14:32.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в Паскале shadezx Помощь студентам 1 30.11.2013 21:49
Строки в паскале! vlad1991 Помощь студентам 3 11.11.2010 22:18
Строки в Паскале bingooo Помощь студентам 3 06.04.2010 18:18
Строки в Паскале Гамбит Помощь студентам 19 15.12.2009 20:26
Строки с паскале Dog Помощь студентам 2 11.10.2009 19:49