С++
Завдання 1. Створити структуру, що описує прямокутник. Написати функції для роботи з цією структурою: переміщення прямокутника, зміна розміру прямокутника, друк прямокутника.
Завдання 2. Створіть структуру, що описує точку у двовимірній системі координат (x, y). За допомогою цієї структури задайте дві точки. Напишіть функцію, яка обчислює відстань між цими двома точками.
Завдання 3. Створіть структуру, що описує простий дріб. Реалізуйте арифметичні операції з дробами: суму, різницю, множення, ділення. Врахувати можливість скорочення дробів і перетворення з неправильного дробу на простий.
Answers & Comments
Завдання 1
#include <iostream>
using namespace std;
struct Rectangle {
double length;
double width;
double x; // координата x лівого верхнього кута прямокутника
double y; // координата y лівого верхнього кута прямокутника
};
void moveRectangle(Rectangle &rect, double dx, double dy) {
rect.x += dx;
rect.y += dy;
}
void resizeRectangle(Rectangle &rect, double length, double width) {
rect.length = length;
rect.width = width;
}
void printRectangle(Rectangle rect) {
cout << "Left top corner coordinates: (" << rect.x << ", " << rect.y << ")\n";
cout << "Length: " << rect.length << ", Width: " << rect.width << "\n";
}
int main() {
Rectangle rect = {10.0, 5.0, 0.0, 0.0}; // створюємо прямокутник
printRectangle(rect); // друк прямокутника до переміщення
moveRectangle(rect, 5.0, 10.0); // переміщення на (5, 10)
resizeRectangle(rect, 8.0, 4.0); // зміна розміру на довжина 8 і ширина 4
printRectangle(rect); // друк прямокутника після переміщення та зміни розміру
return 0;
}
Завдання 2
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x;
double y;
};
double distance(Point p1, Point p2) {
return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}
int main() {
Point p1 = {0.0, 0.0};
Point p2 = {3.0, 4.0};
cout << "Distance between (" << p1.x << ", " << p1.y << ") and (" << p2.x << ", " << p2.y << "): " << distance(p1, p2) << "\n";
return 0;
}
Завдання 3
#include <iostream>
using namespace std;
struct Fraction {
int numerator; // чисельник
int denominator; // знаменник
};
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
Fraction reduce(Fraction f) {
int d = gcd(f.numerator, f.denominator);
f.numerator /= d;
f.denominator /= d;
return f;
}
Fraction add(Fraction f1, Fraction f2) {
Fraction f;
f.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
f.denominator = f1.denominator * f2.denominator;
return reduce(f);
}
Fraction subtract(Fraction f1, Fraction f2) {
Fraction f;
f.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
f.denominator = f1.den