Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определить явл. ли число палиндромом (рекурсия) С++

33K
26 июня 2008 года
Nickolai
10 / / 17.06.2008
Нужно определить явл. введенное число палиндромом при помощи рекурсивной функции. Был бы очень рад помощи!
9.5K
26 июня 2008 года
ROLpogo
80 / / 22.08.2006
Код:
#include <conio.h>
#include <stdio.h>
#include <string.h>

bool GetIsPalindrom(char *pStr, int StartIndex, int EndIndex)
{
  if ( StartIndex >= EndIndex )
    return true;
  if ( pStr[StartIndex] == pStr[EndIndex] )
    return GetIsPalindrom(pStr, StartIndex + 1, EndIndex - 1);
  return false;
}

void main()
{
  clrscr();
  printf("Enter Value: ");
  char  sBuf[200];
  scanf("%s", sBuf);
  bool  bPalindrom = GetIsPalindrom(sBuf, 0, strlen(sBuf) - 1);
  printf("Value: %s is %s", sBuf, bPalindrom? "palindrom" : "not palindrom");
  getch();
}
33K
27 июня 2008 года
Nickolai
10 / / 17.06.2008
Спасибо.
Но очень желательно без использования массива.
5
27 июня 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Nickolai
Но очень желательно без использования массива.

Это не совсем массив. Это строковое представление числа.

9.5K
27 июня 2008 года
ROLpogo
80 / / 22.08.2006
Этот пример универсален, благодаря использованию строки в виде массива char'ов. Вечером напишу вариант чисто для чисел, если кто-то не опередит :)
33K
27 июня 2008 года
Nickolai
10 / / 17.06.2008
Было бы замечательно. Буду с нетерпением ждатЬ!
9.5K
27 июня 2008 года
ROLpogo
80 / / 22.08.2006
Код:
#include <conio.h>
#include <stdio.h>
#include <math.h>

bool GetIsPalindrom(long Value, int StartIndex, int EndIndex, int DigCount)
{
  if ( StartIndex >= EndIndex )
    return true;

  int  FirstDig  = (int)(Value / pow(10, DigCount - StartIndex)) % 10,
       SecondDig = (int)(Value / pow(10, DigCount - EndIndex  )) % 10;

  if ( FirstDig == SecondDig )
    return GetIsPalindrom(Value, StartIndex + 1, EndIndex - 1, DigCount);
  return false;
}

void main()
{
  clrscr();
  printf("Enter Value: ");
  long  iValue;
  scanf("%i", &iValue);
  int   DigCount = 1;
  while ( iValue / pow(10, DigCount) > 1 )
    DigCount++;
  bool  bPalindrom = GetIsPalindrom(iValue, 1, DigCount, DigCount);
  printf("Value: %i is %s", iValue, bPalindrom? "palindrom" : "not palindrom");
  getch();
}
33K
27 июня 2008 года
Nickolai
10 / / 17.06.2008
Спасибо огромное!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог