Вариант 0: пример программы.
0. Поле first – вещественное число, модуль комплексного числа; поле second – вещественное число, аргумент комплексного числа. Реализовать метод im()– вычисление мнимой части комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.
Программа.
Подключаемые библиотеки, описание структуры и функций
#include <iostream>
#include <cmath>
using namespace std;
struct Complex
{ float first; // модуль комплексного числа = радиус-вектор
float second; // аргумент комплексного числа = угол
bool init(float f, float s)
{ if (
(f < 0) ||
((f == 0)&&(s != 0))
)
return false; // неправильные аргументы - не инициализировать поля
else // аргументы правильные - инициализировать поля
{ first = f;
second = s;
return true;
}
}
void read();
void display();
float im(){ return first * sin(second); }
};
void Complex::display()
{ cout << first << " * exp(" << second << " * i);"; }
void Complex::read()
{ float f=0,s=0;
do
{ cout << "Задавать только корректные данные!" << endl;
cout << "Задайте модуль :_ "; cin >> f;
cout << "Задайте аргумент:_ "; cin >> s;
}
while(!init(f,s));
}
Complex make_Complex(float f, float s)
{ Complex A;
if (A.init(f,s)) return A;
else throw "Функции не понравились ваши данные!";
}
Функция main
int main()
{ setlocale(LC_ALL, "Russian");
Complex A; // создание одного объекта и вызов всех методов
if (!A.init(-1,1)) cout << "Неправильные данные!" << endl;
// И так все неправильные варианты тестов
// -----------------------------------
if (!A.init(1,1)) cout << "Неправильные данные!" << endl;
else { A.display(); cout << "Мнимая часть:_" << A.im() << endl; }
// И так все правильные варианты тестов
// Все правильные варианты тестов - для вызова метода read
// ---------------------------------------------------------------------
Complex *p = new Complex;
if (!(p->init(1, 3.14159265358f))) cout << "Неправильные данные!" << endl;
else { p->display(); cout << "Мнимая часть:_" << p->im() << endl; }
// ---------------------------------------------------------------------
try { // -- вызов make -- ловля исключения --
Complex D = make_Complex(0,0); // корректная инициализация объекта
// -----------------------------------
Complex M[5];
M[0] = make_Complex(1,0); M[0].display();
cout << " Мнимая часть:_" << M[0].im() << endl;
// и так - все правильные варианты тестов
// -----------------------------------
Complex *m = new Complex[2];
m[0] = make_Complex(1,-0.52359877560f);
m[0].display(); cout << " Мнимая часть:_" << m[0].im() << endl;
// -----------------------------------
// неправильные параметры для make_Complex – исключение
m[1] = make_Complex(-1,0);
} catch(char *s) { cout << s << endl; }
system("pause");
return 0;
}
Вариант 0: пример тестовых данных.
/* Тестовые данные для проверки:
-- неправильные --
-1.0, 1.0
0.0, 1.
0.0, -1.0
-- правильные -- результат im
0.0, 0.0 0.0
1.0, 0.0 0.0
1.0, 1.0 0.8414709848078965
1.0, -1.0 -0.8414709848078965
1.0, 1.57079632679 ПИ пополам 1.0
1.0, -1.57079632679 -ПИ пополам -1.0
2.0, 1.57079632679 ПИ пополам 2.0
1.0, 0.52359877560 одна шестая ПИ 0.5
1.0, -0.52359877560 -одна шестая ПИ -0.5
2.0, 0.52359877560 одна шестая ПИ 1.0
2.0, 2.61799387800 пять шестых ПИ 1.0
1.0, 3.14159265358 ПИ 0.0
*/
Поле first — целое положительное число, координата курсора/указателя по горизонтали; поле second — целое положительное число, координата курсора по вертикали. Реализовать метод changex() — изменение горизонтальной координаты курсора; реализовать метод changey() — изменение вертикальной координаты курсора. Методы должны проверять выход за границу экрана.
Поле first — вещественное число, целая часть числа; поле second — положительное вещественное число, дробная часть числа. Реализовать метод multiply() — умножение на произвольное вещественное число типа double. Метод должен правильно работать при любых допустимых значениях first и second.
Поле first – вещественное число, действительная часть комплексного числа; поле second – вещественное число, мнимая часть комплексного числа. Реализовать метод module()– вычисление модуля комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.
Поле first – вещественное число, действительная часть комплексного числа; поле second – вещественное число, мнимая часть комплексного числа. Реализовать метод arg()– вычисление аргумента комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.
Поле first – вещественное число, модуль комплексного числа; поле second – вещественное число, аргумент комплексного числа. Реализовать метод re()– вычисление действительной части комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.
Поле first – вещественное число, модуль комплексного числа; поле second – вещественное число, аргумент комплексного числа. Реализовать метод im()– вычисление мнимой части комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.
Поле first — целое число, целая часть числа; поле second — положительное целое число, дробная часть числа. Реализовать метод multiply() — умножение на произвольное целое число типа int. Метод должен правильно работать при любых допустимых значениях first и second.
Много вариантов на геометрические фигуры можно сделать – привести в качестве примера.
Ромб – сторона и угол
Ромб – две диагонали.