По разделам



Задача 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 Просмотров: 11
Proc 2 Просмотров: 11
Proc 3 Просмотров: 9
Proc 4 Просмотров: 10
Proc 5 Просмотров: 12
Proc 6 Просмотров: 7
Proc 7 Просмотров: 10
Proc 8 Просмотров: 10
Proc 9 Просмотров: 10
Proc 10 Просмотров: 8
Proc 11 Просмотров: 12
Proc 12 Просмотров: 7
Proc 13 Просмотров: 11
Proc 14 Просмотров: 11
Proc 15 Просмотров: 11
Proc 16 Просмотров: 9
Proc 17 Просмотров: 18
Proc 18 Просмотров: 11
Proc 19 Просмотров: 12
Proc 20 Просмотров: 8
Proc 21 Просмотров: 10
Proc 22 Просмотров: 9
Proc 23 Просмотров: 7
Proc 24 Просмотров: 10
Proc 25 Просмотров: 7
Proc 26 Просмотров: 9
Proc 27 Просмотров: 12
Proc 28 Просмотров: 16
Proc 29 Просмотров: 19
Proc 30 Просмотров: 23
Proc 31 Просмотров: 10
Proc 32 Просмотров: 10
Proc 33 Просмотров: 8
Proc 34 Просмотров: 16
Proc 35 Просмотров: 6
Proc 36 Просмотров: 9
Proc 37 Просмотров: 9
Proc 38 Просмотров: 8
Proc 39 Просмотров: 11
Proc 40 Просмотров: 8
Proc 41 Просмотров: 11
Proc 42 Просмотров: 8
Proc 43 Просмотров: 8
Proc 44 Просмотров: 11
Proc 45 Просмотров: 12
Proc 46 Просмотров: 9
Proc 47 Просмотров: 7
Proc 48 Просмотров: 12
Proc 49 Просмотров: 9
Proc 50 Просмотров: 10
Proc 51 Просмотров: 16
Proc 52 Просмотров: 9
Proc 53 Просмотров: 11
Proc 54 Просмотров: 8
Proc 55 Просмотров: 10
Proc 56 Просмотров: 9
Proc 57 Просмотров: 8
Proc 58 Просмотров: 10
Proc 59 Просмотров: 7
Proc 60 Просмотров: 8

Комментарии

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