Last active
March 6, 2025 10:15
-
-
Save Ruthenus/cc56779d754f931119640978742a2357 to your computer and use it in GitHub Desktop.
Week 12 Homework in IT STEP Academy (variables tasks)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <Windows.h> | |
#include <cmath> | |
#include <algorithm> | |
using namespace std; | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 1. Написати програму, яка пропонує користувачеві ввести радіус | |
// окружності, а потім обчислює площу та довжину цієї окружності. | |
// Число Pi задати в програмі як дійсну константу. | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 1\n\n"; | |
double radius, areaCircle, circumFerence; | |
const long double Pi = 3.1415926535897932384626433832795028841971; | |
cout << "Введіть радіус кола: "; | |
cin >> radius; | |
// areaCircle = Pi * radius * radius; | |
areaCircle = Pi * pow(radius, 2); | |
cout << "ПЛОЩА КРУГА: " << areaCircle << endl; | |
circumFerence = 2 * Pi * radius; | |
cout << "ДОВЖИНА КОЛА: " << circumFerence << endl; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 2. Поміняти місцями значення змінних a і b, спочатку з використанням | |
// додаткової третьої змінної, а потім — без. | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 2\n\n"; | |
float a, b, c; | |
cout << "Введіть значення змінної a: "; | |
cin >> a; | |
cout << "Введіть значення змінної b: "; | |
cin >> b; | |
cout << "Міняємо місцями значення змінних a i b двома способами: " << endl; | |
// Обмін значеннями, використовуючи додаткову третю змінну: | |
c = a; | |
a = b; | |
b = c; | |
cout << "a = " << a << endl; | |
cout << "b = " << b << endl; | |
// Повернемо початкові значення у той же спосіб: | |
c = a; | |
a = b; | |
b = c; | |
// Обмін значеннями змінних, використовуючи арифметичні операції: | |
a = a + b; | |
b = a - b; | |
a = a - b; | |
// На Python значно простіше... | |
// a, b = b, a | |
cout << "a = " << a << endl; | |
cout << "b = " << b << endl; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 3. Користувач вводить з клавіатури суму в гривнях (дробове число). | |
// Вивести окремо кількість гривень і кількість копійок (наприклад, | |
// ввести 45.67 гривень — отримати та вивести 45 гривень 67 копійок). | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 3\n\n"; | |
float money; | |
cout << "Сума в гривнях (дробове число): "; | |
cin >> money; | |
int hryvnias = money; | |
int steps = round((money - hryvnias) * 100); // 1 шаг = 1 копійка | |
// внаслідок округлення вгору може стати 100 шагів (копійок)... | |
cout << hryvnias << " грн. " << steps << " коп." << "\n"; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 4. Користувач вводить з клавіатури час у секундах. Перевести це | |
// значення в дні, години, хвилини та секунди. Наприклад, 43512 секунд — | |
// це 12 годин, 5 хвилин і 12 секунд. | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 4\n\n"; | |
int timeInSeconds; | |
cout << "Введіть час у секундах: "; | |
cin >> timeInSeconds; | |
int days = timeInSeconds / 86400; // зі шкільного курсу фізики | |
int secondsRemaining = timeInSeconds % 86400; // залишок секунд | |
int hours = secondsRemaining / 3600; | |
secondsRemaining %= 3600; | |
int minutes = secondsRemaining / 60; | |
int seconds = secondsRemaining % 60; | |
cout << timeInSeconds << " секунд(-и, -а) –— це " << days | |
<< " днів(-і, день), " << hours << " годин(-и, -а) " << minutes | |
<< " хвилин(-и, -а) та " << seconds << " секунд(-и, -а)." << endl; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 5. Користувач вводить з клавіатури час початку та час завершення | |
// телефонної розмови (години, хвилини та секунди). Порахувати | |
// вартість розмови, якщо вартість хвилини складає 15 копійок, з | |
// урахуванням посекундної тарифікації. | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 5\n\n"; | |
short startHour, startMinute, startSecond; | |
short finishHour, finishMinute, finishSecond; | |
cout << "Введіть час початку телефонної розмови у форматі ГГ ХХ СС: "; | |
cin >> startHour >> startMinute >> startSecond; | |
cout << "Введіть час завершення телефонної розмови у форматі ГГ ХХ СС: "; | |
cin >> finishHour >> finishMinute >> finishSecond; | |
// Скільки секунд минуло після півночі: | |
int startTime = startHour * 3600 + startMinute * 60 + startSecond; | |
int finishTime = finishHour * 3600 + finishMinute * 60 + finishSecond; | |
// Щоб врахувати перехід через північ, коли час завершення розмови | |
// менший за час початку, бо зазвичай телефонна розмова триває | |
// менше доби, додаємо 24 години в такому разі: | |
int durationSeconds = (finishTime - startTime + 24 * 3600) % (24 * 3600); | |
cout << "\nТривалість розмови: " << durationSeconds << " сек." << endl; | |
// Вартість хвилини, секунди та загальна вартість розмови: | |
float costPerMinute = 0.15f; // гривень | |
float costPerSecond = costPerMinute / 60.0f; | |
float totalCost = costPerSecond * durationSeconds; | |
int hryvnias = totalCost; | |
int steps = (totalCost - hryvnias) * 100; // без round, знижка! | |
cout << "Вартість розмови: " << hryvnias << " грн. "; | |
cout << steps << " коп." << endl; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 6. Розрахувати загальну масу всіх планет Сонячної системи. | |
// Обчислити середнє арифметичне мас планет. Потім — масу кожної | |
// планети в відсотковому відношенні, якщо прийняти за 100 % загальну | |
// масу всіх планет. У скільки разів маса найбільшої планети більше, | |
// ніж сума мас усіх інших планет? Усі результати — показати на екрані. | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 6\n\n"; | |
// Маси планет — з англомовної Вікіпедії: | |
double massMercurius = 3.3011E+23; // маса Меркурія в кілограмах | |
double massVenus = 4.8675E+24; // маса Венери в кілограмах | |
double massTellus = 5.972168E+24; // маса Землі в кілограмах | |
double massMars = 6.4171E+23; // маса Марса в кілограмах | |
double massIuppiter = 1.8982E+27; // маса Юпітера в кілограмах | |
double massSaturnus = 5.6834E+26; // маса Сатурна в кілограмах | |
double massUranus = 8.6810E+25; // маса Урана в кілограмах | |
double massNeptunus = 1.02409E+26; // маса Нептуна в кілограмах | |
// У 2006 році Міжнародний астрономічний союз офіційно перевизначив | |
// термін планета, щоб виключити карликові планети, такі як Плутон. | |
// Загальна маса всіх планет: | |
double massPlanets = massMercurius + massVenus + massTellus + \ | |
massMars + massIuppiter + massSaturnus + massUranus + massNeptunus; | |
// Маса найбільшої планети: | |
// https://en.cppreference.com/w/cpp/algorithm/max | |
// Використовуємо std::max для двох значень, поки не обробимо всі! | |
double massMaxPlanet = (std::max)({ massMercurius, massVenus, massTellus, | |
massMars, massIuppiter, massSaturnus, massUranus, massNeptunus }); | |
// десь є макрос max, беремо в дужках, щоб позбавитися помилки E0040 | |
// сталася прикрість, коли найважчою опинилася Венера... | |
// Сума мас усіх інших планет, окрім найбільшої: | |
double massOtherPlanets = massPlanets - massMaxPlanet; | |
double averageMass = massPlanets / 8.0; | |
cout << "Обчислюємо середнє арифметичне мас планет: " << averageMass | |
<< " кг.\n"; | |
// https://en.cppreference.com/w/cpp/numeric/math/round | |
float ratioMercurius = round((massMercurius / massPlanets) * 100 * 1000) \ | |
/ 1000; // округлення до 3-го знака після коми, незвичайно... | |
cout << "Найближчий до Сонця Меркурій важить лише " << ratioMercurius | |
<< "% загальної маси.\n"; | |
float ratioVenus = round((massVenus / massPlanets) * 100 * 1000) / 1000; | |
cout << "Планета Венера, найбільш схожа на Землю, має " << ratioVenus | |
<< "% загальної маси.\n"; | |
float ratioTellus = round((massTellus / massPlanets) * 100 * 1000) / 1000; | |
cout << "Отже, маса планети Земля становить " << ratioTellus | |
<< "% загальної маси.\n"; | |
cout << "Маса решти планет Сонячної системи відносно загальної маси:\n"; | |
float ratioMars = round((massMars / massPlanets) * 100 * 1000) / 1000; | |
cout << "\tМарс — " << ratioMars << "%,\n"; | |
float ratioIuppiter = round((massIuppiter / massPlanets) * 100 * 10) / 10; | |
cout << "\tЮпітер — " << ratioIuppiter << "%,\n"; | |
float ratioSaturnus = round((massSaturnus / massPlanets) * 100 * 10) / 10; | |
cout << "\tСатурн — " << ratioSaturnus << "%,\n"; | |
float ratioUranus = round((massUranus / massPlanets) * 100 * 100) / 100; | |
cout << "\tУран — " << ratioUranus << "%,\n"; | |
float ratioNeptunus = round((massNeptunus / massPlanets) * 100 * 100) \ | |
/ 100; // округлення до 2-го знака після коми | |
cout << "\tНептун — " << ratioNeptunus << "%,\n"; | |
cout << "Юпітер, найбільша планета, важить у " | |
<< round((massMaxPlanet / massOtherPlanets) * 10) / 10 | |
<< " рази більше усіх інших планет разом узятих.\n"; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 7. Ввести з клавіатури два 3-значних числа і поміняти у них | |
// середні цифри (наприклад, ввести 357 і 702 — отримати та вивести | |
// числа 307 і 752). | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 7\n\n"; | |
int number1, number2; | |
cout << "Введіть перше тризначне число: "; | |
cin >> number1; | |
cout << "Введіть друге тризначне число: "; | |
cin >> number2; | |
// Розбиваємо введені числа на цифри: | |
int firstDigit1 = number1 / 100; | |
int middleDigit1 = (number1 / 10) % 10; | |
int lastDigit1 = number1 % 10; | |
int firstDigit2 = number2 / 100; | |
int middleDigit2 = (number2 / 10) % 10; | |
int lastDigit2 = number2 % 10; | |
// Створюємо нові числа, міняючи місцями середні цифри: | |
int newNumber1 = firstDigit1 * 100 + middleDigit2 * 10 + lastDigit1; | |
int newNumber2 = firstDigit2 * 100 + middleDigit1 * 10 + lastDigit2; | |
cout << "\nПоміняємо в числах середні цифри:\n"; | |
cout << "\tТепер перше число: " << newNumber1 << "\n"; | |
cout << "\tДруге число буде: " << newNumber2 << "\n"; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ | |
// ПОЧАТОК КОДУ ЗАДАЧІ | |
// 8. Валєра купив N курок по M гривень за одну курку. | |
// Кожна курка несе по X яєць на тиждень. Валєра вирішив відкрити | |
// свій бізнес і став продавати яйця, які несуть курки. | |
// За скільки днів окупляться кури, якщо продавати яйця по G гривень | |
// за десяток (з урахуванням ПДВ, але без врахування збору в ПФ)? | |
/* | |
АНАЛІТИЧНЕ РОЗВ'ЯЗАННЯ | |
Загальна вартість курок = N * M; | |
Загальна кількість яєць за тиждень = N * X; | |
Ціна одного яйця = G / 10; | |
Валєра передає державі ПДВ 20%, закладений у вартість десятка яєць: | |
Прибуток за тиждень = N * X * (G / 10) * 0.8 | |
Кількість днів до окупності курей = Загальна вартість курок / Прибуток за день | |
N * M / ((N * X * (G / 10) * 0.8) / 7); | |
7 * M / (X * (G / 10) * 0.8); | |
87.5 * M / (X * G); | |
*/ | |
int main() | |
{ | |
SetConsoleOutputCP(1251); | |
cout << "\tЗАВДАННЯ 8\n\n"; | |
short N, X; | |
float M, G; | |
cout << "Кількість курок N, що їх купив Валєра: "; | |
cin >> N; | |
cout << "Вартість однієї курки M у гривнях: "; | |
cin >> M; | |
cout << "Середня кількість яєць X від однієї курки за тиждень: "; | |
cin >> X; | |
cout << "Ціна десятка яєць G, гривень, з урахуванням ПДВ: "; | |
cin >> G; | |
// Розрахункову формулу отримано вище: | |
float payback = (87.5f * M) / (X * G); | |
// https://en.cppreference.com/w/cpp/numeric/math/ceil | |
cout << "\nКури окупляться за днів " << ceil(payback) << endl; | |
cout << "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––\n"; | |
return 0; | |
} | |
// КІНЕЦЬ КОДУ ЗАДАЧІ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment