diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..eacfb8d --- /dev/null +++ b/main.cpp @@ -0,0 +1,180 @@ +#include +#include +#include +#include // для функции pow + +using namespace std; + +void z1() { + float s, n, p, r; + cout << "Вы взяли в кредит сумму s, под процент p, на n лет : " << endl; + cin >> s >> p >> n; + if ((s <= 0) || (n < 0) || (p < 0)) { + cout << "ошибка" << endl; + } + else if (p == 0) { + cout << "m = " << s / (12 * n) << endl; + } + else { + r = p / 100; + cout << "m = " << (s * r * pow((1 + r), n)) / (12 * (pow((1 + r), n) - 1)) << endl; + } +} + +void z2() { + float s, m, n; + cout << "Введите s, m, n: "; + cin >> s >> m >> n; + bool flag = false; + double l = 0; + double r = 1000000; + double mid; + while ((l <= r) && (flag != true)) { + mid = (l + r) / 2; + double R = mid / 100; + double mt = (s * R * pow(1 + R, n)) / (12 * (pow(1 + R, n) - 1)); + if (abs(mt - m) < 0.0001) { + flag = true; + break; + } + else if (mt < m) { + l = mid; + } + else { + r = mid; + } + } + if (flag) cout << "Найден процент: " << mid << endl; + else cout << "Процент не найден" << endl; +} + +void z3() { + string filename = "output.txt"; // Имя файла + ofstream outfile; // Открытие файла для записи + + // Открытие файла с проверкой + outfile.open(filename); + if (!outfile.is_open()) { + cerr << "Ошибка: Не удалось открыть файл для записи!" << endl; + return; + } + + string lines; + // Запись в файл + cout << "Первая строка:\n"; + cin >> lines; + outfile << lines << endl; + + // Закрытие файла после записи + outfile.close(); + cout << "Данные успешно записаны в файл." << endl; + + // Переоткрытие файла для чтения + ifstream infile; + infile.open(filename); + + // Проверка на открытие + if (!infile.is_open()) { + cerr << "Ошибка: Не удалось открыть файл для чтения!" << endl; + return; + } + + // Чтение и вывод содержимого файла + string line; + cout << "Содержимое файла:\n"; + while (getline(infile, line)) { + cout << line << endl; + } + + // Закрытие файла после чтения + infile.close(); +} + +void z4() { + string path = "z4.txt"; + ofstream fout; + string inputString; + cout << "Введите строку: "; + cin >> inputString; + + fout.open(path); + fout << inputString << endl; + fout.close(); + + ifstream file(path); + cout << file.rdbuf() << endl; + + file.clear(); + string s; + char ch; + while (file.get(ch)) { + if (isdigit(ch)) { + s += ch; + } else if (!s.empty() && s.back() != ' ') { + s += ' '; + } + } + + cout << s << endl; + file.close(); +} + +void sorting(string& s) { + int n = s.length(); + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + char c1 = tolower(s[j]); + char c2 = tolower(s[j + 1]); + if (c1 > c2 || (c1 == c2 && s[j] > s[j + 1])) { + swap(s[j], s[j + 1]); + } + } + } +} + +void z5() { + string s; + cout << "Введите строку: "<> s; + sorting(s); // Сортируем строку + cout << "Отсортированная строка: " << s << endl; +} + +int main() { + int choice; + do { + cout << "Выберите задание (1-5, 0 для выхода):" << endl; + cout << "1. Расчет ежемесячных платежей" << endl; + cout << "2. Поиск процента по ежемесячным платежам" << endl; + cout << "3. Работа с файлами (запись и чтение)" << endl; + cout << "4. Работа с числами в строке" << endl; + cout << "5. Сортировка строки" << endl; + cout << "0. Выход" << endl; + cin >> choice; + + switch (choice) { + case 1: + z1(); + break; + case 2: + z2(); + break; + case 3: + z3(); + break; + case 4: + z4(); + break; + case 5: + z5(); + break; + case 0: + cout << "Выход из программы." << endl; + break; + default: + cout << "Неверный выбор, попробуйте снова." << endl; + } + } while (choice != 0); + + return 0; +}