Написать программу на С++. Дана целочисленная квадратная матрица произвольной размерности. Сформировать одномерный массив, в который поместить элементы двумерной матрицы, находящиеся над побочной диагонали; упорядочить их по возрастанию и найти их среднее арифметическое.
Главная страница » Написать программу на С++. Дана целочисленная квадратная матрица произвольной размерности. Сформировать одномерный массив, в который поместить элементы двумерной матрицы, находящиеся
//На VS 2010 решается так, в других средах разработки может нужно к заголовкам добавить .h или убрать подключение пространства имен STD :(Console application)
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
void Print(int m, int ** matr) // Функция печати матрицы на экран
{
for(int i = 0; i< m; i++)
{
for(int j = 0; j<m; j++)
{
cout.width(4);
cout<<matr[i][j];
}
cout<<endl;
}
}
void search_and_print(int X, int **M) //Функция поиска элементов с их сортировкой и выводом на экран
{
int razmer = ((X*X) — X)/2;
int *mas = new int [razmer];
int Y = X — 1;
float srednee = 0;
int index = 0;
for (int j = 0; j<Y;j++)
{
for(int i = 0; i<(X-1);i++ )
{
mas[index] = M[i][j];
index++;
}
Y—;
}
for(int i = 0; i<(razmer-1); i++) //Сортировка методом выбора. X-1 раз ищем наименьший элемент.
{
//Принимаем за наименьший первый элемент из расматриваемых:
int min = i;
//Поиск минимального элемента из неупорядоченных:
for(int j = i+1;j<razmer;j++)
{
//Если нашли меньший элемент, запминаем его номер:
if(mas[j]<mas[min]) min = j;
}
//Обмен элементов:
int a = mas[i];
mas[i] = mas[min];
mas[min] = a;
}
cout<<«
Uporyado4enniy massiv:
«;
//Вывод и суммирование элементов отсортированного массива для среднего
for(int i = 0;i<razmer;i++)
{
cout<<mas[i]<<ends;
srednee += mas[i];
}
//Поиск арифметичесгоко реднего}
srednee = srednee/razmer;
cout<<«
Srednee: «<<srednee;
delete [] mas;
}
void main()
{
srand ((unsigned)time(NULL));
int X;
cout<<«Vveditrazmer matritsi po gorizontaly i po vertikaly:
«;
cin>>X;
int** Matr;
Matr = new int* [X]; //Безопасный способ
for(int i = 0; i<X; i++) //задания динамического
{
Matr[i] = new int[X]; // двумерного массива.
for(int j =0; j<X; j++) //Заполняем матрицу
{ Matr[i][j] = rand()%10-5;} //Числами от -5 до 5
}
cout<<«Ishodnaya matritsa:
«;
Print(X,Matr);
search_and_print(X,Matr);
_getch();
delete [] Matr;
}