|
||||
Методы системы программирования»
Кафедра информатики и информационных технологий ОТЧЕТ по дисциплине: «Методы системы программирования» Лабораторная работа № 2 ВАРИАНТ №15 Выполнил: студент группы 121591 факультета математики, физики и информатики Мишин И.В.
Тула – 2020
1) Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменения размеров, построения наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников. Код программы: #include <conio.h> #include <iostream> #include <cstdlib> #include <ctime> using namespace std; class rectangle { private: double x1, x2, y1, y2, dx, dy, r; public: // Конструктор с 4 параметрами rectangle(double a, double b, double c, double d) : x1(a), x2(b), y1(c), y2(d) { } // Конструктор по умолчанию rectangle() : x1(2), x2(5), y1(2), y2(0) { } ~rectangle() { } // Деструктор
void Input(); // метод ввода с клавиатуры void Result(); // метод вывода на экран void Peremeshenie(); // перемещение void Size(); // изменение размера void Minimal(); // построение минимального void Сross(); // пересечение 2 прямоугольников
};
void rectangle::Input() { cout << "Введите координату х левых точек" << endl; cin >> x1; cout << "Введите координату y верхних точек" << endl; cin >> y1; cout << "Введите координату х правых точек" << endl; cin >> x2; cout << "Введите координату y нижних точек" << endl; cin >> y2; }
void rectangle::Result() { cout << "Вы ввели следующие координаты прямоугольника:" << endl; cout << " A:" << "(" << x1 << "," << y1 << ")" << endl; cout << " B:" << "(" << x2 << "," << y1 << ")" << endl; cout << " C:" << "(" << x2 << "," << y2 << ")" << endl; cout << " D:" << "(" << x1 << "," << y2 << ")" << endl; }
void rectangle::Peremeshenie() { cout << " На сколько единиц вы хотите переместить прямоугольник по оси X ?" << endl; cin >> dx; cout << " На сколько единиц вы хотите переместить прямоугольник по оси Y ?" << endl; cin >> dy; cout << "Получились следующие координаты прямоугольника:" << endl; cout << " A:" << "(" << x1 + dx << "," << y1 + dy << ")" << endl; cout << " B:" << "(" << x2 + dx << "," << y1 + dy << ")" << endl; cout << " C:" << "(" << x2 + dx << "," << y2 + dy << ")" << endl; cout << " D:" << "(" << x1 + dx << "," << y2 + dy << ")" << endl; }
void rectangle::Size() { cout << " Во сколько раз изменяем размер прямоугольника ?" << endl; cin >> r; cout << "Получились следующие координаты прямоугольника:" << endl; cout << " A:" << "(" << x1 << "," << y1 << ")" << endl; cout << " B:" << "(" << x2 * r << "," << y1 << ")" << endl; cout << " C:" << "(" << x2 * r << "," << y2 << ")" << endl; cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
} void rectangle::Minimal() { double x3, x4, y3, y4, x_min = x1, x_max = x1, y_min = y1, y_max = y1; cout << " 2 прямоугольник:" << endl; cout << "Введите координату х левых точек" << endl; cin >> x3; cout << "Введите координату y верхних точек" << endl; cin >> y3; cout << "Введите координату х правых точек" << endl; cin >> x4; cout << "Введите координату y нижних точек" << endl; cin >> y4; cout << endl; cout << "Вы ввели следующие координаты 1 прямоугольника:" << endl; cout << " A:" << "(" << x1 << "," << y1 << ")" << endl; cout << " B:" << "(" << x2 << "," << y1 << ")" << endl; cout << " C:" << "(" << x2 << "," << y2 << ")" << endl; cout << " D:" << "(" << x1 << "," << y2 << ")" << endl; cout << endl; cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl; cout << " A:" << "(" << x3 << "," << y3 << ")" << endl; cout << " B:" << "(" << x4 << "," << y3 << ")" << endl; cout << " C:" << "(" << x4 << "," << y4 << ")" << endl; cout << " D:" << "(" << x3 << "," << y4 << ")" << endl; cout << endl; double A[4] = { x1,x2,x3,x4 }, B[4] = { y1,y2,y3,y4 }; for (int i = 0; i < 4; i++) { if (x_max < A[i]) { x_max = A[i]; } if (y_max < B[i]) { y_max = B[i]; } if (x_min > A[i]) { x_min = A[i]; } if (y_min > B[i]) { y_min = B[i]; } } cout << " Наименьший прямоугольник содержащий оба предыдущих имеет следующие координаты: " << endl; cout << " A:" << "(" << x_min << "," << y_max << ")" << endl; cout << " B:" << "(" << x_max << "," << y_max << ")" << endl; cout << " C:" << "(" << x_max << "," << y_min << ")" << endl; cout << " D:" << "(" << x_min << "," << y_min << ")" << endl; } void rectangle::Сross() { double x3, x4, y3, y4, x_min = x1, x_max = x1, y_min = y1, y_max = y1, x1_sred, x2_sred, y1_sred, y2_sred; cout << " 2 прямоугольник:" << endl; cout << "Введите координату х левых точек" << endl; cin >> x3; cout << "Введите координату y верхних точек" << endl; cin >> y3; cout << "Введите координату х правых точек" << endl; cin >> x4; cout << "Введите координату y нижних точек" << endl; cin >> y4; cout << endl; cout << "Вы ввели следующие координаты 1 прямоугольника:" << endl; cout << " A:" << "(" << x1 << "," << y1 << ")" << endl; cout << " B:" << "(" << x2 << "," << y1 << ")" << endl; cout << " C:" << "(" << x2 << "," << y2 << ")" << endl; cout << " D:" << "(" << x1 << "," << y2 << ")" << endl; cout << endl; cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl; cout << " A:" << "(" << x3 << "," << y3 << ")" << endl; cout << " B:" << "(" << x4 << "," << y3 << ")" << endl; cout << " C:" << "(" << x4 << "," << y4 << ")" << endl; cout << " D:" << "(" << x3 << "," << y4 << ")" << endl; cout << endl; double A[4] = { x1,x2,x3,x4 }, B[4] = { y1,y2,y3,y4 }; for (int i = 0; i < 4; i++) { if (x_max < A[i]) { x_max = A[i]; } if (y_max < B[i]) { y_max = B[i]; } if (x_min > A[i]) { x_min = A[i]; } if (y_min > B[i]) { y_min = B[i]; } }
for (int i = 0; i < 4; i++) { if ((A[i] != x_max) && (A[i] != x_min)) { x1_sred = A[i]; break; } } for (int i = 0; i < 4; i++) { if ((A[i] != x_max) && (A[i] != x_min) && (A[i] != x1_sred)) { x2_sred = A[i]; break; } } for (int i = 0; i < 4; i++) { if ((B[i] != y_max) && (B[i] != y_min)) { y1_sred = B[i]; break; } } for (int i = 0; i < 4; i++) { if ((B[i] != y_max) && (B[i] != y_min) && (B[i] != y1_sred)) { y2_sred = B[i]; break; } } cout << " Прямоугольник на пересечении двух предыдущих имеет следующие координаты: " << endl; cout << " A:" << "(" << x1_sred << "," << y2_sred << ")" << endl; cout << " B:" << "(" << x2_sred << "," << y2_sred << ")" << endl; cout << " C:" << "(" << x2_sred << "," << y1_sred << ")" << endl; cout << " D:" << "(" << x1_sred << "," << y1_sred << ")" << endl;
}
int main() { setlocale(LC_ALL, "Russian");
cout << "Прямоугольники \n Справка: \n 1 - Ввод данных \n 2 - Вывод \n 3 - Перемещение \n 4 - изменение размера\n 5 - Минимальный прямоугольник содержащий 2 заданных\n 6 - Прямоугольник получившийся на пересечении 2 заданных\n 0 - выход\n" << endl; rectangle ObjectA; // Создаем объект без параметров, то есть будет использован конструктор по умолчанию int Control; do { cout << ">"; cin >> Control; if (Control == 1) ObjectA.Input();
if (Control == 2) ObjectA.Result();
if (Control == 3) ObjectA.Peremeshenie();
if (Control == 4) ObjectA.Size();
if (Control == 5) ObjectA.Minimal();
if (Control == 6) ObjectA.Сross();
} while (Control != 0);
return 0; } Контрольные примеры:
Пример № 2
Пример № 3 2) Создать класс Payment Код программы: using namespace std;
class Payment { private: /*Поля в классе: 1) ФИО 2) Оклад 3) Год поступления на работу 4) % надбавки 5) Подоходный налог 6) Кол-во отработаных дней в месяце 7) Кол-во рабочих дней в месяце 8) Начисленная и удержанная суммы*/ char f[256]; char i[256]; char o[256]; double okl; int godpost; double nadbaf; double podoxod; double kolvootr; double kolvomes; double nach; double ud; public: //Payment(char a[256], char b[256], char s[256], double os, int god, double nad, double pod, int kol1, int kol2, double nach1) : f(a), i(b), o(s), okl(os), godpost(god), nadbaf(nad), podoxod(pod), kolvootr(kol1),kolvomes(kol2),nach(nach1) {} Payment() : f("Щадин"),i("Евгений"),o("Евгеньевич"), okl(12500),godpost(2010),nadbaf(800),podoxod(5000),kolvootr(25), kolvomes(31) {} ~Payment() {}
void vivod(); void vvod(); void staf(); void na(); void yder(); void nar(); };
void Payment::vivod() { cout<<"Фамилия " << f <<"\n"<<"Имя "<< i<<"\n" << "Отчество " << o << "\n" << "Оклад " << okl << "\n" << "Год поступления " << godpost << "\n" << "Надбавки " << nadbaf << "\n" << "Подоходный налог " << podoxod << "\n" << "Кол-во отработаных дней в месяце " << kolvootr << "\n"<<"Кол-во рабочих дней в месяце " << kolvomes << "\n"; }
void Payment::vvod() { cout << "Введите фамилию\n"; cin >> f; cout << "Введите имя\n"; cin >> i; cout << "Введите отчество\n"; cin >> o; cout << "Введите оклад\n"; cin >> okl; cout << "Введите год поступления\n"; cin >> godpost; cout << "Введите надбавку\n"; cin >> nadbaf; cout << "Введите подоходный налог\n"; cin >> podoxod; cout << "Введите количество отработанных дней\n"; cin >> kolvootr; cout << "Введите количество дней\n"; cin >> kolvomes;
}
void Payment::staf() { cout << "Введите текущий год\n"; int god; cin >> god; cout << "Стаж " << god - godpost<<"\n"; } void Payment::na() { double osn, dob; osn = (okl * (((kolvootr * 100) / kolvomes)))/100; dob = osn * (nadbaf/100); nach = osn + dob; cout << "Основное\t" << osn<<"\n"; cout << "Начислено\t" << nach<<"\n"; }
void Payment::yder() { ud = nach*(podoxod/100) +nach*(1.0/100); cout << "Удержено\t"<<ud<<"\n" ; } void Payment::nar() { cout << nach - ud<<"\n"; }
int main() { system("chcp 1251"); Payment s; cout << "Справка\n1)Ввод\n2)Вывод\n3)Вычисление начисленной суммы\n4)Вычисление удержанной суммы\n5) Вычисление суммы, выдаваемой на руки\n6) Вычисление стажа\n0)Выход\n"; int a;
do { cout << ">>"; cin >> a;
if (a == 1) s.vvod(); if (a == 2) s.vivod(); if (a == 6) s.staf(); if (a == 3) s.na(); if (a == 4) s.yder(); if (a == 5) s.nar();
} while (a!=0);
} Пример № 1 Пример № 2 Пример №3
15.Индивидуальное задание. «Комплексное число» – Complex. Класс должен содержать несколько конструкторов и операции для сложения, вычитания, умножения, деления, присваивания. Создать два вектора размерности n из комплексных координат. Передать их в функцию, которая выполняет вычитание комплексных векторов. Код программы #include <iostream> using namespace std; float ve1[3], ve2[3]; //float d; template <class T> class complex { T v; public:float c, m; float vc[3]; float vm[3]; float slv1[3]; float slv2[3]; float vuc1, vuc2; complex(float d, float e) { c = d; m = e; }; complex() {} void vector(float ve1, float ve2, float ve3, float ve4, float ve5, float ve6) { vc[0] = ve1; vc[1] = ve2; vc[2] = ve3; vm[0] = ve4; vm[1] = ve5; vm[2] = ve6; cout << "Первый вектор" << "(" << vc[0] << "+" << "(" << vm[0] << ")" << "i" << "," << vc[1] << "+" << "(" << vm[1] << ")" << "i" << "," << vc[2] << "+" << "(" << vm[2] << ")" << "i" << ")" << "\n"; } void slogvector(complex <float> X, complex <float>Y) { slv1[0] = X.vc[0] + Y.vc[0]; slv1[1] = X.vc[1] + Y.vc[1]; slv1[2] = X.vc[2] + Y.vc[2]; slv2[0] = X.vm[0] + Y.vm[0]; slv2[1] = X.vm[1] + Y.vm[1]; slv2[2] = X.vm[2] + Y.vm[2]; cout << "Полученный вектор" << endl; cout << "Первый символ" << "(" << slv1[0] << ")" << slv2[0] << ")" << "i" << "," << slv1[1] << "+" << slv2[1] << ")" << "i" << "," << slv1[2] << "+" << "(" << slv2[2] << ")" << "i" << ")" << "\n"; } void slog(complex<float> x, complex <float> Y) { vuc1 = x.c + Y.c; vuc2 = x.m + Y.m; cout << "Сложение равно" << vuc1 << "+" << "(" << vuc2 << ")" << "i" << "\n"; } void vush(complex<float> x, complex <float> Y) {
vuc1 = x.c - Y.c; vuc2 = x.m - Y.m; cout << "Вычитание равно" << vuc1 << "+" << "(" << vuc2 << ")" << "i" << "\n"; } void ymnog(complex<float> x, complex <float> Y) { vuc1 = x.c * Y.c + x.m * Y.m; vuc2 = x.c * Y.m + x.m * Y.c; cout << "Умножение равно" << vuc1 << "+" << "(" << vuc2 << ")" << "i" << "\n"; } void delenie(complex<float> x, complex <float> Y) { vuc1 = (x.c * Y.c + x.m * Y.m) / (Y.c * Y.c * Y.m * Y.m); vuc2 = (x.m * Y.c - x.c * Y.m) / (Y.c * Y.c * Y.m * Y.m); cout << "Деление равно" << vuc1 << "+" << "(" << vuc2 << ")" << "i" << "\n"; } /*T&operator +=(float i) { return c+=i; }*/ }; void main() { setlocale(LC_ALL, "Russian"); float dl, mnim, dl1, mnim1; complex <float>Y; float b = 0; cout << "Введите вещественную часть";cin >> dl; cout << "Введите мнимую часть";cin >> mnim; complex<float> x(dl, mnim); cout << "Введите вещественную часть";cin >> dl1; cout << "Введите мнимую часть";cin >> mnim1; complex<float> x1(dl1, mnim1); x.slog(x, Y); cout << endl; x.vush(x, Y); cout << endl; x.ymnog(x, Y); cout << endl; x.delenie(x, Y); cout << endl; cout << "Создаем 1 вектор " << endl; for (int i = 0;i < 3;i++) { cout << i + 1 << "вещественную часть" << endl;cin >> ve1[i]; cout << i + 1 << "мнимую часть" << endl;cin >> ve2[i]; x.vector(ve1[0], ve1[1], ve1[2], ve2[0], ve2[1], ve2[2]); cout << "Создаем 2 вектор " << endl; for (int i = 0;i < 3;i++) { cout << i + 1 << "вещественную часть" << endl;cin >> ve1[i]; cout << i + 1 << "мнимую часть" << endl;cin >> ve2[i]; } Y.vector(ve1[0], ve1[1], ve1[2], ve2[0], ve2[1], ve2[2]); x.slogvector(x, Y); cin.get(); cin.get(); } }
Контрольный пример:
Пример №1
|
||||
|