Quick actions

cmd+k|ctrl+k

Navigation

Languages

лаборатория 7

Snippet info

Language

Cpp

Visibility

public

Author

skezze

Created

2019-11-26T00:42:22Z

Updated

2019-12-09T12:22:14Z

#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <algorithm>
using namespace std;
void task909(int massive[10][10])
//909. Найти номер строки и столбца Двумерного массива для максимального элемента этого массива.
{
	int max = 0;
	int imax = -1;
	int jmax = -1; 
	max = massive[0][0];

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			if (massive[i][j] >= max)
			{
				max = massive[i][j];
				imax = i;
				jmax = j;
			}

		}
	}
	cout << "max = " << max << " pos = [" << imax + 1 << ", " << jmax + 1 << "]" << endl;
}
void task951(int massive[10][10])
//Дан Двумерный массив.
//а) Заменить значения всех элементов второй строки массива числом 5.
//б) Заменить значения всех элементов пятого столбца массива числом 10.
{
	cout << "Заменил значения всех элементов второй строки массива числом 5: " << endl;
	for (int i = 0; i < 10; i++)
	{
		massive[1][i] = 5;
	}

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout.width(2);
			cout << massive[i][j] << " ";
		}
		cout << endl;
	}
	cout << "Заменил значения всех элементов пятого столбца массива числом 10: " << endl;

	for (int i = 0; i < 10; i++)
	{
		massive[i][5] = 10;
	}
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout.width(2);
			cout << massive[i][j] << " ";
		}
		cout << endl;
	}
}
void task979()
//979. Дана вещественная квадратная матрица порядка 2n. 
//Получить новую матрицу, переставляя ее блоки размера n × n по часовой стрелке, начиная с блока в левом верхнем углу.
{
	
	int N = 0;
	while (N == 0)
	{
		cout << "введите размер 2n :" << endl;
		if (!(cin >> N))
		{
			cin.clear();
			cin.ignore(65535, '\n');
		}

	}
	int** A, ** B1, ** B2, ** B3, ** B4, i, j, k, m;
	//A[2 * N][2 * N];
	A = new int* [2 * N];
	//B1[N][N];
	B1 = new int* [N];
	//B2[N][N];
	B2 = new int* [N];
	//B3[N][N];
	B3 = new int* [N];
	//B4[N][N];
	B4 = new int* [N];
	cout << "стартовый массив\n";
	for (i = 0; i < 2 * N; i++)
	{
		A[i] = new int[2 * N];
		B1[i] = new int[N];
		B2[i] = new int[N];
		B3[i] = new int[N];
		B4[i] = new int[N];
		for (j = 0; j < 2 * N; j++)
		{
			A[i][j] = rand() % 10;
			cout << setw(2) << A[i][j] << " ";
		}
		cout << endl;
	}
	for (int p = 0; p < 4; p++) {
		//создаем блоки В1..В4
		for (i = 0; i < N; i++)
			for (j = 0; j < N; j++)
				B1[i][j] = A[i][j];

		for (i = 0; i < N; i++)
			for (j = N, m = 0; j < 2 * N; j++, m++)
				B2[i][m] = A[i][j];

		for (i = N, k = 0; i < 2 * N; i++, k++)
			for (j = N, m = 0; j < 2 * N; j++, m++)
				B3[k][m] = A[i][j];

		for (i = N, k = 0; i < 2 * N; i++, k++)
			for (j = 0; j < N; j++)
				B4[k][j] = A[i][j];

		//собираем блоки в А
		for (i = 0; i < N; i++)
			for (j = 0; j < N; j++)
				A[i][j] = B4[i][j];

		for (i = 0; i < N; i++)
			for (j = N, k = 0; j < 2 * N; j++, k++)
				A[i][j] = B1[i][k];

		for (i = N, k = 0; i < 2 * N; i++, k++)
			for (j = N, m = 0; j < 2 * N; j++, m++)
				A[i][j] = B2[k][m];

		for (i = N, k = 0; i < 2 * N; i++, k++)
			for (j = 0; j < N; j++)
				A[i][j] = B3[k][j];

		cout << "\nизмененный массив\n";
		for (i = 0; i < 2 * N; i++)
		{
			for (j = 0; j < 2 * N; j++)
				cout << setw(2) << A[i][j] << " ";
			cout << endl;
		}
	}
}


void task1014(int massive[10][10])
/*1014. Расстояние между k-й и l-й строками квадратной матрицы А(n, n) определяется как
. Указать номер строки, максимально удаленной от первой строки заданной матрицы.*/
{
	int n = 0;
	cout << " введите номер первой строки :" << endl;
	int k = 0;
	while (k == 0)
	{
		if (!(cin >> k))
		{
			cin.clear();
			cin.ignore(65535, '\n');
		}
	}
	cout << " введите номер второй строки :" << endl;
	int l = 0;
	while (l == 0)
	{
		if (!(cin >> l))
		{
			cin.clear();
			cin.ignore(65535, '\n');
		}
	}
	//cout << "расстояние между строками : " << abs(l - k) << endl;
	//cout << "расстояние между первой и максимально отдалеленой строкой : " << abs(1 - n) << endl;
	double r = 0;
	r = sqrt(k * k + 1) + sqrt(l * l + 1);
	cout << "расстояние между строками : " << r << endl;
	cout << "максимальное расстояние между строками : " << sqrt(k * k + 1) + sqrt(2*(n * n) + 1) << endl;
}
void task1049(int massive[10][10])
/*. Дан Двумерный массив. Составить программу, которая:
а) переставляет две любые строки массива;
б) переставляет два любых столбца массива
*/
{
	int k = 0, l = 0, y = 0;
	while (k <= 0)
	{
		cout << "введите номер 1 строки :" << endl;
		if (!(cin >> k))
		{
			cin.clear();
			cin.ignore(65535, '\n');
			cout << "неправильный ввод" << endl;

		}
		if ((k <= 0) || (k > 10))
		{
			k = 0;
		}
	}
	while (l <= 0)
	{
		cout << "введите номер 2 строки :" << endl;
		if (!(cin >> l))
		{
			cin.clear();
			cin.ignore(65535, '\n');
			cout << "неправильный ввод" << endl;
		}
		if ((l <= 0) || (l > 10))
		{
			l = 0;
		}
	}
	for (int i =0;i<10;i++)
	{
		swap(massive[k-1][i], massive[l-1][i]);
	}
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout << setw(2) << massive[i][j] << " ";
		}
		cout << endl;
	}
	k = 0;
	while (k <= 0)
	{
		
		cout << "введите номер 1 столбца :" << endl;
		if (!(cin >> k))
		{
			cin.clear();
			cin.ignore(65535, '\n');
			cout << "неправильный ввод" << endl;

		}
		if ((k <= 0) || (k > 10))
		{
			k = 0;
		}
	}
	l = 0;
	while (l <= 0)
	{

		cout << "введите номер 2 столбца :" << endl;
		if (!(cin >> l))
		{

		}
		if ((l <= 0) || (l > 10))
		{
			l = 0;
		}
	}
	cout << endl;
	for (int i = 0; i < 10; i++)
	{
		swap(massive[i][k-1], massive[i][l-1]);
	}
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout << setw(2) << massive[i][j] << " ";
		}
		cout << endl;
	}
	
}

void main()
{
	setlocale(LC_ALL, "Russian");
	cout << "массив используемый в дальнейших вычислениях :" << endl;
	int k = 0, s = 0;
	int massive[10][10];

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			massive[i][j] = rand() % 100;
			cout.width(2);
			cout << massive[i][j] << " ";
		}
		cout << endl;
	}
	while (s == 0)
	{
		cout << "введите номер задания (909,951,979,1014,1049. для выхода из программы введите 1)" << endl;
		if (!(cin >> k))
		{
			cin.clear();
			cin.ignore(65535, '\n');

		}
		if (k == 1)
		{
			break;
		}

		switch (k)
		{
		case 909:
		{
			cout << "Задание №  909 :  " << endl;
			task909(massive);
			break;
		}
		case 951:
		{
			cout << "Задание №  951 :  " << endl;
			task951(massive);
			break;
		}
		case 979:
		{
			cout<<"Задание №  979"<<endl;
			task979();
			break;
		}
		case 1014:
		{
			cout << "Задание №  1014 :  " << endl;
			task1014(massive);
			break;
		}
		case 1049:
		{
			cout << "Задание №  1049 :  " << endl;
			task1049(massive);
			break;
		}
		default:
		{
			cout << "Упс..Это задание я не делал"<<endl;
		}

		}
	}

}
INFO