Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication4.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include "stdio.h"
- #include "stdlib.h"
- #include "time.h"
- #include "locale.h"
- using namespace std;
- void createhandlymatrix(int** &arr, int n);
- void createrandomlymatrix(int** &arr, int n);
- void showmatrix(int** arr, int n);
- void showrowofmatrix(int** arr, int n, int m);
- void showdynmas(int* arr);
- int* weakspot(int** arr, int n);
- int main()
- {
- setlocale(LC_ALL, "RUS");
- int** z = new int*[0];
- int cho = 0, dimension = 0, destiny = 666;
- bool inputflag = false;
- while (destiny != 0)
- {
- system("cls");
- cout << "Лабораторная работа №2 ИКБО-07-17 Судариков К.А. Вариант 10" << endl << endl;
- cout << "Задание 3" << endl;
- cout << "Меню\n";
- cout << "1) Ввести квадратную матрицу\n";
- cout << "2) Вывести матрицу\n";
- cout << "3) Вывести элементы диагонали массива, параллельной главной,\n сумма значений которой минимальна\n";
- cout << "0) Выход\n";
- cout << "Ваш выбор: ";
- if (cin >> destiny)
- {
- system("cls");
- cout << "Лабораторная работа №2 ИКБО-07-17 Судариков К.А. Вариант 10" << endl << endl;
- switch (destiny)
- {
- case 1:
- {
- cout << "Какой способ ввода вы выбираете?\n";
- cout << "1) Вручную\n";
- cout << "2) Случайными числами\n";
- cin >> cho;
- switch (cho)
- {
- case 1:
- {
- cout << "Введите размерность матрицы: \n";
- cin >> dimension;
- if (dimension < 1)
- {
- cout << "Размерность - натуральное целое число!\n";
- getchar();
- getchar();
- break;
- }
- createhandlymatrix(z, dimension);
- cout << "Операция успешна!\n";
- getchar();
- getchar();
- inputflag = true;
- break;
- }
- case 2:
- {
- cout << "Введите размерность матрицы: \n";
- cin >> dimension;
- if (dimension < 1)
- {
- cout << "Размерность - натуральное целое число!\n";
- getchar();
- getchar();
- break;
- }
- createrandomlymatrix(z, dimension);
- cout << "Операция успешна!\n";
- getchar();
- getchar();
- inputflag = true;
- break;
- }
- default:
- break;
- }
- break;
- }
- case 2:
- {
- if (inputflag)
- {
- cout << "Какие данные вы хотите вывести?\n";
- cout << "1) Из строки\n";
- cout << "2) Все данные\n";
- cin >> cho;
- switch (cho)
- {
- case 1:
- {
- cout << "Введите номер строки\n";
- cin >> cho;
- if (cho < 1 || cho > dimension)
- {
- if (cho > dimension)
- {
- cout << "Такой строки в массиве нет!\n";
- getchar();
- getchar();
- }
- else
- {
- cout << "Номер - натуральное целое число!\n";
- getchar();
- getchar();
- }
- break;
- }
- cout << "Данные из строки " << cho << ":\n";
- showrowofmatrix(z, cho - 1, dimension);
- getchar();
- getchar();
- break;
- }
- case 2:
- {
- cout << "Вывод массива\n\n";
- showmatrix(z, dimension);
- getchar();
- getchar();
- break;
- }
- default:
- break;
- }
- }
- else
- {
- cout << "Создайте матрицу!\n";
- getchar();
- getchar();
- }
- break;
- }
- case 3:
- {
- if (dimension > 2)
- {
- cout << "Самая маленькая диагональ:\n";
- int* y = weakspot(z, dimension);
- showdynmas(y);
- getchar();
- getchar();
- delete[] y;
- }
- else
- {
- cout << "В вашей матрице нет диагоналей, параллельных главной!\n";
- getchar();
- getchar();
- }
- break;
- }
- default:
- break;
- }
- }
- else
- {
- system("cls");
- cout << "Не ломайте программу, или программа сломает вас!\n";
- break;
- }
- }
- for (int i = 0; i<dimension; i++)
- delete[] z[i];
- delete[] z;
- system("pause");
- return 0;
- }
- void createhandlymatrix(int** &arr, int n)
- {
- arr = new int *[n];
- for (int i = 0; i < n; i++)
- {
- cout << "Ввод " << i << "-й строки\n";
- arr[i] = new int[n];
- for (int j = 0; j < n; j++)
- {
- cin >> arr[i][j];
- }
- cout << endl;
- }
- }
- void createrandomlymatrix(int** &arr, int n)
- {
- arr = new int *[n];
- srand((unsigned int)time(NULL));
- for (int i = 0; i < n; i++)
- {
- arr[i] = new int[n];
- for (int j = 0; j < n; j++)
- {
- arr[i][j] = rand() % 5;
- }
- }
- }
- void showmatrix(int** arr, int n)
- {
- int temp = n * n, highrise = 0;
- while (temp / 10 > 0)
- {
- temp = temp / 10;
- highrise++;
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- int zifry = -1, temp = arr[i][j];
- while (temp / 10 > 0)
- {
- temp = temp / 10;
- zifry++;
- }
- for (int i = 0; i < highrise - zifry; i++)
- cout << " ";
- cout << arr[i][j];
- }
- cout << "\n";
- }
- cout << endl;
- }
- void showrowofmatrix(int** arr, int n, int m)
- {
- for (int i = 0; i < m; i++)
- {
- cout << arr[n][i] << " ";
- }
- cout << endl;
- }
- int* weakspot(int** arr, int n)
- {
- int* y = new int[n+1]; int leng = 0;
- for (int k = 0; k < n - 2; k++)
- {
- int sum1 = 0, sum2 = 0;
- leng += 2;
- for (int i = 0; i + k + 1 < n; i++)
- {
- sum1 += arr[i][i + k + 1];
- sum2 += arr[i + k + 1][i];
- }
- y[2*k] = sum1;
- y[1+2*k] = sum2;
- }
- int min = 25000, member=0;
- for (int i = 0; i < leng; i++)
- {
- if (min > y[i])
- {
- min = y[i];
- member = i + 1;
- }
- }
- if (member % 2 == 0)
- {
- for (int i = 0; i + (member / 2) < n ; i++)
- {
- y[0] = i + 1;
- y[i+1] = arr[i + (member / 2)][i];
- }
- }
- else
- {
- for (int i = 0; i + (member / 2) + 1 < n; i++)
- {
- y[0] = i + 1;
- y[i+1] = arr[i][i + (member / 2)+1];
- }
- }
- return y;
- }
- void showdynmas(int* arr)
- {
- for (int i = 1; i-1 < arr[0]; i++)
- {
- cout << arr[i] << " ";
- }
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement