Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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


Ответ
 
Опции темы
Старый 10.04.2019, 12:29   #1
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию Работа со строками в pascal abc.net

Здравствуйте. Нужна помощь с задачей: Создать новый текст, содержащий все слова исходного текста, которые оканчиваются
на ту же букву, что и слово максимальной длины.
Как сделать, чтобы программа работала без copy?
Вот исходный код:
Код:
Program p1;
const
C = [' ', ',', '.'];
var
s,max_word: string;
i,k, prev: integer;
step: boolean;
begin
Write('Введите строку s=');
Read(s);
s:=s + ' ';
prev:=0;
for step:=false to true do
for i:=1 to length(s) do
begin
if s[i] in C then
begin
if i-prev>1 then
begin
if not step then 
begin
if i - prev - 1 > length(max_word) then
max_word := copy(s, prev + 1, i - prev - 1);
end
else 
if s[i - 1] = max_word[length(max_word)] then
write(copy(s, prev + 1, i - prev - 1), ' ');
end;
prev := i;
end;
end;
writeln;
end.
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 12:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Цитата:
Как сделать, чтобы программа работала без copy?
Например сделать свою функцию аналог copy.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.04.2019, 12:40   #3
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

блин, я не сильно шарю в паскале. Как можно ещё сделать без создания своей собственной функции?
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 12:46   #4
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Да, и я не совсем так выразился. Как сделать эту программу без процедур или функций?
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 13:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Цитата:
Сообщение от Enotik_1998 Посмотреть сообщение
Как сделать, чтобы программа работала без copy?
ну, это же Pascal ABC.NET
тут доступен LINQ

вот, например, тут решение похожей (но другой!) задачи:
Цитата:
Код:
// в предложении найти все слова с одной буквой "а" и вывести их
// (c) Plague  http://programmersforum.ru/showpost.php?p=1686131&postcount=4
begin
  var s : string := 
    'Алексей Фёдорович Карамазов - главное действующее лицо романа Фёдора Михайловича Достоевского "Братья Карамазовы"';
  s.ToWords(Arr(' ','-','"')).Where(x->x.Count(i->i='а')=1).Print(NewLine)

// решение с запросом строки у пользователя
//  ReadString.ToWords(Arr(' ','-','"')).Where(x->x.Count(i->i='а')=1).Print(NewLine)

end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal, работа со строками Magenta Помощь студентам 20 26.03.2015 23:53
Работа со строками Pascal ksenija15reg Помощь студентам 3 28.11.2013 23:25
Работа со строками (Pascal) Volk_xD Помощь студентам 8 17.12.2010 21:06
Работа со строками (Pascal) SmileGirl Помощь студентам 4 22.10.2010 01:17
Работа со строками (pascal) ДиM@ Помощь студентам 3 18.04.2010 09:39