Регистрация
22 Ноя 2013
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
Нужно чтобы программа определяла какой вид числа появляется от корня. например:
if (sqrt(x) != ...) {cout<<"целое число/нецелое"}
 
#include <iostream> #include <cmath> using namespace std; int main() { double x,y; cin >> x; y = sqrt(x); int z = y; if(y - (double) z == 0.0) { cout << "целое число" << endl; } else cout << "не целое число" << endl; return 0; }
 
#include <iostream> using namespace std; bool fn(unsigned x) { return x == static_cast<unsigned>(pow(static_cast<unsigned>(sqrt(x)), 2)); } unsigned integer(const char* msg) { cout << msg; unsigned value; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); return value; } int main() { while (true) puts(fn(integer("Unsigned: ")) ? "Integer" : "Real"); }
 
auto s = sqrt(x); if (fabs(s - round(s)) < eps) { /* целое */ } else { /* нецелое */ } eps подбирать по вкусу разумеется, метод далёк от точного, если тебе нужно определять, является ли целое число полным квадратом, лучше использовать другой способ
 
У меня выражения y = sqrt(x); if (y == ceil(y)) всегда точно определяют, что х - это полный квадрат, а корень из него - целое число. Проверено в цикле for (double x = 1; x <= 1e10; x++) Ошибок нет.
 
Назад
Сверху