Untitled
unknown
c_cpp
2 years ago
5.4 kB
4
Indexable
#include <istream> #include <iostream> #include <string> #include <iomanip> using namespace std; char ch; // глобальная переменная типа char для упрощения процедуры ввода struct fraction // создаем структуру, хранящую числ. и знам. дроби { int chisl, znam; }; struct emploee { char name[40]; long num; }; struct Distance { int foot, inch; }; long long nod(long long a, long long b) { if (a > b) { long long tmp = a; a = b; b = tmp; } if (a == b) { return a; } return nod(a, b - a); } void reversit(char s[]) { for (int i = 0; i < strlen(s) / 2; i++) { char tmp = s[i]; s[i] = s[strlen(s) - i - 1]; s[strlen(s) - i - 1] = tmp; } } fraction frac_sum(fraction a, fraction b) { fraction c; c.chisl = (a.chisl * b.znam + a.znam * b.chisl); //вычмсление числителя и знаменателя c.znam = a.znam * b.znam; if (c.znam == 0) //проверка деления на ноль cout << "Нельзя делить на 0"; else { int frac_nod = nod(c.chisl, c.znam); c.chisl /= frac_nod; c.znam /= frac_nod; return c; } } int maxint(int Arr[], int counter) { int maxint, tmp = -10000000000; for (int i = 0; i < counter; i++) { if (Arr[i] > tmp) tmp = Arr[i]; } return tmp; } struct emploee getdata(struct emploee emp) { cout << "Введите ваше имя: "; cin.ignore(); cin.get(emp.name, 60); cout << "Введите ваш номер: "; cin >> emp.num; return emp; } void putdata(emploee Arr[]) { cout << "\n"; for (int i = 0; i < 3; i++) { cout << i + 1 << ". Имя: " << Arr[i].name << " | Номер: " << Arr[i].num << "\n"; } } Distance mid(Distance Arr[][2], int size) { float all_inch_float = 0.0; int len_inch, len_foot; Distance len{ 0,0 }; for (int i = 0; i < size; i++) { len_inch = max(Arr[i][0].foot * 12 + Arr[i][0].inch, Arr[i][1].foot * 12 + Arr[i][1].inch) - min(Arr[i][0].foot * 12 + Arr[i][0].inch, Arr[i][1].foot * 12 + Arr[i][1].inch); len.foot += len_inch / 12; len.inch += len_inch % 12; cout << i << " | " << len.foot << " | " << len.inch << " | " << len_inch << "\n"; } len.inch /= size; len.foot /= size; return len; } void midd(Distance Arr[], int size) { float all_inch = 0.0, all_foot = 0.0, total_inch; for (int i = 0; i < size; i++) { all_foot += Arr[i].foot; all_inch += Arr[i].inch; cout << all_foot << " | " << all_inch << "\n"; } total_inch = all_foot * 12 + all_inch; total_inch /= size; cout <<"Среднее значение: " << static_cast<int>(total_inch/12) << "'" << fmod(total_inch,12) << "\" | " << total_inch << " in | " << total_inch/12 << " ft."; } void task1() { const int j = 1000; int counter = 0, ans; fraction fracs[j], sum{0,1}; do { cout << "Введите дробь: "; cin >> fracs[counter].chisl >> ch >> fracs[counter].znam; cout << "Прекратить ввод? (1/0) "; cin >> ans; counter += 1; } while ((ans != 1)); for (int i = 0; i < counter; i++) sum = frac_sum(sum, fracs[i]); sum.znam *= counter; cout << "Среднее значение равно " << sum.chisl << "/" << sum.znam; } void task2() { const int j = 1000; int counter = 0, ans, Arr[j]; do { cout << "Введите число: "; cin >> Arr[counter]; cout << "Прекратить ввод? (1/0) "; cin >> ans; counter += 1; } while ((ans != 1)); cout << "Максимальное значение в массив: " << maxint(Arr, counter); } void task3() { const int MAX = 80; int y; char Arr[MAX]; cout << "\nEnter string: \n"; cin.ignore(); cin.get(Arr, 80); reversit(Arr); cout << Arr; } void task4() { emploee Arr[3]; for (int i = 0; i < 3; i++) { Arr[i] = getdata(Arr[i]); } putdata(Arr); } void task6() { const int size_Arr = 3; Distance Arr[size_Arr][2]; cout << "Введите значения интервалов (a,b)\n"; for (int i = 0; i < size_Arr; i++) { cout << "Введите значение a: "; cin >> Arr[i][0].foot >> ch >> Arr[i][0].inch; cout << "Введите значение b: "; cin >> Arr[i][1].foot >> ch >> Arr[i][1].inch; } cout << "Среднее значение: " << mid(Arr, size_Arr).foot << " ft " << mid(Arr, size_Arr).inch << " in."; } void task5() { const int size_Arr = 2; Distance Arr[size_Arr]; cout << "Введите интервалы\n"; for (int i = 0; i < size_Arr; i++) { cout << "Введите значение (foot.inch): "; cin >> Arr[i].foot >> ch >> Arr[i].inch; } midd(Arr, size_Arr); // cout << "Среднее значение: " << midd(Arr, size_Arr).foot << " ft, " << midd(Arr, size_Arr).inch << " in."; } void main(){ setlocale(LC_ALL, "Russian"); int task; do { cout << "\n\nВведите номер задания (если проверка завершена - 0): "; cin >> task; switch (task) { case 1: task1(); break; case 2: task2(); break; case 3: task3(); break; case 4: task4(); break; case 5: task5(); break; case 6: task6(); break; default: cout << "Нет такого задания"; } } while (task != 0); }
Editor is loading...