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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2014, 17:31   #1
FezDer
 
Регистрация: 31.01.2014
Сообщений: 8
По умолчанию Помогите пожалуйста с задачей, не могу доделать

Задача в Pascal: Словом в строке называется последовательность букв, не прерываемая другими символами.
Дана строка символов. Найти, сколько раз в строке повторяется последнее слово.
Пример: вход s='мы не рабы, рабы не мы'; выход: 2 раза.
( В ниже приведенной программе нужно лишь дописать, сколько будет таких же слов,
как и последнее, на выходе.(Последнее слово программа находит, осталось лишь подсчитать)).
Помогите пожалуйста
Код:
program PROG;
const
  Letter : set of char = ['a'..'z','а'..'я','A'..'Z','А'..'Я']; {Множество букв}
var
  s : string; {Входная строка}
  Wrd, s1 : string; {Слово, последнее слово}
  i, L, l1 : integer;
  c, k : integer;
begin
  {Ввод строки}
  writeln('Введите строку');
  readln(s);

  {Поиск в строке самого длинного слова}
  L:=length(s); {Длина входной строки}
  i := 1; {Счетчик символов для прохода по строке}
  c := 0; {Счетчик слов}
  k := 0; {Счетчик слов одинаковой длины}

  while i<=L do {Пока не закончилась строка}
  begin
    {IПропуск символов, не являющихся буквами}
    while (i<=L) and not (s[i] in Letter) do
      inc(i);

    {Выделение из строки очередного слова в Wrd}
    Wrd:='';
    while (i<=L) and (s[i] in Letter) do
    begin
      Wrd:=Wrd+s[i];
      inc(i)
    end;
    s1:=Wrd
  end;
  {Повтор цикла}
  i := 1;
  while i<=L do {Пока не закончилась строка}
  begin
    {Пропуск символов, не являющихся буквами}
    while (i<=L) and not (s[i] in Letter) do
      inc(i);

    {Выделение из строки очередного слова в Wrd}
    Wrd:='';
    while (i<=L) and (s[i] in Letter) do
    begin
      Wrd:=Wrd+s[i];
      inc(i)
    end;
    s1:=Wrd
  end;


  {Вывод ответа}
  writeln('Количество слов таких же, как и последнее слово - ', s1)

end.

Последний раз редактировалось Stilet; 14.05.2014 в 17:35.
FezDer вне форума Ответить с цитированием
Старый 15.05.2014, 23:02   #2
FezDer
 
Регистрация: 31.01.2014
Сообщений: 8
По умолчанию

так как ответа, не дождался, и потратив еще пару часиков, до меня дошло.
Нужно было добавить строки: [7] count; [33] count := 0 ; [46] if s1 = wrd then
[47] inc(count); [51] writeln(count)


Код Pascal
  1. [1]const
    [2] Letter : set of char = ['a'..'z','а'..'я','A'..'Z','А'..'Я']; {Множество букв}
    [3]var
    [4] s : string; {Входная строка}
    [5] Wrd, s1 : string; {Слово, последнее слово}
    [6] i, L, l1 : integer;
    [7] c, k, count : integer;
    [8]begin
    [9] {Ввод строки}
    [10] writeln('Введите строку');
    [11] readln(s);

    [12] {Поиск в строке самого длинного слова}
    [13] L:=length(s); {Длина входной сроки}
    [14] i := 1; {Счетчик символов для прохода по строке}
    [15] c := 0; {Счетчик слов}
    [16] k := 0; {Счетчик слов одинаковой длины}

    [17] while i<=L do {Пока не закончилась строка}
    [18] begin
    [19] {Пропуск символов, не являющихся буквами}
    [20] while (i<=L) and not (s[i] in Letter) do
    [21] inc(i);

    [22] {Выделение из строки очередного слова в Wrd}
    [23] Wrd:='';
    [24] while (i<=L) and (s[i] in Letter) do
    [25] begin
    [26] Wrd:=Wrd+s[i];
    [27] inc(i)
    [28] end;
    [29] s1:=Wrd
    [30] end;
    [31] {повтор цикла}
    [32] i := 1;
    [33] count := 0 ;
    [34] while i<=L do {Пока не закончилась строка}
    [35] begin
    [36] {Пропуск символов, не являющихся буквами}
    [37] while (i<=L) and not (s[i] in Letter) do
    [38] inc(i);

    [39] {Выделение из строки очередного слова в Wrd}
    [40] Wrd:='';
    [41] while (i<=L) and (s[i] in Letter) do
    [42] begin
    [43] Wrd:=Wrd+s[i];
    [44] inc(i);
    [45] end;

    [46] if s1 = wrd then
    [47] inc(count);
    [48] end;

    [49] {Вывод ответа}
    [50] writeln('Количество слов таких же ,как и последнее слово - ', s1);
    [51] writeln(count)
    [52]end.
FezDer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите доделать программу по C++ kmail Помощь студентам 0 22.08.2009 19:26
Пожалуйста помогите доделать программу Kaddafi Паскаль, Turbo Pascal, PascalABC.NET 2 14.05.2009 21:08