var
s : string;
i : integer;
f : boolean;
begin
readln (s);
writeln ('Тут ', length (s), ' символов');
f := true;
for i := 1 to length (s) div 2 do
if s[i] <> s[length (s) - i + 1] then f := false;
writeln ('Это слово является перевертышем: ', f); //True/False
end.
var
s : string;
i, k, count : integer;
c : char;
begin
readln (s);
count := 0;
for i := 1 to length (s) do
if s[i] <> ' ' then
begin
c := s[i];
k := i + 1;
break;
end;
for i := k to length (s) do
if (s[i] = ' ') and (c <> ' ') then
begin
if s[i - 1] = c then inc (count);
c := ' ';
end
else if c = ' ' then c := s[i];
if (c <> ' ' ) and (s[length (s)] <> ' ') and (c = s[length (s)]) then inc (count);
writeln (count);
end.
Объяснение:
В общем алгоритм такой.
Пусть мы имеем массив a[1..n, 1..n] из n*n элементов,
i - номер строки, j - номер столбца.
Спускаемся вниз по строкам до строки, номер которой отличается от того,
n - четное или нечетное.
В общем случае это номер i_ser, равный n делить на 2, и округленный до целого вниз.
Например, если n = 4, i_ser = 2, если n = 7, то i_ser = 3.
Для i от 1 до i_ser делать
начало
Для j от 1 до i делать
// здесь мы получаем нужные нам координаты i, j
конец
Если i_ser нечетно, то отдельно проходимся по строке с номером i_ser+1
Если i_ser нечетно то
начало
i_ser = i_ser + 1
Для j от 1 до i_ser делать
// здесь мы получаем нужные нам координаты i_ser, j
конец
i_ser = i_ser + 1
Для i от i_ser до n делать
начало
Для j от 1 до n - i + 1 делать
// здесь мы получаем нужные нам координаты i, j
конец
Скоро весна. Ура! Скоро весна. Ура! Скоро весна. Ура!
Объяснение: