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

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

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


Ответ
 
Опции темы
Старый 18.05.2011, 18:14   #1
sashunechka
Новичок
Джуниор
 
Регистрация: 18.05.2011
Сообщений: 6
По умолчанию Символьная строка содержит слова, разделенные пробелами. Найти все слова-палиндромы (Паскаль)

Символьная строка содержит последовательность слов, разделенных пробелами. Найти все слова,которые читаются слева направо так же,как и справа налево.
Код:
program zad1;
var
  str: string; {строка}
  i, l, k, nw, n, m: integer; Fl: boolean;
begin
  i := 1; k := 0; {задаём начальные значения счётчиков}
  writeln('Введите строку');
  readln(str); {вводим строку}
  l := length(str); {определяем длину строки}
  while (i <= l) do {пока не конец строки}
  begin
    if str[i] = ' ' then inc(i); {пропускаем пробел i увел. на 1}
    nw := i; {запоминаем номер начала слова}
    while (i <= l) and (str[i] <> ' ') do
      inc(i); {в цикле прокручивается слово до следующего пробела}
    for i := 1 to n div 2 do
      if str[i] <> str[n - i + 1] then
        Fl := false;
    if Fl then
      writeln('Palindrom')
    else
      writeln('Ne palindrom');
    m := m + 1;
  end;
end.
какие бы строки я не вводила,программа все равно выдает Ne palindrom

Последний раз редактировалось Serge_Bliznykov; 18.05.2011 в 20:28.
sashunechka вне форума Ответить с цитированием
Старый 18.05.2011, 18:20   #2
BalashovM
 
Аватар для BalashovM
 
Регистрация: 17.05.2011
Сообщений: 9
По умолчанию

Так, а почему переменная n не задана? Естественно, n div 2 всегда будет равным 0. Вот ошибка №1
P.S. Я так понимаю, n-это длина текущего слова, то есть
12 if str[i] = ' ' then inc(i); {пропускаем пробел i увел. на 1}
13 nw := i; {запоминаем номер начала слова}
14 while (i <= l) and (str[i] <> ' ') do
15 inc(i); {в цикле прокручивается слово до следующего пробела}
!!! n:=i-nw+1;
16 for i:=1 to n div 2 do
17 if str[i]<> str[n-i+1] then

Последний раз редактировалось BalashovM; 18.05.2011 в 18:31.
BalashovM вне форума Ответить с цитированием
Старый 18.05.2011, 18:27   #3
sashunechka
Новичок
Джуниор
 
Регистрация: 18.05.2011
Сообщений: 6
По умолчанию

попыталась переделать.программа считывает первое слово и все.
Код:
uses crt;
var str:string[30];
k,i,n,m:integer;
Fl:boolean;
begin
readln(str);
n:=length(str);
while m<n do
begin
Fl:=true;
for i:=1 to n div 2 do
if str[i]<> str[n-i+1] then
Fl:=false;
if Fl then
writeln ('Palindrom')
else
writeln ('Ne palindrom');
m:=m+1;
end;
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.05.2011 в 20:29.
sashunechka вне форума Ответить с цитированием
Старый 18.05.2011, 19:38   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вот первое что пришло в голову
Код:
var a,b:string;
    i:Byte;
  begin
    write('Slovo: ');
    readln(a);
    b:='';
    For i:=1 to Length(a) do
    If a[i] = ' ' then Delete(A,i,1);
    for i:=1 to Length(a) do b:=a[i]+b;{ переворачиваем слово }
    if a=b then write('Yes')
           else write('No');
    readln;
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 18.05.2011, 20:45   #5
sashunechka
Новичок
Джуниор
 
Регистрация: 18.05.2011
Сообщений: 6
По умолчанию

спасибо большое,за помощь)
sashunechka вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка из слов, разделённых пробелами. Найти среднее количество символов в словах четной длины (Паскаль) marystupidyeah Помощь студентам 5 24.05.2011 15:55
напечатать все слова , отличные от последнего слова Julila Помощь студентам 1 07.01.2011 23:34
все слова с нечетным количеством букв подходят для "ёлочной" рекурсии. Все буквы слова расположены в форм no_to Помощь студентам 0 04.01.2010 16:06
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Найти все слова в предложении PbIska Помощь студентам 5 12.05.2009 20:23


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя