Quick actions

cmd+k|ctrl+k

Navigation

Languages

lab7

Snippet info

Language

Cpp

Visibility

public

Author

evstratevandrey

Created

2019-12-04T18:49:58Z

Updated

2019-12-14T07:52:03Z

#include <iostream>
#include <ctime>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;

void task905()
{
	srand(time(0));
	int N;
	cout << "Enter N: ";
	cin >> N;
	int* x = new int[N];
	int* y = new int[N];
	double MaxDistance = 0, distance, point1, point2;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++)
		{
			// Заполнение массивa
			x[i] = rand() % 100;
			x[j] = x[i];
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++)
		{
			// Заполнение массивa
			y[i] = rand() % 100;
			y[j] = y[i];
		}
	}
	for (int i = 0; i < N; i++)
		for (int j = i; j < N; j++)
		{
			distance = sqrt(pow((double)(x[i] - x[j]), 2) + pow((double)(y[i] - y[j]), 2));
			if (distance > MaxDistance)
			{
				MaxDistance = distance;
				point1 = i;
				point2 = j;
			}
		}
	cout << "Farthest points " << point1 + 1 << " and " << point2 + 1 << endl;

}
void task940()
{
	cout << "Task(a)" << endl;
	int const k = 10;
	int matrixA[k][k];
	int a, b;
	for (int i = 0; i < k; i++)
	{
		for (int j = 0; j < k; j++) {
			matrixA[i][j] = rand() % 100;
			cout << setw(3) << matrixA[i][j];
		}
		cout << endl;
	}
	a = rand() % k;
	b = rand() % k;
	cout << "Coordinates first point:[" << a << "," << a << "]" << endl;
	cout << "Coordinates second point:[" << b << "," << b << "]" << endl;
	cout << "Amount:"<<matrixA[a][a] + matrixA[b][b] << endl;

	cout << "Task(b)" << endl;
	int matrixB[k][k];
	int a1, a2, b1, b2;
	for (int i = 0; i < k; i++)
	{
		for (int j = 0; j < k; j++) {
			matrixB[i][j] = rand() % 100;
			cout << setw(3) << matrixB[i][j];
		}
		cout << endl;
	}
	a1 = rand() % k;
	b1 = k - a1;
	a2 = rand() % k;
	b2 = k - a2;
	cout << "Coordinates first point:[" << a1 << "," << b1 << "]" << endl;
	cout << "Coordinates second point:[" << a2 << "," << b2 << "]" << endl;
	cout <<"composition:"<< matrixB[a1][b1] * matrixB[a2][b2] << endl;
}
void task975()
{
	int n, count = 0;
	cout << "Enter n: ";
	cin >> n;
	if (n > 0)
	{
		double* arr1 = new double[n];
		for (int i = 0; i < n; i++)
		{
			arr1[i] = rand() % 10;
			cout << setw(3) << arr1[i];
		}
		double** arr2 = new double* [n];
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				arr2[i] = new double[j];
		cout << endl;
		cout << "Matrix:" << endl;
		for (int i = 0; i < n; i++)
		{
			count = i;
			for (int j = 0; j < n; j++)
			{
				if (count >= n)
					count = 0;
				arr2[i][j] = arr1[count] * 1.0;
				count++;
			}
		}
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
				cout << setw(3) << arr2[i][j];
			cout << endl;
		}
	}
	else cout << "n does not meet the condition" << endl;
}
void task1010()
{
	const int sizeY = 10;
	const int sizeX = 10;
	char chars[sizeY][sizeX];// z y x

	const int sizeSimb = 4;
	char simb[sizeSimb] = { '#','=','+','?' };

	bool freeSpace = true;
	int tStartX, tEndX, tStartY, tEndY;
	int sizeShift = 1;// отступ между квадратами

	for (int y = 0; y < sizeY; y++)
	{
		for (int x = 0; x < sizeX; x++)
		{
			cout << (chars[y][x] = '.') << "  ";
		}
		cout << endl;
	}
	cout << endl << endl;

	int sharpcount = 0, ravnocount = 0, pluscount = 0, voproscount = 0;

	for (int i = 0; i < 1000; i++)
	{
		int simbol = rand() % sizeSimb;// выбор символа 

		tStartX = rand() % sizeX;
		tStartY = rand() % sizeY;
		do {
			tEndX = rand() % sizeX;
			tEndY = rand() % sizeY;
		} while (tStartX > tEndX || tStartY > tEndY);

		// отступы вокруг (логика если возле края массива)
		// X
		int shiftLeftX = (tStartX == 0) ? 0 : sizeShift;
		int shiftRightX = (tEndX == (sizeX - 1)) ? 0 : sizeShift;// ?
		// Y
		int shiftTopY = (tStartY == 0) ? 0 : sizeShift;
		int shiftBottomY = (tEndY == (sizeY - 1)) ? 0 : sizeShift;

		for (int y = (tStartY - shiftTopY); y <= (tEndY + shiftBottomY); y++)
		{
			for (int x = (tStartX - shiftLeftX); x <= (tEndX + shiftRightX); x++)
			{
				if (chars[y][x] != '.')freeSpace = false;
			}
		}



		if (freeSpace)// запись если место свободно
		{
			for (int y = tStartY; y <= tEndY; y++)
			{
				for (int x = tStartX; x <= tEndX; x++)
				{
					chars[y][x] = simb[simbol];
				}
			}
			if (simbol == 0)sharpcount++;
			if (simbol == 1)ravnocount++;
			if (simbol == 2)pluscount++;
			if (simbol == 3)voproscount++;
		}

		freeSpace = true;
		//cout << "STartX: " << tStartX << " " << "ENd: " << tEndX << "  " << simb[simbol] << endl;
		//cout << "STartY: " << tStartY << " " << "ENd: " << tEndY << "  " << simb[simbol] << endl;
		//cout << shiftLeftX << " " << shiftRightX << " " << shiftTopY << " " << shiftBottomY;
		//cout << endl;
	}
	cout << endl;
	for (int y = 0; y < sizeY; y++)
	{
		for (int x = 0; x < sizeX; x++)
		{
			cout << chars[y][x] << "  ";
		}
		cout << endl;
	}
	cout << "# rectangle: " << sharpcount << endl;
	cout << "? rectangle: " << voproscount << endl;
	cout << "+ rectangle: " << pluscount << endl;
	cout << "= rectangle: " << ravnocount << endl;
}
void task1045()
{
	int const k = 10;
	int arr[k][k];
	int n, count = 0, sum = 0;
	cout << "Our array: " << endl;
	for (int i = 0; i < k; i++)
	{
		for (int j = 0; j < k; j++) {
			arr[i][j] = rand() % 100;
			cout << setw(3) << arr[i][j];
			if (j == 9)cout << endl;
		}
	}
	cout << "Enter n :";
	cin >> n;
	cout << "Task(a)" << endl;
	int arr1[k];
	for (int j = 0; j < k; j++)
	{
		count = 0;
		arr1[j] = 0;
		for (int i = 0; i < k; i++) {
			if (n < arr[i][j]) {
				count++;
				arr1[j] = count;
			}
		}
		cout << arr1[j] << setw(3);
	}
	cout << endl << endl;
	cout << "Task(b)" << endl;
	int arr2[k];
	for (int i = 0; i < k; i++)
	{
		sum = 0;
		arr2[i] = 0;
		for (int j = 0; j < k; j++) {
			if (n > arr[i][j]) {
				sum += arr[i][j];
			}
		}
		arr2[i] = sum;
		cout << arr2[i] << setw(5);
	}
	cout << endl << endl;
}
int main()
{
	int a;
	while (true)
	{
		cout << "Numbers of tasks are 905 940 975 1010 1045\n";
		cin >> a;
		cout << endl;
		switch (a)
		{
		case 905:
			task905();
			break;
		case 940:
			task940();
			break;
		case 975:
			task975();
			break;
		case 1010:
			task1010();
			break;
		case 1045:
			task1045();
			break;
		case 0:
			return(0);
			break;
		default:
			cout << "Incorrect number, try again" << endl;
			break;
		}
	}
}
/*
905     940     975     1010    1045
*/
INFO