Вводится строка. Удалить из нее все пробелы. После этого определить, является ли она палиндромом (перевертышем), т.е. одинаково пишется как с начала, так и с конца.
Задача состоит из двух подзадач: 1) удаление всех пробелов из строки и 2) проверка строки на «палиндромность».
Для удаления пробелов надо перебрать по символам строку. Если очередной символ пробел, то удалить его. При этом следующий символ окажется на месте текущего, а значит не следует увеличивать значение счетчика. Если очередной символ не пробел, то надо перейти к проверке следующего, т.е. увеличить значение счетчика.
Для проверки, является ли строка палиндромом, надо сравнить первую и вторую половины строк. При этом половинки сравниваются так, что первый символ сравнивается с последним, второй — с предпоследним, третий — с третьим с конца, и т. д. То есть если длина строки l, а символ первой половины i, то символ второй половины имеет индекс l-i+1.
Pascal
while i <= l do begin<br>
if s[i] = ' ' then begin<br>
for i:=1 to l div 2 do <br>
if s[i] <> s[l-i+1] then begin<br>
writeln('это не палиндром');<br>
writeln('это палиндром'); <br>
<br>
var<br>
s: string;<br>
i,l: byte;<br>
begin<br>
readln(s);<br>
l := length(s);<br>
if l < 2 then exit;<br>
<br>
i := 1;<br>
while i <= l do begin<br>
if s[i] = ' ' then begin<br>
delete(s,i,1);<br>
l := l - 1;<br>
end<br>
else<br>
i := i + 1;<br>
end;<br>
writeln(s);<br>
if l < 2 then exit;<br>
<br>
for i:=1 to l div 2 do <br>
if s[i] <> s[l-i+1] then begin<br>
writeln('это не палиндром');<br>
exit;<br>
end;<br>
writeln('это палиндром'); <br>
end.<br>
var
s: string;
i,l: byte;
begin
readln(s);
l := length(s);
if l < 2 then exit;
i := 1;
while i <= l do begin
if s[i] = ' ' then begin
delete(s,i,1);
l := l - 1;
end
else
i := i + 1;
end;
writeln(s);
if l < 2 then exit;
for i:=1 to l div 2 do
if s[i] <> s[l-i+1] then begin
writeln('это не палиндром');
exit;
end;
writeln('это палиндром');
end.
ракушка лежит на песке .. .
ракушкалежитнапеске...
это не палиндром
o nee no
oneeno
это палиндром
Язык Си
while ((str[i] = getchar()) != '\n')<br>
if (str[i] != ' ') i +=1;<br>
for (i=0; i < strlen(str); i++)<br>
if (str[i] != str[strlen(str)-1-i]) {<br>
if (f == 1) printf("Yes\n");<br>
<br>
#include < stdio.h><br>
#include < string.h><br>
#define N 100<br>
main() {<br>
char str[N];<br>
int i, f;<br>
i = 0;<br>
while ((str[i] = getchar()) != '\n')<br>
if (str[i] != ' ') i +=1;<br>
str[i] = '\0';<br>
printf("%s\n",str);<br>
<br>
f = 1;<br>
for (i=0; i < strlen(str); i++)<br>
if (str[i] != str[strlen(str)-1-i]) {<br>
printf("No\n");<br>
f = 0;<br>
break;<br>
}<br>
if (f == 1) printf("Yes\n");<br>
}<br>
#include < stdio.h>
#include < string.h>
#define N 100
main() {
char str[N];
int i, f;
i = 0;
while ((str[i] = getchar()) != '\n')
if (str[i] != ' ') i +=1;
str[i] = '\0';
printf("%s\n",str);
f = 1;
for (i=0; i < strlen(str); i++)
if (str[i] != str[strlen(str)-1-i]) {
printf("No\n");
f = 0;
break;
}
if (f == 1) printf("Yes\n");
}
90 w ! w 0 9
90w!w09
Yes
Здесь при заполнении строки как массива символов исключаются пробелы.
Python
# Вариант 1 - без использования строковых методов<br>
s_with_spaces = input()<br>
for i in s_with_spaces:<br>
while i < s_len // 2:<br>
print('Не палиндром')<br>
print("Не палиндром") <br>
<br>
# Вариант 1 - без использования строковых методов<br>
<br>
s_with_spaces = input()<br>
<br>
s = ''<br>
for i in s_with_spaces:<br>
if i != ' ':<br>
s += i<br>
print(s)<br>
<br>
<br>
s_len = len(s)<br>
i = 0<br>
f = 1<br>
while i < s_len // 2:<br>
if s[i] != s[-1-i]:<br>
print('Не палиндром')<br>
f = 0<br>
break<br>
i += 1<br>
<br>
if f == 1:<br>
print('Палиндром')<br>
<br>
<br>
# Вариант 2<br>
<br>
s = input()<br>
s = s.split()<br>
s = ''.join(s)<br>
print(s)<br>
<br>
if s == s[::-1]:<br>
print("Палиндром")<br>
else:<br>
print("Не палиндром") <br>
# Вариант 1 - без использования строковых методов
s_with_spaces = input()
s = ''
for i in s_with_spaces:
if i != ' ':
s += i
print(s)
s_len = len(s)
i = 0
f = 1
while i < s_len // 2:
if s[i] != s[-1-i]:
print('Не палиндром')
f = 0
break
i += 1
if f == 1:
print('Палиндром')
# Вариант 2
s = input()
s = s.split()
s = ''.join(s)
print(s)
if s == s[::-1]:
print("Палиндром")
else:
print("Не палиндром")
КуМир
s := s[1:i-1] + s[i+1:l]<br>
нц для i от 1 до div(l,2) <br>
если s[i] <> s[l-i+1] то<br>
вывод "Это не палиндром"<br>
<br>
алг палиндром<br>
нач<br>
лит s<br>
цел i, l, f<br>
<br>
ввод s<br>
l := длин(s)<br>
<br>
<br>
нц пока s[l] = " " <br>
l := l-1<br>
s := s[1:l]<br>
кц<br>
i := 1<br>
нц пока i <= l <br>
если s[i] = " " то<br>
s := s[1:i-1] + s[i+1:l]<br>
l := l - 1<br>
иначе<br>
i := i + 1<br>
все<br>
кц<br>
вывод s, нс<br>
<br>
f := 1<br>
нц для i от 1 до div(l,2) <br>
если s[i] <> s[l-i+1] то<br>
вывод "Это не палиндром"<br>
f := 0<br>
выход<br>
все<br>
кц<br>
если f = 1 то<br>
вывод "Палиндром"<br>
все<br>
кон<br>
алг палиндром
нач
лит s
цел i, l, f
ввод s
l := длин(s)
нц пока s[l] = " "
l := l-1
s := s[1:l]
кц
i := 1
нц пока i <= l
если s[i] = " " то
s := s[1:i-1] + s[i+1:l]
l := l - 1
иначе
i := i + 1
все
кц
вывод s, нс
f := 1
нц для i от 1 до div(l,2)
если s[i] <> s[l-i+1] то
вывод "Это не палиндром"
f := 0
выход
все
кц
если f = 1 то
вывод "Палиндром"
все
кон
Basic-256
arr$ = explode(str$," ")<br>
for i=0 to arr$[?] - 1<br>
str$ = str$ + arr$[i]<br>
if mid(str$,i,1) <> mid(str$,l-i+1,1) then<br>
<br>
input str$<br>
arr$ = explode(str$," ")<br>
str$ = ""<br>
for i=0 to arr$[?] - 1<br>
str$ = str$ + arr$[i]<br>
next i<br>
print str$<br>
<br>
l = length(str$)<br>
for i=1 to l\2<br>
if mid(str$,i,1) <> mid(str$,l-i+1,1) then<br>
print "no"<br>
end<br>
endif<br>
next i<br>
<br>
print "yes"<br>
input str$
arr$ = explode(str$," ")
str$ = ""
for i=0 to arr$[?] - 1
str$ = str$ + arr$[i]
next i
print str$
l = length(str$)
for i=1 to l\2
if mid(str$,i,1) <> mid(str$,l-i+1,1) then
print "no"
end
endif
next i
print "yes"
898 9 8
89898
yes
Функция explode() разбивает строку на подстроки по указанному разделителю. При этом создается массив, состоящий из подстрок.