Created
September 13, 2024 12:22
-
-
Save ViktorLychkatyi/b725ff77d579945aa41a3ef60a47c4da to your computer and use it in GitHub Desktop.
task4
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
// 1. С клавиатуры вводится целое число.Вывести на экран все числа, на которые введённое число делится без остатка.Например, для 60 такими числами станут 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60. | |
/* | |
#include <iostream> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
int number; | |
cout << "Введите число: "; | |
cin >> number; | |
cout << "Числа, на которые делится " << number << " без остатка: "; | |
for (int i = 1; i <= number; i++) { | |
if (number % i == 0) { | |
cout << i << " "; | |
} | |
} | |
return 0; | |
} | |
*/ | |
// 2. Написать игру «Угадай число».Пользователь мысленно загадывает число от 0 до 1000, компьютер отгадывает его за минимальное количество попыток. | |
/* | |
#include <iostream> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
int low = 0; | |
int high = 1000; | |
int guess; | |
char response; | |
cout << "Загадайте число от 0 до 1000."; | |
cout << "\nКомпьютер попытается угадать его.\n"; | |
while (low <= high) { | |
guess = (low + high) / 2; | |
cout << "Ваше число: " << guess << "? (введите '+' если больше, '-' если меньше, '=' если угадал): "; | |
cin >> response; | |
if (response == '=') { | |
cout << "Компьютер угадал ваше число!"; | |
break; | |
} | |
else if (response == '+') { | |
low = guess + 1; | |
} | |
else if (response == '-') { | |
high = guess - 1; | |
} | |
} | |
return 0; | |
} | |
*/ | |
// 3. Ежемесячная стипендия студента составляет N гривен, а расходы на проживание превышают стипендию и составляют M гривен в месяц.Рост цен ежемесячно увеличивает расходы на 3 % .Составьте программу расчёта суммы денег, которую необходимо единовременно попросить у родителей, чтобы можно было прожить учебный год(10 месяцев), используя только эти деньги и стипендию. | |
/* | |
#include <iostream> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
double stipend, expenses; | |
cout << "Введите сумму стипендии (грн): "; | |
cin >> stipend; | |
cout << "Введите расходы на проживание в первый месяц (грн): "; | |
cin >> expenses; | |
double total_expenses = 0; | |
for (int month = 1; month <= 10; month++) { | |
total_expenses += expenses; | |
expenses *= 1.03; // Увеличение расходов на 3% каждый месяц | |
} | |
double total_stipend = 10 * stipend; | |
double required_money = total_expenses - total_stipend; | |
cout << "Необходимо попросить у родителей " << required_money << " грн."; | |
return 0; | |
} | |
*/ | |
// 4. Написать программу, которая генерирует календарь на любой год, указанный с клавиатуры. | |
/* | |
#include <iostream> | |
#include <iomanip> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
int year; | |
cout << "Введите год: "; | |
cin >> year; | |
bool leap_year = (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0); // Високосный год | |
int days_in_month[] = { 31, leap_year ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // Количество дней в месяце | |
string months[] = { "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" }; | |
string week_days[] = { "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс" }; | |
int total_days = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400; // Общее количество дней до начала года | |
int start_day = (total_days + 1) % 7; | |
for (int month = 0; month < 12; month++) { | |
cout << "\n\n" << " " << months[month] << " " << year << "\n" << "\n"; | |
for (int i = 0; i < 7; i++) { | |
cout << setw(4) << week_days[i]; | |
} | |
cout << "\n"; | |
for (int i = 0; i < start_day; i++) { | |
cout << setw(4) << " "; | |
} | |
for (int day = 1; day <= days_in_month[month]; day++) { | |
cout << setw(4) << day; | |
if (++start_day > 6) { | |
start_day = 0; | |
cout << "\n"; | |
} | |
} | |
cout << "\n"; | |
} | |
return 0; | |
} | |
*/ | |
// 5. Скоро Новый год!Необходимо срочно нарисовать ёлочку.С клавиатуры вводится количество ярусов, и высота каждого яруса ёлочки. (рисунок есть в презентации) | |
/* | |
#include <iostream> | |
#include <windows.h> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
HANDLE console_handle = GetStdHandle(STD_OUTPUT_HANDLE); | |
int tiers_levels; | |
cout << "Введите количество ярусов: "; | |
cin >> tiers_levels; | |
int trunk_height; | |
cout << "Введите высоту ствола: "; | |
cin >> trunk_height; | |
int num_rows = 5; | |
int start_stars = 1; | |
int max_stars = start_stars + 2 * (tiers_levels - 1); | |
int total_width = max_stars + 2 * (num_rows - 1); | |
int trunk_width = 3; | |
for (int l = 0; l < tiers_levels; ++l) { | |
int stars = start_stars + 2 * l; | |
for (int i = 1; i <= num_rows; ++i) { | |
SetConsoleTextAttribute(console_handle, 10); // Зеленый цвет | |
int stars_in_row = stars + 2 * (i - 1); | |
int spaces = (total_width - stars_in_row) / 2; | |
cout << string(spaces, ' '); | |
cout << string(stars_in_row, '*'); | |
cout << endl; | |
} | |
} | |
for (int i = 0; i < trunk_height; ++i) { | |
SetConsoleTextAttribute(console_handle, 12); // Красный цвет | |
int spaces = (total_width - trunk_width) / 2; | |
cout << string(spaces, ' '); | |
cout << string(trunk_width, '#'); | |
cout << endl; | |
} | |
SetConsoleTextAttribute(console_handle, 7); // Сброс цвета | |
return 0; | |
} | |
*/ | |
// 6. Королю нужно убить дракона, но средства его казны – ограничены.Нужно создать программу, которая поможет рассчитать минимальное количество копейщиков, которое необходимо, чтобы убить дракона.Данные очков здоровья и атаки дракона и одного копейщика вводятся с клавиатуры.Защиту, удачу, мораль, меткость и т.п.не учитывать.Копейщики наносят удар первыми(общий нанесённый урон – это сумма атак всех живых копейщиков).Если атака дракона превышает значение очков здоровья копейщика(например, у копейщика хп 10, а атака дракона - 15), то копейщик погибает, а оставшийся урон действует на оставшихся в живых копейщиков.Например, жизнь дракона 500, атака 55, жизнь одного копейщика 10, атака 10, а количество копейщиков – 20. Лог боя для данного примера должен выглядеть так: | |
// Копейщики атакуют(урон 200) – у дракона осталось 300 очков здоровья. | |
// Дракон атакует(урон 55) – осталось 15 копейщиков, один из которых ранен(осталось 5 очков здоровья). | |
// Копейщики атакуют(урон 150) – у дракона осталось 150 очков здоровья. | |
// Дракон атакует(урон 55) – осталось 9 копейщиков. | |
// Копейщики атакуют(урон 90) – у дракона осталось 60 очков здоровья. | |
// Дракон атакует(урон 55) – осталось 4 копейщика, один из которых ранен(осталось 5 жизней). | |
// Копейщики атакуют(урон 40) – у дракона осталось 20 очков здоровья. | |
// Дракон атакует и побеждает. | |
/* | |
#include <iostream> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "UKR"); | |
int dragon_hp, dragon_atk, spearman_num, spearman_hp, spearman_atk; | |
cout << "Введите очки здоровья дракона: "; | |
cin >> dragon_hp; | |
cout << "Введите атаку дракона: "; | |
cin >> dragon_atk; | |
cout << "Введите количество копейщиков: "; | |
cin >> spearman_num; | |
cout << "Введите очки здоровья копейщика: "; | |
cin >> spearman_hp; | |
cout << "Введите атаку копейщика: "; | |
cin >> spearman_atk; | |
if (spearman_num <= 0) { | |
cout << "Количество копейщиков должно быть положительным." << endl; | |
return 1; | |
} | |
while (true) { | |
int current_spearman_hp = spearman_hp; | |
int current_spearman_count = spearman_num; | |
bool dragon_defeated = false; | |
while (dragon_hp > 0 && current_spearman_count > 0) { | |
int total_damage = spearman_atk * current_spearman_count; | |
dragon_hp -= total_damage; | |
if (dragon_hp < 0) dragon_hp = 0; | |
cout << "Копейщики атакуют (урон " << total_damage << ") – у дракона осталось " | |
<< dragon_hp << " очков здоровья." << endl; | |
if (dragon_hp == 0) { | |
dragon_defeated = true; | |
break; | |
} | |
int remaining_damage = dragon_atk; | |
while (remaining_damage > 0 && current_spearman_count > 0) { | |
if (remaining_damage >= current_spearman_hp) { | |
remaining_damage -= current_spearman_hp; | |
current_spearman_count--; | |
if (current_spearman_count > 0) { | |
current_spearman_hp = spearman_hp; | |
} | |
} | |
else { | |
current_spearman_hp -= remaining_damage; | |
remaining_damage = 0; | |
} | |
} | |
cout << "Дракон атакует (урон " << dragon_atk << ") – осталось " | |
<< current_spearman_count << " копейщиков"; | |
if (current_spearman_hp < spearman_hp && current_spearman_count > 0) { | |
cout << ", один из которых ранен (осталось " << current_spearman_hp << " очков здоровья)."; | |
} | |
cout << endl; | |
if (current_spearman_count == 0) { | |
cout << "Все копейщики погибли. Поражение!" << endl; | |
return 0; | |
} | |
} | |
if (dragon_defeated) { | |
cout << "Дракон побежден. Победа!" << endl; | |
cout << "Минимальное количество копейщиков для победы: " << spearman_num << endl; | |
break; | |
} | |
spearman_num++; | |
} | |
return 0; | |
} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment