Загрузка данных
#pragma once
double add(double a, double b);
double subtract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);
int bitAnd(int a, int b);
int bitOr(int a, int b);
int bitXor(int a, int b);
long long factorial(int n);
double power(double a, int n);
int getPlan();
int getFact(int &count);
void checkFood(int plan, int fact, int count);
void calculateSalary();
void analyzeTemperature();
void calculateExpenses();
#include <iostream>
#include <vector>
#include <cmath>
#include "functions.h"
using namespace std;
// Задание 1
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
}
double multiply(double a, double b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
int bitAnd(int a, int b) {
return a & b;
}
int bitOr(int a, int b) {
return a | b;
}
int bitXor(int a, int b) {
return a ^ b;
}
long long factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
double power(double a, int n) {
if (n == 0) return 1;
if (n < 0) return 1.0 / power(a, -n);
return a * power(a, n - 1);
}
// Задание 2
int getPlan() {
int sum = 0;
int calories;
for (int i = 0; i < 5; i++) {
cout << "Калории блюда " << i + 1 << ": ";
cin >> calories;
sum += calories;
}
return sum;
}
int getFact(int &count) {
int sum = 0;
int calories;
cout << "Количество съеденных блюд: ";
cin >> count;
for (int i = 0; i < count; i++) {
cout << "Калории блюда " << i + 1 << ": ";
cin >> calories;
sum += calories;
}
return sum;
}
void checkFood(int plan, int fact, int count) {
if (fact == plan) {
cout << "План выполнен\n";
} else if (fact < plan) {
cout << "Не хватает " << plan - fact << " калорий\n";
} else {
cout << "Превышение на " << fact - plan << " калорий\n";
}
if (fact <= plan / 2.0)
cout << "Потребление в два раза меньше плана\n";
if (fact >= plan * 2.0)
cout << "Потребление в два раза больше плана\n";
if (count <= 2)
cout << "Слишком мало приемов пищи\n";
}
// Задание 3
void calculateSalary() {
vector<double> fixed(15);
vector<double> hourly;
double sumFixed = 0;
double sumHourly = 0;
for (int i = 0; i < 15; i++) {
cout << "Зарплата сотрудника " << i + 1 << ": ";
cin >> fixed[i];
sumFixed += fixed[i];
}
int n;
cout << "Количество почасовых сотрудников: ";
cin >> n;
for (int i = 0; i < n; i++) {
double rate, hours;
cout << "Ставка за час и часы работы: ";
cin >> rate >> hours;
hourly.push_back(rate * hours);
sumHourly += rate * hours;
}
double total = sumFixed + sumHourly;
double average = total / (15 + n);
cout << "Общий фонд зарплаты: " << total << endl;
cout << "Фиксированная оплата: " << sumFixed << endl;
cout << "Почасовая оплата: " << sumHourly << endl;
if (sumFixed > sumHourly)
cout << "Больше расходов на фиксированную оплату\n";
else if (sumHourly > sumFixed)
cout << "Больше расходов на почасовую оплату\n";
else
cout << "Расходы одинаковые\n";
int count = 0;
for (int i = 0; i < 15; i++) {
if (fixed[i] > average) count++;
}
for (int i = 0; i < n; i++) {
if (hourly[i] > average) count++;
}
cout << "Сотрудников выше средней зарплаты: "
<< count << endl;
double minFixed = fixed[0];
for (int i = 1; i < 15; i++) {
if (fixed[i] < minFixed) minFixed = fixed[i];
}
count = 0;
for (int i = 0; i < n; i++) {
if (hourly[i] < minFixed) count++;
}
cout << "Почасовых сотрудников ниже минимальной фиксированной ставки: "
<< count << endl;
}
// Задание 4
void analyzeTemperature() {
double oldTemp[31] = {
8, 7, 9, 10, 6, 5, 4, 7, 8, 9,
11, 10, 8, 6, 5, 4, 3, 6, 7, 8,
9, 10, 7, 6, 5, 4, 3, 2, 5, 6, 7
};
int n;
cout << "Количество дней текущего октября (1-31): ";
cin >> n;
if (n < 1 || n > 31) {
cout << "Неверное количество дней\n";
return;
}
double newTemp[31];
double oldSum = 0, newSum = 0;
int oldBelow = 0, newBelow = 0;
for (int i = 0; i < n; i++) {
cout << "Температура за день " << i + 1 << ": ";
cin >> newTemp[i];
}
double oldMin = oldTemp[0], oldMax = oldTemp[0];
double newMin = newTemp[0], newMax = newTemp[0];
for (int i = 0; i < 31; i++) {
oldSum += oldTemp[i];
if (oldTemp[i] < oldMin) oldMin = oldTemp[i];
if (oldTemp[i] > oldMax) oldMax = oldTemp[i];
if (oldTemp[i] < 0) oldBelow++;
}
for (int i = 0; i < n; i++) {
newSum += newTemp[i];
if (newTemp[i] < newMin) newMin = newTemp[i];
if (newTemp[i] > newMax) newMax = newTemp[i];
if (newTemp[i] < 0) newBelow++;
}
double oldAverage = oldSum / 31;
double newAverage = newSum / n;
cout << "Средняя температура прошлого года: "
<< oldAverage << endl;
cout << "Средняя температура текущего года: "
<< newAverage << endl;
if (oldAverage > newAverage)
cout << "Прошлый октябрь был теплее\n";
else if (newAverage > oldAverage)
cout << "Текущий октябрь был теплее\n";
else
cout << "Средние температуры одинаковые\n";
if (abs(oldAverage - newAverage) > 5)
cout << "Предупреждение: большой перепад температур\n";
if (oldMax > newMax)
cout << "Максимум выше в прошлом году\n";
else if (newMax > oldMax)
cout << "Максимум выше в текущем году\n";
else
cout << "Максимумы одинаковые\n";
if (oldMin < newMin)
cout << "Минимум ниже в прошлом году\n";
else if (newMin < oldMin)
cout << "Минимум ниже в текущем году\n";
else
cout << "Минимумы одинаковые\n";
cout << "Дней ниже нуля в прошлом году: " << oldBelow << endl;
cout << "Дней ниже нуля в текущем году: " << newBelow << endl;
}
// Задание 5
void calculateExpenses() {
double income;
cout << "Доход семьи: ";
cin >> income;
double required = 5800 + 6200 + 4700 + 10500
+ 5000 + 3600 + 23700;
int n;
cout << "Количество незапланированных расходов: ";
cin >> n;
double extra = 0;
double expense;
for (int i = 0; i < n; i++) {
cout << "Введите расход: ";
cin >> expense;
extra += expense;
}
double averageRequired = required / 7;
double averageExtra = 0;
if (n > 0) averageExtra = extra / n;
double balance = income - required - extra;
cout << "Обязательные расходы: " << required << endl;
cout << "Незапланированные расходы: " << extra << endl;
cout << "Средние обязательные расходы: "
<< averageRequired << endl;
cout << "Средние незапланированные расходы: "
<< averageExtra << endl;
if (extra > required && n > 0) {
double percent = (averageExtra - averageRequired)
/ averageRequired * 100;
cout << "Превышение средних расходов: "
<< percent << "%\n";
}
cout << "Остаток на счету: " << balance << endl;
double limit = income * 0.9 - required;
if (limit < 0) {
cout << "10% дохода не останется даже без дополнительных расходов\n";
} else {
cout << "Максимальные незапланированные расходы: "
<< limit << endl;
}
}
#include <iostream>
#include "functions.h"
using namespace std;
int main() {
int choice;
do {
cout << "\nВыберите задание:\n";
cout << "1. Калькулятор\n";
cout << "2. Отслеживание питания\n";
cout << "3. Расчет зарплаты\n";
cout << "4. Анализ температуры\n";
cout << "5. Финансовые расходы\n";
cout << "0. Выход\n";
cout << "Ваш выбор: ";
cin >> choice;
switch (choice) {
case 1: {
int operation;
do {
cout << "\n1. Сложение\n";
cout << "2. Вычитание\n";
cout << "3. Умножение\n";
cout << "4. Деление\n";
cout << "5. Побитовое И\n";
cout << "6. Побитовое ИЛИ\n";
cout << "7. Исключающее ИЛИ\n";
cout << "8. Факториал\n";
cout << "9. Степень\n";
cout << "0. Назад\n";
cin >> operation;
double a, b;
int x, y, n;
switch (operation) {
case 1:
cin >> a >> b;
cout << add(a, b) << endl;
break;
case 2:
cin >> a >> b;
cout << subtract(a, b) << endl;
break;
case 3:
cin >> a >> b;
cout << multiply(a, b) << endl;
break;
case 4:
cin >> a >> b;
if (b != 0) cout << divide(a, b) << endl;
else cout << "На ноль делить нельзя\n";
break;
case 5:
cin >> x >> y;
cout << bitAnd(x, y) << endl;
break;
case 6:
cin >> x >> y;
cout << bitOr(x, y) << endl;
break;
case 7:
cin >> x >> y;
cout << bitXor(x, y) << endl;
break;
case 8:
cin >> n;
if (n >= 0 && n <= 20) cout << factorial(n) << endl;
else cout << "Введите число от 0 до 20\n";
break;
case 9:
cin >> a >> n;
if (a == 0 && n < 0) cout << "Ошибка\n";
else cout << power(a, n) << endl;
break;
}
} while (operation != 0);
break;
}
case 2: {
int plan = getPlan();
int count;
int fact = getFact(count);
checkFood(plan, fact, count);
break;
}
case 3:
calculateSalary();
break;
case 4:
analyzeTemperature();
break;
case 5:
calculateExpenses();
break;
case 0:
cout << "Выход\n";
break;
default:
cout << "Неверный выбор\n";
}
} while (choice != 0);
return 0;
}