Skip to content

Instantly share code, notes, and snippets.

@Ruthenus
Last active March 6, 2025 10:15
Show Gist options
  • Save Ruthenus/cc56779d754f931119640978742a2357 to your computer and use it in GitHub Desktop.
Save Ruthenus/cc56779d754f931119640978742a2357 to your computer and use it in GitHub Desktop.
Week 12 Homework in IT STEP Academy (variables tasks)
#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