Untitled

 avatar
unknown
plain_text
4 years ago
9.6 kB
17
Indexable
#include <iostream>
#include <conio.h>

using namespace std;

void Task_1();
void Task_2();
void Task_3();
void Task_4();
void Task_5();
void Task_6();
void Task_7();
void Task_8();
void Task_9();
void Task_10();
void Task_11();


int main()
{
	do
	{
		setlocale(LC_ALL, "ru");
		cout << "Лабораторная работа по Циклическим алгоритамам" << endl
			<< "Выберите номер задания " << endl;
		int number;
		cin >> number;
		switch (number)
		{
		case 1:
			Task_1();
			break;
		case 2:
			Task_2();
			break;
		case 3:
			Task_3();
			break;
		case 4:
			Task_4();
			break;
		case 5:
			Task_5();
			break;
		case 6:
			Task_6();
			break;
		case 7:
			Task_7();
			break;
		case 8:
			Task_8();
			break;
		case 9:
			Task_9();
			break;
		case 10:
			Task_10();
			break;
		case 11:
			Task_11();
			break;
		default:
			cout << "Задание отсутствует " << endl;
		}
		cout << "Нажмите 1 для продолжения работы с программой " << endl;
	} while (_getch() == '1');
} 


void Task_1()
{
	cout << "Задания №1(№26(а))" << endl
		<< "Найти сумму и произведение чётных чисел" << endl
		<< "Введите значение n" << endl;
	int n, sum = 0, i;
	cin >> n;
	int p = 1;
	for (i = 2;i < n;i += 2)
	{
		sum += i;
		p *= i;
	}
	cout << "Сумма чётных чисел от 1 до n равна " << sum << endl
		<< "Произведение чётных чисел от 1 до n равна " << p << endl;
}

void Task_2()
{
	cout << "Задание №2(25(в))" << endl
		<< "Найти значение выражения(для натуральных m и n, m < n) " << endl
		<< "A = m + (m + 1) + ... + (m + n)." << endl
		<< "Введите значение m и n" << endl;
	int m, n, sum;;
	do
	{
		cin >> m >> n;
		if (m > n)
			cout << "m должно быть меньше n " << endl;
	} while (m > n);
	sum = 0;
	int m_1 = m;
	for (m = 0;m <= n;m++)
	{
		sum += (m_1 + m);
	}
	cout << "А равно " << sum << endl;
}


void Task_3()
{
	cout << "Задания №3(28(б))" << endl
		<< "Для последовательности an = a*sin(n) найти сумму и произведение n членов, первый из которых имеет номер m." << endl
		<< "Введите значение m, n" << endl;
	int m, n;
	double p, sum = 0;
	cin >> m >> n;
	p = 1;
	double a;
	for (m ;m <= n;m++)
	{
		a = m * sin(m);
		sum += a;
		p *= a;
	}
	cout << "Сумма равна " << sum << endl
		<< "Произведение равно " << p << endl;
}

void Task_4()
{
	cout << "Задание №4(№2)" << endl
		<< "Сумма 10000 руб. положена в сберегательный бынк под 3% годовых (процент капитализированный).\n Состаить алгоритм , определяющий через какой промежуток времени первоначальная сумма увеличится в 2 раза." << endl;
	int n, p;
	double S_2 = 20000, S_1 = 10000;
	n = 0;p = 3;
	for (n;S_1 < S_2;n++)
	{
		S_1 *= (1 + p / 100.);
	}
	cout << "20000 в банке накопиться за " << n << " года" << endl;
}


void Task_5()
{
	cout << "Задание №5(№9) " << endl
		<< "Имеются контейнеры двух видов: по 130 кг. и 160 кг. Можно ли полностью загрузить ими грузовик грузоподъёмностью 3т." << endl;
	int x = 0, y, m_1 = 130, m_2 = 160, M = 3000;
	while (x < M / m_1)
	{
		y = 0;
		while (y < M / m_2)
		{
			if (m_1 * x + m_2 * y == M)
			{
				cout << "Грузовик можно заполнить при " << endl
					<< "Количестве контейнеров весом 130 кг. равном " << x << endl
					<< "И количестве контейнеров весом 160 кг. равном " << y << endl;
			}
			y++;
		}
		x++;
	}
}

void Task_6()
{
	cout << "Задания №6(№8)" << endl
		<< "Искомое число больше 400 и меньше 500.\nСоставить алгоритм поиска этого числа, если сумма его цифр равна 9\nи оно равняется 47/36 числа, изображённого теми же цифрами, но в обратном порядке." << endl;
	int a, b, c, x = 405;
	while (x < 500)
	{
		a = x / 100;
		b = (x - 100 * a) / 10;
		c = x % 10;

		if (a + b + c == 9 && (x * 36) == (47 * (100 * c + 10 * b + a)))
		{
			cout << "Искомое число " << x << endl;
			break;
		}
		else
		{
			x+=9;
		}
	}
}

void Task_7()
{
	cout << "Задания №7(№11)" << endl
		<< "Сумма квадратов цифр некоторого двухзначного числа на 1 больше утроенного произведения этих цифр.\nПосле деления этого двузначного числа на сумму его цифр в частном получается 7 и в остатке 6.\nСоставить алгоритм поиска этого числа, если оно существует." << endl;
	int a, b;
	for (a = 0;a < 10;a++)
	{
		for (b = 0;b < 10;b++)
		{
			if (pow(a, 2) + pow(b, 2) == 3 * a * b + 1 && a - 2 * b == 1)
			{
				cout << "Число равно " << a << b << endl;
				break;
			}
		}

	}
}

void Task_8()
{
	cout << "Задания №8(№14)" << endl
		<< "Известно, что любую целочисленную денежную сумму S > 7 руб. можно выплатить без сдачи купюрами достоинством в 3 и 5 руб.\nПо заданному S > 7 найти все пары целых неотрицательных чисел a и b, таких, что S = 3a + 5b." << endl
		<< "Введите значение S " << endl;
	int S, j, x = 0, y = 0;
	do
	{
		cin >> S;
	} while (S <= 7);
	for (int i = 1;i >= 0;i++)
	{
		for (j = 1;j >= 1;j++)
		{
			if (3 * x + 5 * y == S)
			{
				cout << "Значение a равно " << x << " значение b равно " << y << endl;
				i = -1;
				j = -1;
			}
			y++;
		}

		if (3 * x + 5 * y > S)
		{
			i = -1;
			j = -1;
		}
		x++;
	}
}
void Task_9()
{
	cout << "Задание №9(№15)" << endl
		<< "Дано натуральное число n.Выяснить, можно ли представить \nn! = 1*2*3*...*n в виде произведения трёх последовательных целых чисел." << endl
		<< "Введите значение n " << endl;
	int n;
	cin >> n;
	int F = 1;
	for (int i = 1;i <= n; i++)
	{
		F *= i;
	}
	cout << "Факториал числа n равен " << F << endl;
	for (int i = 0;i <= sqrt(F);i++)
	{
		if (((i - 1) * i * (i + 1)) == F)
		{
			cout << "Факториал можно представить в виде произведения чисел "
				<< i - 1 << ", " << i << ", " << i + 1 << "." << endl;
			break;
		}
		else if (((i - 1) * i * (i + 1)) > F)
			{
			cout << "Факториал нельзя представить в виде произведения трех последовательныз чисел" << endl;
			break;
			}
	}
}

void Task_10()
{
	cout << "Задания №10(№16)" << endl
		<< "Составить алгоритм, определяющий  количество способов, какими задуманное число n > 1 можно представить в виде суммы \nn = i^3 + j^3, считая, что перестановка слагаемых нового способа не даёт." << endl
		<< "Введите значение n" << endl;
	int n;
	cin >> n;
	int k = 0;
	for (int i = 0;i <= pow(n,1./3);i++)
	{
		for (int j = i + 1;j <= pow(n, 1. / 3);j++)
		{
			if (pow(i, 3) + pow(j, 3) == n)
			{
				cout << "Значение i равно " << i << ". Значение j равно " << j << endl;
				k++;
			}
		}
	}
	if (k > 0)
	{
		cout << "Есть " << k << " способов представить число n как сумму i^3 + j^3" << endl;
	}
	else
	{
		cout << "Число n нельзя представить как сумму i^3 + j^3" << endl;
	}
}


void Task_11()
{
	cout << "Задание №11(№18)" << endl
		<< "Составить алгоритм, определяющий, сколько существует способо набора одного рубля при помощи монет достоинством:\n 50 коп., 20 коп., 5 коп. и 2 коп." << endl;
	int z, k = 0, n = 0, x, y;
	while (k <= 2)
	{
		z = 0;
		while (z <= 5)
		{
			y = 0;
			while (y <= 20)
			{
				x = 0;
				while (x <= 50)
				{
					if (2 * x + 5 * y + 20 * z + 50 * k == 100)
					{
						cout << "Значения " << endl
							<< "x = " << x << endl
							<< "y = " << y << endl
							<< "z = " << z << endl
							<< "k = " << k << endl;
						n++;
					}
					x++;
				}
				y++;
			}
			z++;
		}
		k++;
	}
	cout << "100 рублей можно представить в виде суммы других монет " << n << " раз" << endl;
}
Editor is loading...