Другие языки программирования и технологии

Поясните код программы в С++! Желательно подробно...

#include<stdlib.h> #include<stdio.h> #include<string.h> void main() { const int N = 6; // Большее число не влезет в int. int CurrentN = 0; int Counter = 0; while(CurrentN < N) { char Buffer1[20]; char Buffer2[20]; char* StrCounter = itoa(Counter, Buffer1, 10); char* StrDoubleCounter = itoa(Counter * Counter, Buffer2, 10); if(strcmp(&StrDoubleCounter[strlen(StrCounter)], StrCounter) == 0) { printf("%s => %s\n", StrDoubleCounter, StrCounter); CurrentN++; } Counter++; } getchar(); }
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//Программа для нахождения магических чисел, квадрат меньшего содержит в своем представлении //меньшее число, записанное в правой половине разрядов квадрата
void main()
{
cоnst int N = 6; // Большие числа не влезут в int.,поэтому только первые 6 магических чисел

int CurrentN = 0;
int Counter = 0;

while(CurrentN < N) пока найденных чисел меньше 6
{
char Buffer1[20]; //буфер для хранения 1 числа
char Buffer2[20];// буфер для 2 числа, являющегося квадратом первого
char* StrCounter = itoa(Counter, Buffer1, 10); //переводим счетчик целое в строку
char* StrDoubleCounter = itoa(Counter * Counter, Buffer2, 10);//то же для квадрата счетчика
if(strcmp(&StrDoubleCounter[strlen(StrCounter)], StrCounter) == 0) //сравниваем подстроку квадрата начиная с
//символа соответсвующего по счету длине строки счетчика
{
printf("%s => %s\n", StrDoubleCounter, StrCounter);//выводим обе строки
CurrentN++;//увеличиваем счетчик найденных чисел
}
Counter++;//наращиваем счетчик цикла
}
getchar();//показываем результат до нажатия любой клавиши
}
PS .Вот эти числа :5,6,76....(есть еще 3,но их Вам надо самим найти ))
KT
Kuandik Taskinbaev
35 996
Лучший ответ
Ужас какой. Говнокод чистой воды. Это индус писал? А если подробнее, то.
Сначала объявляется константа N, ну это понятно.
Дальее объявляются переменная цикла (CounterN) и счетчик (Counter)
потом цикл начинается, будет циклить до N (которое почему то равно всего 6, ну не суть)
Дальше, переменная цикла приводится к строке (например, число 2 приведется к строке "2"), также приводится квадрат переменной цикла.
потом сравнивается первая строка, и вторая, но вторая сравнивается не с самого начала, а ее конец, по длине первой. Если равны, увеличивается счетчик и выводятся числа.
Т. е. когда CounterN равен, например, 5
StrCounter = "5"
StrDoubleCounter = "25"
Первая строка имеет длину 1, т. е. для сравнения будет взята "5" со второй строки. Она будет сраниваться с первой строкой, и да, они равны, ок
Ну очевидно, программа выводит те числа, квадрат которого оканчивается на само число. Она, может, даже работает в пределах от 2 до 6.
Но, например, 0 и 1 она вроде не распознает.
GI
Garik Israelyan
3 721