FVA043
Опубликовано 6 лет назад по предмету Информатика от FVA043


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

  1. Ответ
    Ответ дан Iexpmhihx

    //На 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];   //Безопасный способ 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:n"; Print(X,Matr); search_and_print(X,Matr); _getch(); delete [] Matr;}

Не тот ответ, который вам нужен?
Найди нужный
Задай вопрос

Лучшие за месяц