![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.12.2009
Сообщений: 69
|
![]()
Пожалуйста, помогите с решением задачи на Паскале!
Задача: Найти в строке набор слов (без перестановок слов), длины которых образуют арифметическую прогрессию. Какие здесь возникают вопросы... 1) найти нужно будет самый большой набор слов из строки, который будет образовывать эту прогрессию 2) вывести его на экран Например: Я сам буду чистить картофелну вывод = буду чистить картофелну (4-7-10) первые два слова тоже образуют прогрессию, но она уже будет малой, (1-2) = длина меньше, состоит из 2 слов const znaki=[',','.',';','!','?',':',' ']; var s,vs:string; i,n,m:integer; a:array[1..100] of string; b:array[1..100] of integer; flag:boolean; procedure vipisslova (s:string); begin i:=0;n:=0; flag:=false; repeat inc(i); if (flag and (s[i]in znaki)) then begin inc(n); a[n]:=vs; vs:=''; flag:=false; end; if (not(s[i]in znaki)) then begin vs:=vs+s[i]; flag:=true;=======процедура для слов, записи слов в массив end; until i>length(s); if flag then begin inc(n); a[n]:=vs; end; end; procedure vipisbukva (s:string); m:=0; flag:=false; repeat inc(i) if (s[i] in znaki) and flag then begin m=m+1; b[m]=0; end; end; else begin flag:=true; b[m]=b[m]+1; length (slovo):= length (slovo) + length s[i]; end; until i>length(stroka) я смутно понял алгоритм... 1) как понимаю выпишем все слова и занесем в массив 2) к каждому такому слову найдем количество букв и занесем во второй массив 3) смотрим разность между b[2]-b[1];=d'; сверяем, если на каком то шаге у нас b[n+1]-b[n]<>d тогда соответственно этому массиву ставим в соответствие массив слов = присвоим макс на этом месте берем элемент b[n+1] смотрим у него разность с последующим элементом и так до конца если найдем большую послдеовательность = присвоим макс ну и в конце выводим этот макс на экран))) Подскажите люди добрые, может я что не так делаю? Последний раз редактировалось Lodyr; 15.12.2009 в 22:04. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 15.12.2009
Сообщений: 69
|
![]()
Пожалуйста, помогите с решением задачи на Паскале!
Задача: Найти в строке набор слов (без перестановок слов), длины которых образуют арифметическую прогрессию. Какие здесь возникают вопросы... 1) найти нужно будет самый большой набор слов из строки, который будет образовывать эту прогрессию 2) вывести его на экран Например: Я сам буду чистить картофелну вывод = буду чистить картофелну (4-7-10) первые два слова тоже образуют прогрессию, но она уже будет малой, (1-2) = длина меньше, состоит из 2 слов const znaki=[',','.',';','!','?',':',' ']; var s,vs:string; i,n,m:integer; a:array[1..100] of string; b:array[1..100] of integer; flag:boolean; procedure vipisslova (s:string); begin i:=0;n:=0; flag:=false; repeat inc(i); if (flag and (s[i]in znaki)) then begin inc(n); a[n]:=vs; vs:=''; flag:=false; end; if (not(s[i]in znaki)) then begin vs:=vs+s[i]; flag:=true;=======процедура для слов, записи слов в массив end; until i>length(s); if flag then begin inc(n); a[n]:=vs; end; end; procedure vipisbukva (s:string); m:=0; flag:=false; repeat inc(i) if (s[i] in znaki) and flag then begin m=m+1; b[m]=0; end; end; else begin flag:=true; b[m]=b[m]+1; length (slovo):= length (slovo) + length s[i]; end; until i>length(stroka) я смутно понял алгоритм... 1) как понимаю выпишем все слова и занесем в массив 2) к каждому такому слову найдем количество букв и занесем во второй массив 3) смотрим разность между b[2]-b[1];=d'; сверяем, если на каком то шаге у нас b[n+1]-b[n]<>d тогда соответственно этому массиву ставим в соответствие массив слов = присвоим макс на этом месте берем элемент b[n+1] смотрим у него разность с последующим элементом и так до конца если найдем большую послдеовательность = присвоим макс ну и в конце выводим этот макс на экран))) Подскажите люди добрые, может я что не так делаю? Последний раз редактировалось Lodyr; 15.12.2009 в 22:28. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.12.2009
Сообщений: 69
|
![]()
подскажите пожалуйста, как составить правильно программу?
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не знаю что это, вирус или нет? | Slavik | Безопасность, Шифрование | 7 | 23.09.2009 13:21 |
правильно решена или нет?? | durachok) | Помощь студентам | 1 | 27.12.2008 08:23 |
правильно или нет | FreeZZZ | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 26.12.2008 09:39 |
решена правильно или нет??? | durachok) | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.12.2008 15:24 |
Посоветуйте ,правильно или нет | Михаил Юрьевич | Общие вопросы Delphi | 2 | 14.06.2008 22:02 |