Хелпикс

Главная

Контакты

Случайная статья





Методы системы программирования»



 

МИНПРОСВЕЩЕНИЯ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Тульский государственный педагогический университет им. Л.Н. Толстого» (ТГПУ им. Л.Н. Толстого)

 

Кафедра информатики и информационных технологий

ОТЧЕТ

по дисциплине:

«Методы системы программирования»

Лабораторная работа № 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;

}

Контрольные примеры:             


Пример № 1

Пример № 2

Пример № 3

2) Создать класс Payment
Поля в классе:
1) ФИО
2) Оклад
3) Год поступления на работу
4) % надбавки
5) Подоходный налог
6) Кол-во отработанных дней в месяце
7) Кол-во рабочих дней в месяце
8) Начисленная и удержанная суммы
Реализовать методы:
1) Вычисление начисленной суммы
2) Вычисление удержанной суммы
3) Вычисление суммы, выдаваемой на руки
4) Вычисление стажа
Стаж вычисляется: Полное кол-во лет прошедших от года поступления на работу до текущего года.
Начисления: Сумма, начисленная за отработанные дни и надбавки т.е. доли от первой суммы.
Удержания: Отчисления в пенсионный фонд (1% от начисленной суммы) и подоходный налог (13% от начисленной суммы без отчислений в пенсионный фонд..

Код программы:
#include <iostream>

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

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.