Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_1.doc
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
93.18 Кб
Скачать

Вариант 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

*/

  1. Поле first — целое положительное число, координата курсора/указателя по горизонтали; поле second — целое положительное число, координата курсора по вертикали. Реализовать метод changex() — изменение горизонтальной координаты курсора; реализовать метод changey() — изменение вертикальной координаты курсора. Методы должны проверять выход за границу экрана.

  2. Поле first — вещественное число, целая часть числа; поле second — положительное вещественное число, дробная часть числа. Реализовать метод multiply() — умножение на произвольное вещественное число типа double. Метод должен правильно работать при любых допустимых значениях first и second.

  3. Поле first – вещественное число, действительная часть комплексного числа; поле second – вещественное число, мнимая часть комплексного числа. Реализовать метод module()– вычисление модуля комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.

  4. Поле first – вещественное число, действительная часть комплексного числа; поле second – вещественное число, мнимая часть комплексного числа. Реализовать метод arg()– вычисление аргумента комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.

  5. Поле first – вещественное число, модуль комплексного числа; поле second – вещественное число, аргумент комплексного числа. Реализовать метод re()– вычисление действительной части комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.

  6. Поле first – вещественное число, модуль комплексного числа; поле second – вещественное число, аргумент комплексного числа. Реализовать метод im()– вычисление мнимой части комплексного числа. Метод должен правильно работать при любых допустимых значениях first и second.

  7. Поле first — целое число, целая часть числа; поле second — положительное целое число, дробная часть числа. Реализовать метод multiply() — умножение на произвольное целое число типа int. Метод должен правильно работать при любых допустимых значениях first и second.

Много вариантов на геометрические фигуры можно сделать – привести в качестве примера.

  1. Ромб – сторона и угол

  2. Ромб – две диагонали.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]