Загрузить файлы в «/»

This commit is contained in:
oltnd
2024-10-26 10:20:03 +03:00
parent 8c517ff9a1
commit 054a600384

180
main.cpp Normal file
View File

@@ -0,0 +1,180 @@
#include <iostream>
#include <fstream>
#include <string>
#include <cmath> // для функции 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 << "Введите строку: "<<endl;
cin >> 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;
}