Skip to content

Instantly share code, notes, and snippets.

@spellancer
Created May 15, 2011 12:10
Show Gist options
  • Save spellancer/973091 to your computer and use it in GitHub Desktop.
Save spellancer/973091 to your computer and use it in GitHub Desktop.
palindrom
/*Существует гипотеза, что для любого натурального числа, если оно не палиндром, можно получить палиндром за конечное число шагов по следующей схеме. Меняем порядок его цифр на обратный и складываем исходное число с получившимся. Если сумма не палиндром, то над ней повторяется то же действие и так до тех пор, пока не получится палиндром. Написать программу, подтверждающую эту гипотезу.
*/
// lab21.cpp: определяет точку входа для консольного приложения.
//Нанян АК521
#include "stdafx.h"
#include <locale.h>
#include <stdio.h>
#include <conio.h>
int m,k,s,j,n,kp,kk,tmp,i;
int test(int n );
bool f;
int _tmain(int argc, _TCHAR* argv[])
{setlocale(0,"russian");
printf ("Введите число :");
scanf_s("%d", &n);
test(n);
i=0;
if (f) {printf ("Данное число %d является палиндромом " ,n);}
else
{
printf("\nДанное число не является палиндромом,преобразуем... %d \n",n);
printf ("\n%d + %d = %d\n",n,m,n+m);
while (f==false)
{
tmp=n+m;
test(tmp);
i++;
}
if (f) { printf ("\nТеперь число %d является палиндромом, после %d повторений \n",tmp,i);}
}
puts("\nНажмите любую клавишу для завершения...");
_getch();
return 0;
}
//функция проверки на палиндром
int test(int n)
{
k=n;
m=0;
s=1;
while (k!=0)
{
k=k/10;
s=s*10;
}
j=s/10;
k=n;
while (k!=0)
{
kp=k % 10;
k=k/10;
m=m+kp*j;
j=j/10;
}
if (m==n) {f=true;} return n;
if (m!=n) {f=false;} return m;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment