методы / Laboratornaya_rabota_5
.pdfЛабораторная работа №5
Задание 1
Создать структуру ip адреса вида:
#include <iostream>
#include <vector> #include <string>
using namespace std;
struct IP{ private:
explicit IP(const string& ip_); void Print();
vector<int> ip;
};
int main(){
IP a("209.185.108.134"); return 0;
}
На вход конструктора подается строчка, содержащая ip адрес. Необходимо разделить адрес на октеты и проверить его на валидность (значение больше нуля и не превосходит 255). Если адрес не подходит под описание, его необходимо заменить на «0.0.0.0». Функция Print выводит значения построчно.
Пример выполнения задания:
Входные параметры |
Выходные значения |
|
|
0.0.0.0 |
0 0 0 0 |
|
|
255.255.255.252 |
255 255 255 252 |
|
|
1000.2.2.2 |
0 0 0 0 |
|
|
Задание 2 Создать структуру дробных чисел вида:
#include <iostream> |
|
using namespace std; |
|
struct Fraction{ |
|
public: |
|
explicit Fraction(const int& p_, const int& q_); |
//Конструктор с параметрами |
void Sum(const Fraction& right); |
//Сумма |
void Subtraction(const Fraction& right); |
//Разность |
void Composition(const Fraction& right); |
//Произведение |
void Print(); |
//Вывод значения |
int NOD(); |
//Наибольший общий делитель |
private: |
|
int p = 0; //Числитель (Значение по умолчанию) |
|
int q = 1; //Знаменатель (Значение по умолчанию)
};
int main(){
//Создание переменных
Fraction a(1, 2), b(3, 4);
//Вывод значений a.Print(); b.Print();
//Суммирование a.Sum(b); //Разность a.Subtraction(b); //Произведение a.Composition(b);
return 0;
}
Даная структура должна иметь конструктор с входящими числителем и знаменателем (если знаменатель равен 0, выбирается значение по умолчанию «0/1»).
Необходимо учитывать НОД для записи значений. При вводе дробного числа 3/9, происходить запись значений 1/3;
Математические функции выводят значения через «cout» без изменения исходных параметров. (Также, как и в предыдущем случае, необходимо выводить значение с использованием функции НОД).