Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++ / БДЗ С

.txt
Скачиваний:
8
Добавлен:
13.05.2017
Размер:
2.5 Кб
Скачать
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <time.h>
#define N 10
using namespace std;

struct segment
{
	int l;
};

struct box
{
	struct segment a, b;
};
typedef struct box square;

void Z1();
void Z2();
square init();
square init(square S);
void init(square S[N]);
void perimeter(square S);
void printinfo(square S);

int main()
{
	int Num;
	
	setlocale(LC_ALL, "Russian");
	srand(time(0));

	while (1)
	{
		cout << "Введите номер задания лабораторной работы, решение которого вы хотите увидеть," << endl;
		cout << "или нажмите 0 для выхода" << endl;
		cin >> Num;

		switch (Num)
		{
		case 0: return (0);
			break;
		case 1: Z1();
			break;
		case 2: Z2();
			break;
		}
	}
}

void Z1()
{
	square first, second;
	first = init();
	printinfo(first);
	second = init(first);
	printinfo(second);
	cout << endl;
}

void Z2()
{
	square S[N];
	segment L;
	L.l = 0;
	int n = 0;

	init(S);

	cout << "\nВведите длину стороны" << endl;
	while (L.l < 1)
	{
		cin >> L.l;
		if (L.l < 1)
			cout << "Сторона должна быть положительным числом" << endl;
	}
	cout << endl;
	//определяем число элементов со строкой большей L.l
	for (int i = 0; i < N; i++)
		if (S[i].a.l > L.l && S[i].b.l > L.l)
			n++;
	if (n != 0)
	{
		square *M = new square[n];
		cout << "Прямоугольники, у которых каждая сторона больше, чем " << L.l << endl << endl;
		for (int i = 0, k = 0; i < N; i++)
			if (S[i].a.l > L.l && S[i].b.l > L.l)
			{
				M[k] = S[i];
				cout << "Прямоугольник №" << i + 1 ;
				printinfo(M[k]);
				k++;
			}
		delete[]M;
	}
	else
		cout << "Нет прямоугольников, у которых каждая сторона больше, чем " << L.l << endl;
}

square init()
{
	square S;
	cout << "Введите стороны прямоугольника:" << endl;
	cin >> S.a.l >> S.b.l;
	return S;
}

square init(square S)
{
	square M;
	int k;
	cout << "Введите коэффициент, на который надо умножить прямоугольник" << endl;
	cin >> k;
	M.a.l = k*S.a.l;
	M.b.l = k*S.b.l;
	return M;
}

void init(square S[N])
{
	for (int i = 0; i < N; i++)
	{
		S[i].a.l = rand() % 10+1;
		S[i].b.l = rand() % 10+1;
		cout << "\nПрямоугольник №" << i + 1 << ": " << S[i].a.l << "\t" << S[i].b.l << endl;
	}
}

void perimeter(square S)
{
	cout << "Периметр равен: " << (S.a.l + S.b.l) * 2 << endl;
}

void printinfo(square S)
{
	cout << "\nСтороны равны: " << S.a.l << "\t" << S.b.l << endl;
	perimeter(S);
	cout << endl;
}
Соседние файлы в папке C++