From 9cf88c48515421fa1f811501c579e29e6ae9a566 Mon Sep 17 00:00:00 2001 From: KAPUSTIAN DMYTRO <81609872+dimonkapus@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:48:40 +0200 Subject: [PATCH] Kapustian Dmytro 2 year compmath1 lab12 Classwork/Homework --- lab12/t1.cpp | 14 ++++++++++++++ lab12/t10.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ lab12/t19.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ lab12/t2.cpp | 19 +++++++++++++++++++ lab12/t3.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ lab12/t4.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ lab12/t5.cpp | 31 +++++++++++++++++++++++++++++++ 7 files changed, 243 insertions(+) create mode 100644 lab12/t1.cpp create mode 100644 lab12/t10.cpp create mode 100644 lab12/t19.cpp create mode 100644 lab12/t2.cpp create mode 100644 lab12/t3.cpp create mode 100644 lab12/t4.cpp create mode 100644 lab12/t5.cpp diff --git a/lab12/t1.cpp b/lab12/t1.cpp new file mode 100644 index 0000000..c5774b5 --- /dev/null +++ b/lab12/t1.cpp @@ -0,0 +1,14 @@ +#include +#include +#include + +// Lab 12 task 1 + +int main() { + double x, y; + std::cin >> x >> y; + double ans = std::pow(x, y); + std::cout << "x ^ y = " << ans << '\n' + << "x ^ y = " << std::scientific << ans << '\n'; + +} \ No newline at end of file diff --git a/lab12/t10.cpp b/lab12/t10.cpp new file mode 100644 index 0000000..42cc675 --- /dev/null +++ b/lab12/t10.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +int main() { + std::ifstream inputFile("input.txt"); + if (!inputFile.is_open()) { + std::cerr << "Не вдалося відкрити файл для читання." << std::endl; + return 1; + } + + std::vector numbers; + int number; + while (inputFile >> number) { + if (number >= 0) { + numbers.push_back(number); + } + } + + inputFile.close(); + + std::ofstream outputFile("output.txt"); + if (!outputFile.is_open()) { + std::cerr << "Не вдалося відкрити файл для запису." << std::endl; + return 1; + } + + for (size_t i = 0; i < numbers.size(); ++i) { + outputFile << numbers[i]; + if (i < numbers.size() - 1) { + outputFile << ' '; + } + } + + outputFile.close(); + + std::cout << "Операції виконано успішно." << std::endl; + + return 0; +} diff --git a/lab12/t19.cpp b/lab12/t19.cpp new file mode 100644 index 0000000..1398ef6 --- /dev/null +++ b/lab12/t19.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include + +struct Point { + int x, y, z; +}; + +double distance(const Point& p1, const Point& p2) { + return std::sqrt(std::pow(p2.x - p1.x, 2) + std::pow(p2.y - p1.y, 2) + std::pow(p2.z - p1.z, 2)); +} + +int main() { + std::ifstream inputFile("coordinates.txt"); + if (!inputFile.is_open()) { + std::cerr << "Не вдалося відкрити файл для читання." << std::endl; + return 1; + } + + std::vector points; + int x, y, z; + char comma; + while (inputFile >> x >> comma >> y >> comma >> z) { + points.push_back({x, y, z}); + } + + inputFile.close(); + + double maxDistance = 0; + Point startPoint, endPoint; + + for (size_t i = 0; i < points.size(); ++i) { + for (size_t j = i + 1; j < points.size(); ++j) { + double currentDistance = distance(points[i], points[j]); + if (currentDistance > maxDistance) { + maxDistance = currentDistance; + startPoint = points[i]; + endPoint = points[j]; + } + } + } + + std::cout << "Найдовший відрізок між точками (" << startPoint.x << ", " << startPoint.y << ", " << startPoint.z + << ") та (" << endPoint.x << ", " << endPoint.y << ", " << endPoint.z << ") з відстанню " << maxDistance << std::endl; + + return 0; +} diff --git a/lab12/t2.cpp b/lab12/t2.cpp new file mode 100644 index 0000000..7416c79 --- /dev/null +++ b/lab12/t2.cpp @@ -0,0 +1,19 @@ +#include +#include +#include + +// Lab 12 task 2 + + +int main() { + std::string s; + std::getline(std::cin, s); + uint64_t sum; + for (size_t i = 0; i + 10 <= s.size(); i += 10) { + uint64_t num; + std::from_chars(s.data() + i, s.data() + i + 10, num); + sum += num; + } + + std::cout << sum << '\n'; +} \ No newline at end of file diff --git a/lab12/t3.cpp b/lab12/t3.cpp new file mode 100644 index 0000000..c7fb6fc --- /dev/null +++ b/lab12/t3.cpp @@ -0,0 +1,45 @@ +#include +#include +#include + +// Lab 12 task 3 + +int main() { + constexpr size_t MAX_NUM_WIDTH = 8; + + size_t n; + std::cin >> n; + + std::cout.fill('+'); + std::cout.width(n * MAX_NUM_WIDTH + 1); // one extra for '\n' + + std::cout << '\n'; + + std::cout.fill(' '); + + for (size_t i = 1; i <= n; i++) { + std::cout.width(MAX_NUM_WIDTH); + std::cout << i; + } + std::cout << '\n'; + + std::cout.fill('+'); + std::cout.width(n * MAX_NUM_WIDTH + 1); + + std::cout << '\n'; + + std::cout.fill(' '); + + std::cout << std::setprecision(MAX_NUM_WIDTH-2); + + for (size_t i = 1; i <= n; i++) { + std::cout.width(MAX_NUM_WIDTH); + std::cout << std::sqrt(i); + } + std::cout << '\n'; + + std::cout.fill('+'); + std::cout.width(n * MAX_NUM_WIDTH + 1); + + std::cout << '\n'; +} \ No newline at end of file diff --git a/lab12/t4.cpp b/lab12/t4.cpp new file mode 100644 index 0000000..bb9ff91 --- /dev/null +++ b/lab12/t4.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +// Lab 12 task 4 + +int main() { + size_t n; + std::cin >> n; + + std::vector m(n); + std::vector x(n); + + for (size_t i = 0; i < n; i++) { + std::cin >> m[i]; + } + + constexpr const char* input_file = "data/lab12_task4_inputs.txt"; + constexpr const char* output_file = "data/lab12_task4_outputs.txt"; + + { + std::ifstream f(input_file); + if (!f.is_open() || f.bad()) { + std::cout << "can't open `" << input_file << "`\n"; + return EXIT_FAILURE; + } + + for (size_t i = 0; i < n; i++) { + f >> x[i]; + } + } + + { + std::ofstream f(output_file); + if (!f.is_open() || f.bad()) { + std::cout << "can't open `" << output_file << "`\n"; + return EXIT_FAILURE; + } + + for (size_t i = 0; i < n; i++) { + f << std::pow(x[i], m[i]) << ' '; + } + } +} \ No newline at end of file diff --git a/lab12/t5.cpp b/lab12/t5.cpp new file mode 100644 index 0000000..a4fd7b4 --- /dev/null +++ b/lab12/t5.cpp @@ -0,0 +1,31 @@ +#include +#include +#include + +#include +#include + +#include + +// Lab 12 task 5 + +int main() { + constexpr const char* input_file = "data/lab12_task5_inputs.txt"; + std::ifstream f(input_file); + + if (!f.is_open() || f.bad()) { + std::cout << "can't open `" << input_file << "`\n"; + return EXIT_FAILURE; + } + + std::vector nums; + int n; + while (f >> n) { + nums.push_back(n); + } + + std::cout << std::setprecision(4); + for (size_t i = 0; i < nums.size(); i++) { + std::cout << std::sqrt(nums[nums.size() - 1 - i]) << '\n'; + } +} \ No newline at end of file