Untitled
unknown
c_cpp
3 years ago
5.4 kB
7
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...