Proc31. Описать функцию IsPalindrom($$K$$), возвращающую True, если целый параметр $$K$$ ($$> 0$$) является палиндромом (то есть его запись читается одинаково слева направо и справа налево), и False в противном случае. С ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел. При описании функции можно использовать функции DigitCount и DigitN из заданий Proc29 и Proc30.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
program Proc30; //Proc30 Function DigitN(K,N:Integer):Integer; var i :integer; begin for i:=1 to N-1 do begin K:=K div 10; end; if K<> 0 then DigitN:=K mod 10 Else DigitN:=-1; end; //proc29 Function DigitCount(K:Integer):Integer; var S :String; begin Str(K,S); DigitCount:=Length(S); end; Function IsPalindrom(K:Integer):Boolean; var i,Len :integer; begin Len:=DigitCount(K); IsPalindrom:=True; for i:=1 to Len do if DigitN(K,i)<>DigitN(K,Len-i+1) Then IsPalindrom:=False; end; var i,K:Integer; begin for i:=1 to 5 do begin Write('K :'); Readln(K); Writeln(IsPalindrom(K)); end; end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
program Proc30; function IsPalindrome(k:integer):boolean; var k1,k2:integer; begin k1:=k; k2:=0;// у К2 обратный порядок цифр числа К repeat//создаем К2 k2:=k2*10+(k1 mod 10); k1:=k1 div 10; until k1=0; result:= (k2=k); end; var i,k,n:integer; begin n:=0; for i:=1 to 10 do begin read(k); if IsPalindrome(k) then inc(n); end; write(n); end. |
Другие задачи из раздела Proc можно посмотреть здесь.
[/crayon]
Добавил в шапку.