Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.
#include<iostream> #include<iomanip> #include <math.h> #include <conio.h> #include <windows.h> using namespace std; /* Определяем функцию, которая будет определять, можно ли представить число в виде суммы квадратов двух натуральных чисел. Поскольку должно выполняться равенство , будем проверять все возможные значения a в диапазоне Аргументами функции являются: проверяемое число n и ссылки на a и b; a и b объявлены как ссылки, поскольку функция должна передать их найденные значения главной программе, которая выведет их на экран. Функция возвращает либо 0, либо 1. */ byte IsPossible(long n, long& a, long& b) { byte flag = 0; for (a = 1; a < sqrt((double)(n)); a++) { b = long(sqrt((double)(n - a*a)) +.5); if (n == a * a + b * b) { flag = 1; break; } } return flag; } //========================================================= /* Главная программа проверяет заданный диапазон и выводит найденные числа на экран */ int main() { //Настройки шрифтов и региональных стандартов if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) //тоже самое для вывода { cerr<<"Failed to set OUTPUT page!"<<endl; } long m, n; long a, b; cout<< "Задайте диапазон (два натуральных числа) \n"; cin >> m >> n; byte flag=0; // Проходим заданный диапазон [m,n] и проверяем число i: for (long i = m; i <= n; i++) if (IsPossible(i, a, b)) /* Если i удовлетворяет условию, выполняем нижеследующие действия: */ { if (!flag) /* Если флажок равен 0, значит найдено первое число, в этом случае выводим поясняющий текст: */ { cout<< "Числа, которые можно представить "; cout<< "в виде суммы квадратов двух натуральных чисел\n"; } flag = 1; /* Делаем флажок равным 1, текст больше выводиться не будет */ cout<< i << " = " << a << "*" << a <<" + " << b << "*" << b << endl; // Вывели результат типа 5 = 1*1 + 2*2 } /* Здесь проверка заданного отрезка закончилась, если флажок остался равным 0, выводим сообщение: */ if (!flag) cout<< "На этом отрезке нет нужных чисел\n"; _getch(); return 0; } Date: 2016-08-30; view: 346; Нарушение авторских прав |