Другие языки программирования и технологии

Алгоритм определения и построения симметричных цифр , чтобы читалось одинаково как слева направо, так и справа налево

Любая цифра читается одинаково слева направо и справа налево:
0
1
2
3
4
5
6
7
8
9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Дык цфра или всё-таки число?
Для чисел могу предложить простой выход:
формировать не в числовом виде, а в виде строки.
Тогда:
1) ограничение на длину - больше чем для целочисленных значений
2) простое формирование: берём все символы строки и подсчитываем их количество
3) если для какого-то символа количество нечётное, то оно будет стоять посередине
4) для всех остальных - просто слева и справа добавляем к строке (не забывая уменьшать счётчик)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
В принципе алгоритм 1..4 применим и для чисел!
Только в немного изменённом виде.. .
Но без счётчика не обойтись.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Если понимаешь Паскаль, то вот набросал для Longint:

var N, L : Longint; A : array [0..9] of Byte; Index, Kol : Byte;
begin
Write('Enter N: '); ReadLn(N);
for Index := 0 to 9 do A[Index] := 0;
while N > 0 do begin Inc(A[N mod 10]); N := N div 10; end;
Kol := 0; L := 0; for Index := 0 to 9 do if Odd(A[Index]) then begin Inc(Kol); L := Index; Dec(A[Index]); end;
if Kol > 1 then begin WriteLn('Error in number'); Halt; end;
N := L; L := 1; for Index := 0 to 9 do while A[Index] > 0 do begin L := L * 100; N := L * Index + N * 10 + Index; Dec(A[Index], 2); end;
WriteLn(N);
end.
Александр *******
Александр *******
97 763
Лучший ответ

Похожие вопросы