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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2016, 14:14   #1
annya
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 19
По умолчанию Помогите с задачей о палиндромах

Вот условие
Дана последовательность символов s1, s2, ..., sn, 1 <= n <= 200, si либо является пробелом, либо принадлежит множеству {A,B,...,Z,a,b,...,z}. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Палиндромом назовем такое слово s1, s2, ..., sk, что s1 = sk, s2 = sk-1, s3 = sk-2, ..., k <= 30, при этом учитывается регистр символов, т.е. A <> Проверять, является ли строка палиндромом?

Проверьте мое решение. Где есть ошибки? Что-то как-то не так. А по-другому не могу догадаться, с паскалем пока туговато. Поправьте пожалуйста.

Код:
var
S: array [1..200] of char;
i,k, n, max: integer;
begin
writeln ('vvedite maximalnuju dlitelnost simvolov: ');
readln (max);
n = max/2;
for i:=1 to n do
 if S[k] <> S[length(S)+1-k]
  then writeln ('stroka ne palindrom')  
   else
   begin
 if length(S) > max
 then max := length(S);
writeln (max)
end;
end.

Последний раз редактировалось annya; 06.10.2016 в 14:21.
annya вне форума Ответить с цитированием
Старый 06.10.2016, 14:28   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не очень понятно что в задании хотят, что такое "строка палиндром"? "Слово1 слово2 слово1" что ли?
Или просто проверить является ли каждое слово палиндромом?

Ну в любом случае сначала надо ввести строку (readln) и разделить ее на слова (по пробелам), можно для удобства записать их в массив строк.
А потом что-то делать со словами.

Паскаль какой именно? Вместо array [1..200] of char наверно можно использовать string.
И вы не вводите строку, только длину (которую скорее всего вообще не надо вводить, чтобы узнать длину строки после ее ввода есть функция length)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 06.10.2016 в 14:30.
Alex11223 вне форума Ответить с цитированием
Старый 06.10.2016, 14:29   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Палиндромом назовем такое слово...
Цитата:
Проверять, является ли строка палиндромом?
А что такое строка-палиндром? В смысле строка, состоящая из нескольких слов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.10.2016, 14:38   #4
annya
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 19
По умолчанию

ПАЛИНДРОМЫ (перевертыши) - слова, читающиеся одинаково в обоих направлениях.
annya вне форума Ответить с цитированием
Старый 06.10.2016, 14:41   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да, но тут речь о какой-то строке-палиндроме, а не словах
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.10.2016, 14:41   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от annya Посмотреть сообщение
ПАЛИНДРОМЫ (перевертыши) - слова, читающиеся одинаково в обоих направлениях.
про слова тут всё понятно.
А вот непонятно, что такое "СТРОКА-ПАЛИНДРОМ" ?
это строка, все слова в которой палиндромы?
а количество пробелов между словами как учитывать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.10.2016, 14:46   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

сравните, например, с заданием:
https://pascal.proweb.kz/index.php?page=173

Цитата:
Дана последовательность символов s1, s2, ..., sn, 1 <= n <= 200, si либо является пробелом, либо принадлежит множеству {A,B,...,Z,a,b,...,z}. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Палиндромом назовем такое слово s1, s2, ..., sk, что s1 = sk, s2 = sk-1, s3 = sk-2, ..., k <= 30, при этом учитывается регистр символов, т.е. A <> a.
Найти количество символов, содержащихся в самом длинном палиндроме.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.10.2016, 15:32   #8
annya
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да, но тут речь о какой-то строке-палиндроме, а не словах
В данном случае строка - это последовательность символов s1, s2, ..., sn, 1 <= n <= 200.

Последний раз редактировалось annya; 06.10.2016 в 15:36.
annya вне форума Ответить с цитированием
Старый 06.10.2016, 15:47   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не, речь о том, что понятно что такое слово-палиндром — это например "шалаш", "топот".

Но в задании написано, что строка содержит несколько слов и вроде как просят проверить является ли вся строка палиндромом.

Там про "А роза упала на лапу Азора" что ли? То есть получится "арозаупаланалапуазора" в обе стороне если убрать пробелы и игнорировать регистр (А=а).
Но в задании еще и про регистр непонятно написано, то ли его надо игнорировать, то ли должно быть именно "А роза упала на лапу азорА".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 06.10.2016 в 15:49.
Alex11223 вне форума Ответить с цитированием
Старый 06.10.2016, 16:00   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Палиндромом назовем такое слово...
Цитата:
Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами
Цитата:
Проверять, является ли строка палиндромом?
Т.е. проверить что строка является СЛОВОМ (необходимое условие для палиндрома?)
и данное слово является словом-палиндромом.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачей vital_orsha Помощь студентам 0 08.03.2016 12:00
Помогите с задачей на C# Dunpeal Общие вопросы .NET 0 21.11.2009 14:12
Помогите с задачей Noxil Паскаль, Turbo Pascal, PascalABC.NET 2 30.10.2008 19:20