По разделам

 

Решение задачи Proc 31


Описать функцию IsPalindrom(K), возвращающую TRUE, если целый
параметр K (> 0) является палиндромом (то есть его запись читается одинаково слева направо и справа налево), и FALSE в противном случае. С
ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел. При описании функции можно использовать функции
DigitCount и DigitN из заданий Proc29 и Proc30.

Код (C/C++)

#include <stdio.h>

int digitcount(int k){
    int i=1;
    for(;k>=10;i++) k/=10;
    return i;
}
 
int digitn(int k, int n){
    int i=1;
    for(i=1; i<=n-1; i++) k/=10;
    if (k!=0) return k%10;
    else return -1;
}
 
int ispalindrom(int k){
    int len,i;
    len=digitcount(k);
    for(i=1; i<=len; i++)
        if (digitn(k,i)!=digitn(k,len-i+1)) return 0;
   return 1;
}
 
int main(void)
{
    int i, k,count=0;
    for (i=1; i<=10; ++i){
        printf("K:");
        scanf("%i", &k);
 
        count+=ispalindrom(k);
    }
    printf("Count: %i\n",count);
    return 0;
}

Код (Python)

import random

def Palindrom(K):
    return int(str(K) + str(K)[::-1])

def IsPalindrom(K):
    result = False
    num = str(K)
    try:
        val = int(num)
        if num == str(num)[::-1]:
            result = True
    except ValueError:
        print("That's not a valid number, Try Again !")
    return result

def IsPalindrom2(n):
    temp=n
    rev=0
    while(n>0):
        dig=n%10
        rev=rev*10+dig
        n=n//10
    if(temp==rev):
        result = True
    else:
        result = False
    return result


for i in range(0,10):
    x = random.randrange(1,10000)
    #x = Palindrom(x)
    print(x,":",IsPalindrom(x))
    #print(x,":",IsPalindrom2(x))

									

Код (Pascal)

program Proc31;
//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.
									




Proc. Абрамян
Proc 1 Просмотров: 6575
Proc 2 Просмотров: 5073
Proc 3 Просмотров: 5180
Proc 4 Просмотров: 4338
Proc 5 Просмотров: 3408
Proc 6 Просмотров: 4659
Proc 7 Просмотров: 3927
Proc 8 Просмотров: 3027
Proc 9 Просмотров: 3158
Proc 10 Просмотров: 2917
Proc 11 Просмотров: 3018
Proc 12 Просмотров: 2215
Proc 13 Просмотров: 2454
Proc 14 Просмотров: 2698
Proc 15 Просмотров: 1899
Proc 16 Просмотров: 2885
Proc 17 Просмотров: 2527
Proc 18 Просмотров: 2445
Proc 19 Просмотров: 2365
Proc 20 Просмотров: 3226
Proc 21 Просмотров: 3334
Proc 22 Просмотров: 2453
Proc 23 Просмотров: 2438
Proc 24 Просмотров: 1693
Proc 25 Просмотров: 2076
Proc 26 Просмотров: 1843
Proc 27 Просмотров: 2055
Proc 28 Просмотров: 1764
Proc 29 Просмотров: 1949
Proc 30 Просмотров: 2485
Proc 31 Просмотров: 1700
Proc 32 Просмотров: 1262
Proc 33 Просмотров: 1303
Proc 34 Просмотров: 1721
Proc 35 Просмотров: 1196
Proc 36 Просмотров: 1660
Proc 37 Просмотров: 1513
Proc 38 Просмотров: 1223
Proc 39 Просмотров: 1124
Proc 40 Просмотров: 1868
Proc 41 Просмотров: 1927
Proc 42 Просмотров: 1176
Proc 43 Просмотров: 1145
Proc 44 Просмотров: 1033
Proc 45 Просмотров: 1166
Proc 46 Просмотров: 1067
Proc 47 Просмотров: 1103
Proc 48 Просмотров: 854
Proc 49 Просмотров: 1072
Proc 50 Просмотров: 2114
Proc 51 Просмотров: 1709
Proc 52 Просмотров: 1734
Proc 53 Просмотров: 1206
Proc 54 Просмотров: 1289
Proc 55 Просмотров: 1186
Proc 56 Просмотров: 1769
Proc 57 Просмотров: 1534
Proc 58 Просмотров: 1216
Proc 59 Просмотров: 1130
Proc 60 Просмотров: 1430

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет