брат учится на экон. факультете. Задали им, зачем-то, написать программу, которая пишет числа, допустим в стандартный вывод, если число и его квадрат оба являются палиндромами. Попросил написать меня. Ну я - легко. А вот застрял.
Я где-то «накосячил» в ф-ции is_palindrome. Посмотрите пожалуйста. Программа должна найти палиндромы до 13 разряда квадрата палиндрома. Для Int это слишком много. Какой тип данных лучше подходит? И как его правильно конвертировать потом в char? Спасибо!
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <cmath>
#include <string.h>
#define LENGHT 2 //2 только для теста пока
bool is_palindrome(char cWord[]);
int lenghtOfString(char cWord[]);
int main(int argc, char *argv[])
{
int temp = 0;
char cWord[LENGHT] = {0};
char cWordW[LENGHT] = {0};
bool goUntill = true;
int i = 1;
while (goUntill){
sprintf(cWord, "%d", i); //конвертируем число в char
if (is_palindrome(cWord)){
temp=i * i;
printf(" temp: %d \n", temp);
sprintf(cWordW, "%d", temp);
if (strlen(cWord) == LENGHT){
goUntill = false;
}
if (is_palindrome(cWordW)){
printf("%d является палиндромом \n", i);
}
}
i++;
}
return EXIT_SUCCESS;
}
bool is_palindrome(char cWord[])
{
int i = 0;
int lenght = strlen(cWord);
for (i = 0; i <= (lenght - 1); i++){
//Сравниваем первое с последним, второе в предпоследним...
if(cWord[i] != cWord[((lenght - 1) - 1)]){
if (cWord[i]+32 != cWord[((lenght-1)-1)] && cWord[i]-32 != cWord[((lenght -1)-i)]){
return true;
}
}
}
return false;
}