Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа, которая находит первое автоморфное число справа от заданного.
Автоморфным называется число, которое равно последним цифрам своего квадрата, например 25 (25 * 25 = 6 25).
#include <iostream> #include <iomanip> #include <math.h> #include <conio.h> #include <windows.h> using namespace std;
bool Automorfnoe(long n) { long copy = n; // Берем копию числа n long m = 1; /* Сделаем число m, которое равно степени 10, причем степень равна количеству цифр проверяемого числа n, например для 25 число m = 100 */ do { m *= 10; copy /= 10; } while(copy); if ((n*n % m) == n) /* Берем остаток от деления квадрата числа n на m и получаем число, состоящее из последние цифр квадрата n, количество которых равно количеству цифр исходного числа, сравниваем полученное число c n и возвращаем истину, если числа равны */ return true; else return false; }
int main() { if(SetConsoleCP(1251)==0 { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } do { long m; cout<< "Задайте целое число "; cin>> m; // Поиск автоморфного числа n, лежащего справа от заданного числа m: long n = m+1; // Берем первое число bool flag = true; while (!Automorfnoe(n)) // пока число не автоморфное { n++; // переходим к следующему числу if (n > 1e5) { flag = FALSE; break;} /* прерываем поиск, если число стало слишком большим, чтобы ограничить время выполнения программы и не выйти за допустимый диапазон чисел */ } if (flag) // флажок, равный true, означает, что число найдено cout<< "Автоморфное число справа - " << n << ": " << n <<" в квадрате = " << n * n << endl; else cout<< "Число не найдено \n"; } while (_getch()!= 27); return 0; } 5. Программа находит точки пересечения линий y= ax+b и y = c/x +d (программа иллюстрирует перегрузку имени функции)
Для нахождения точек пересечения решим систему:
Если a не равно 0, решаем квадратное уравнение, в противном случае – линейное.
#include <iostream> #include <iomanip> #include <math.h> #include <conio.h> #include <windows.h> using namespace std; /* Определим две функции Root(корень), одну для решения квадратного уравнения, а другую – для линейного: */ void Root(double a, double b, double c, double& x1, double& x2, byte& k); void Root(double a, double b, double& x, byte& k); // Результаты работы функции объявлены как ссылки int main() { if(SetConsoleCP(1251)==0) //проверка правильности установки кодировки символов для ввода { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } double a, b, c, d; double x1, y1, x2, y2; byte k; // количество корней do { cout<< "Задайте a b c d "; cin>> a >> b >> c >> d; if (a) // Если а не равно 0, решаем квадратное уравнение Root(a, b-d, -c, x1, x2, k); // передаем функции коэффициенты уравнения и получаем корни и количество корней else // иначе решаем линейное уравнение: Root(b-d, -c, x1, k); // в зависимости от полученного значения k выводим ответ: switch(k) { case 3: cout<< "Линии совпадают \n"; break; case 2: y1 = a*x1 + b; y2 = a*x2 + b; cout<<"Линии пересекаются в 2 точках: " <<setprecision(2)<< x1 << ',' << y1 << " и " << x2 << ',' << y2 << endl; break; case 1: y1 = a*x1+ b; cout<<"Линии имеют одну общую точку "<<setprecision(2)<< x1 << ',' << y1 << endl; break; default: cout<<"Линии не пересекаются\n"; } } while (_getch()!= 27); return 0; } // Подпрограмма для решения квадратного уравнения void Root(double a, double b, double c, double& x1, double& x2, byte& k) { double d = b*b - 4*a*c; if (d > 0) { k = 2; x1 = (-b + sqrt(d)) / (2*a); x2 = (-b - sqrt(d)) / (2*a); if (x1==0 || x2 == 0) k = 1; // Исключаем нулевое значение x if (x1 == 0) x1 = x2; /* Если ненулевой корень один, то он будет храниться в x1 */ } else if (d == 0) { x1 = -b / (2*a); k = 1; if (x1 == 0) k = 0; } else k = 0; } // Подпрограмма для решения линейного уравнения void Root(double a, double b, double& x, byte& k) { if (a) { k = 1; x = -b / a; if (x == 0) k = 0; } else if (b) k = 0; else k = 3; } Date: 2016-08-30; view: 269; Нарушение авторских прав |