Написать программу...

Тема в разделе "Информатика", создана пользователем Barcelona, 14 фев 2010.

  1. Barcelona

    Barcelona New Member

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

    Zero_CooL New Member

    //На 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[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[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;
    mas = mas[min];
    mas[min] = a;
    }
    cout<<"\nUporyado4enniy massiv:\n";
    //Вывод и суммирование элементов отсортированного массива для среднего
    for(int i = 0;i<razmer;i++)
    {
    cout<<mas<<ends;
    srednee += mas;
    }
    //Поиск арифметичесгоко реднего}
    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 = new int[X]; // двумерного массива.
    for(int j =0; j<X; j++)  //Заполняем матрицу
    {    Matr[j] = rand()%10-5;} //Числами от -5 до 5
    }
    cout<<"Ishodnaya matritsa:\n";
    Print(X,Matr);
    search_and_print(X,Matr);
    _getch();
    delete [] Matr;
    }
     

Поделиться этой страницей

Наша группа