Написать программу на с++. дана целочисленная квадратная матрица произвольной размерности. сформировать одномерный массив, в который поместить элементы двумерной матрицы, находящиеся над побочной диагонали; упорядочить
их по возрастанию и найти их среднее арифметическое.

18alena2002 18alena2002    3   27.02.2019 09:50    6

Ответы
Marmanril12 Marmanril12  23.05.2020 15:39

//На 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<<"\nUporyado4enniy massiv:\n";
//Вывод и суммирование элементов отсортированного массива для среднего
for(int i = 0;i<razmer;i++)
{
cout<<mas[i]<<ends;
srednee += mas[i];
}
//Поиск арифметичесгоко реднего}
srednee = srednee/razmer;
cout<<"\nSrednee: "<<srednee;
delete [] mas;
}
void main()
{

srand ((unsigned)time(NULL));
int X;
cout<<"Vveditrazmer matritsi po gorizontaly i po vertikaly:\n";
cin>>X;
int** Matr;
Matr = new int* [X];   //Безопасный задания динамического

Matr[i] = new int[X]; // двумерного массива.
for(int j =0; j<X; j++)  //Заполняем матрицу
{    Matr[i][j] = rand()%10-5;} //Числами от -5 до 5
}
cout<<"Ishodnaya matritsa:\n";
Print(X,Matr);
search_and_print(X,Matr);
_getch();
delete [] Matr;
}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика