Степень симметрии - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите решить задачу
  • Степенью симметрии натурального числа называется количество пар его десятичных цифр, в которых цифры совпадают и расположены симметрично относительно середины десятичной записи этого числа. Если некоторая цифра стоит посередине десятичной записи, её тоже нужно учитывать в паре с ней самой. Найти степень симметрии числа N.
  • (N < 2·109)
  • Пример: ввод(123322) вывод(2)
Пытался сам решить, но что-то не так в программе, может посоветуете что можно изменить, или подскажете как решать такие задачи.
Листинг программы
  1. var
  2. n,t:longint;
  3. k,i,s,j,a:integer;
  4. v:array[1..199999999] of byte;
  5. begin
  6. read(n);
  7. k:=0;i:=0;s:=0;j:=0;a:=0;
  8. t:=n;
  9. while n>0 do begin inc(k); n:=n div 10; end; //количество цифр = k
  10. n:=t;t:=0;
  11. for i:=k downto 1 do begin v[i]:=n mod 10; n:=trunc(n div 10);end; //заполнение массива цифрами
  12. n:=0;
  13. if k mod 2 <> 0 then //для нечетных чисел
  14. begin
  15. s:=(k div 2)+1;
  16. j:=1;
  17. for i:=1 to (k div 2) do
  18. if v[s-i]=v[s+i] then j:=j+1;
  19. end;
  20. if k mod 2 = 0 then //для четных чисел
  21. begin
  22. s:=k;
  23. for i:=1 to (k div 2) do
  24. begin
  25. if v[i]=v[s] then a:=a+1;s:=s-1;
  26. end;
  27. end;
  28. writeln(a);
  29. end.

Решение задачи: «Степень симметрии»

textual
Листинг программы
  1. program Symmetry;
  2.  
  3. type
  4.   TDigits = array [0..9] of byte;
  5. var
  6.   N: longint;
  7.   Len, Count, i: integer;
  8.   Digits: TDigits;
  9. begin
  10.   //readln(N);
  11.   N := 123322;
  12.  
  13.   Len := 0;
  14.   repeat
  15.     Digits[Len] := N mod 10;
  16.     N := N div 10;
  17.     Inc(Len);
  18.   until N = 0;
  19.  
  20.   Count := 0;
  21.   for i := 0 to (Len div 2) + (Len mod 2) - 1 do
  22.     if Digits[i] = Digits[Len - i - 1] then
  23.       Inc(Count);
  24.   writeln(Count);
  25. end.

Объяснение кода листинга программы

В данном коде на языке Free Pascal реализована задача на вычисление степени симметрии числа.

  1. Тип TDigits объявляет массив Digits, который будет содержать цифры числа N.
  2. Переменная N инициализируется значением 123322.
  3. Переменная Len инициализируется значением 0 и используется для хранения количества цифр числа N.
  4. В цикле repeat производится разбивка числа N на отдельные цифры и их сохранение в массиве Digits.
  5. Переменная Count инициализируется значением 0 и используется для подсчета количества одинаковых цифр в массиве Digits.
  6. В цикле for проверяется, являются ли текущая и обратная (считая от конца массива) цифры одинаковыми. Если да, то к переменной Count прибавляется единица.
  7. Значение переменной Count выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы