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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2014, 13:08   #1
lulia
Пользователь
 
Регистрация: 07.10.2011
Сообщений: 21
По умолчанию

Здравствуйте! Не могу решить олимпиадную задачу прошлого года 9 класс школьный тур.
Задача: Петя Торопыжкин набрал несколько слов, состоящих из латинских букв. Он хотел их набрать их в верхнем регистре, но время от времени палец у него сосказывал с клавиши Shift, поэтому некоторые буквы получились строчными. Помогите ему, проверьте, являются ли его сова палиндромами, если записать их заглавными буквами.
Задачу необходимо решить в PascalABC.net.
На вход подаются в первой строке натуральное число n - количество Петиных слов (слов не более 20). В следующих n строках записаны сами слова.
На выходе n строк состоящих из слов YES если слово является палиндромом и NO если слово не является палиндромом.
Пример:
Вход:
3
ADA
Ada
ADD

Выход:
YES
YES
NO


Если слово одно то я могу решить, а если слов больше уже не получается

Палиндромом называется слово, одинаково читающееся от начала к концу и от конца к началу.

Последний раз редактировалось Stilet; 02.11.2014 в 14:16.
lulia вне форума Ответить с цитированием
Старый 02.11.2014, 14:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Показывай попытки )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2014, 14:18   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
если слов больше уже не получается
Почему ?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2014, 14:33   #4
lulia
Пользователь
 
Регистрация: 07.10.2011
Сообщений: 21
По умолчанию

Это алгоритм, если слово одно:
Код:
var
    s: string;
    i,f,j: byte;   n:integer;
begin
READLN(N);
readln(s);

 FOR I:=1 TO LENGTH(S) DO
S[i]:=UPCASE(S[I]);

 f := 0;
    for i := 1 to length(s) div 2 do
        if (s[i] <> s[length(s)-i+1])then   begin WRiteln('No palindrome'); f := 1;
            break
        end;
    if f = 0 then writeLN('Palindrome');
end.
если слов больше, то я определяю слова в массив. И в массиве первая сложность как сдать все слова в верхнем регистре. Я уже пробовала через условие и без условия.
получилось как-то так:
Код:
var  s:ARRAY [1..100] OF char;
    s1:ARRAY [1..100] OF string;
    i,f,j: byte;   n:integer;
begin
READLN(N);
FOR I:=1 TO N DO BEGIN
readln(s[I]);
s1[I]:='';
  FOR J:=1 TO LENGTH(S[I]) DO    BEGIN
 {if s[i] in ['a'..'z'] then begin }S[J]:=UPCASE(S[J]); s1[I]:=s1[I]+s[J]; end{ else  s1[j]:=s1[j]+s[i]};
s1[I]:=s1[I]+s[J];WRITELN(S1[J]);
END;

 f := 0;
    for i := 1 to length(s[I]) div 2 do
        if (s[i] <> s[length(s[I])-i+1])then   begin WRiteln('No palindrome'); f := 1;
            break
        end;
    if f = 0 then writeLN('Palindrome');
end.
Но выдает не правильно верхний регистр. Поэтому последнюю часть где обрабатывается палиндром не переделывала.

Последний раз редактировалось Stilet; 02.11.2014 в 15:57.
lulia вне форума Ответить с цитированием
Старый 02.11.2014, 14:40   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Написать и использовать функцию запрещено? Категорически?

Код:
function IsPal(const s: string): boolean;
var
  idx, len: integer;     
  p: string;
begin
  result:= false;   
  p:= uppercase(s);
  len:= length(p);       
  
  if len = 0
    then exit;     
  
  for idx:= 1 to len div 2 do
    if p[idx] <> p[len - idx + 1]
      then exit;
  
  result:= true;
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 02.11.2014 в 15:04.
min@y™ вне форума Ответить с цитированием
Старый 02.11.2014, 14:52   #6
lulia
Пользователь
 
Регистрация: 07.10.2011
Сообщений: 21
По умолчанию

Решать можно любым способом. Только бы ответ правильно выдавал

То что я внесла в кавычки, это мои пробы. В этой части я и не могу понять почему не получается

Последний раз редактировалось Stilet; 02.11.2014 в 15:59.
lulia вне форума Ответить с цитированием
Старый 02.11.2014, 15:07   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

не надо массив. ввели слово - скорми его функции и выдай её результат сразу на консоль и всё.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2014, 17:39   #8
lulia
Пользователь
 
Регистрация: 07.10.2011
Сообщений: 21
По умолчанию

Спасибо огромное. Все получилось.
lulia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Палиндром С++ Guzal Помощь студентам 9 10.12.2012 09:09
Палиндром JokerWCC Помощь студентам 4 12.10.2010 15:02
Палиндром A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:44
Палиндром shark2010 Помощь студентам 11 23.04.2010 03:07
Палиндром Carbon Помощь студентам 9 12.11.2007 14:32