Задача - Удалить из строки пробелы и определить, является ли она перевертышем - программирование на разных языках

Задача — Удалить из строки пробелы и определить, является ли она перевертышем — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.

Задача — Удалить из строки пробелы и определить, является ли она перевертышем
— программирование на Pascal, Си, Кумир, Basic-256, Python

Вводится строка. Удалить из нее все пробелы. После этого определить, является ли она палиндромом (перевертышем), т.е. одинаково пишется как с начала, так и с конца.

Задача состоит из двух подзадач: 1) удаление всех пробелов из строки и 2) проверка строки на «палиндромность».

Для удаления пробелов надо перебрать по символам строку. Если очередной символ пробел, то удалить его. При этом следующий символ окажется на месте текущего, а значит не следует увеличивать значение счетчика. Если очередной символ не пробел, то надо перейти к проверке следующего, т.е. увеличить значение счетчика.

Для проверки, является ли строка палиндромом, надо сравнить первую и вторую половины строк. При этом половинки сравниваются так, что первый символ сравнивается с последним, второй — с предпоследним, третий — с третьим с конца, и т. д. То есть если длина строки l, а символ первой половины i, то символ второй половины имеет индекс l-i+1.

Pascal

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
это палиндром

Язык Си

#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] = »;
printf(«%sn»,str);

f = 1;
for (i=0; i < strlen(str); i++)
if (str[i] != str[strlen(str)-1-i]) {
printf(«Non»);
f = 0;
break;
}
if (f == 1) printf(«Yesn»);
} 90 w  ! w 0 9
90w!w09
Yes

Здесь при заполнении строки как массива символов исключаются пробелы.

Python

s = input()
s = s.split()
s_ = »
for i in s:
s_ += i
print(s_)

l = len(s_)
i = 0
f = 1
while i < l//2:
if s_[i] != s_[-1-i]:
print(‘Не палиндром’)
f = 0
break
i += 1
if f == 1:
print(‘Палиндром’)

Для того, чтобы убрать из строки пробелы, она сначала преобразуется в список слов с помощью метода split(), который разделяет строку по пробелам. После этого собирается новая строка из элементов списка.

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

КуМир

алг палиндром
нач
лит 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

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 l2
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() разбивает строку на подстроки по указанному разделителю. При этом создается массив, состоящий из подстрок.

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий