Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
5.4 kB
2
Indexable
Never
#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);
}