Моя первая статья...
Итак, ниже задание и код, написаный на С++ в консоли, а также комментарии:
/*Лабораторная работа № 1
Разработать алгоритм решения задачи обработки двумерного массива размерности mxn.
Реализовать алгоритм на языке С++ с помощью функций с параметрами:
1) функции ввода массива (в качестве параметров выступают массив и его размерность);
2) функции вывода массива (в качестве параметров выступают массив и его размерность);
3) функций (функции) расчета (может быть с возвращаемым значением или void-функций).
В главной функции должен быть реализован только вызов функций и вывод результатов на экран.
Данные разместить в динамической памяти.
Условие задачи выбрать по номеру в журнале. Для сортировки использовать тот же алгоритм, что и
в лабораторной работе № 1.
2. Переставить столбцы матрицы так, чтобы элементы первой строки были отсортированы по убыванию
#include<iostream>
using namespace std;
typedef int** tint; //для тогочтобы не писать все время int**. Так в коде приятней смотриться
///////////////////////////////////////////////////////////////////////////////////////////
//////////////////Функции ввода и вывода матрицы///////////////////////////////////////////
void Input_matr(tint y, int n, int m)
{
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
{
cout<<"\n a["<<i<<"]["<<j<<"]=";
cin>>y[i][j];
}
}
void Output_matr(tint y, int n, int m)
{
cout<<"\n";
for (int i=0; i<n; i++)
{
cout << endl;
for (int j=0; j<m; j++)
{
cout<<y[i][j]<<" ";
}
}
cout<<"\n";
}
/////////////////////////////////////////////////////////////////////////////////////////
//Тк массив динамический, то его нужно создать и выделить под него память
//ниже приведены функции выделения и удаления памяти
void Memory_matr (tint&y, int n, int m)
{
y = new int *[n];
for (int i=0; i<n; i++)
y[i]=new int[m];
}
void Delete_matr(tint&y,int n, int m)
{for(int i=0;i<n;i++)
{delete y[i]; y[i]=NULL;}
delete[]y; y=NULL;
}
///////////////////////////////////////////////////////////////////////////////////////////
//Функция сортировки матрицы по убыванию значений первой строки
void Sort_Insertion(int** y, int n , int m)
{
int i,j,k,*b;
b= new int [n];//локальный массив.Создание
for (i=1; i<m; i++)
{
for (k=0; k<n; k++)
{
b[k]=y[k][i];
j=i;
while(j>0&&b[0]>y[0][j-1])
{
y[k][j]=y[k][j-1];
j--;
}
}for(k=0;k<n;k++)
y[k][j]=b[k];
}
delete[]b;//удаление локального массива
}
/////////////////////////////////////////////////////////////////////////////////////////
void main()
{ setlocale(LC_ALL, "Russian");//русские буквы в консоли
tint matr; //int** matr
int n,m;
cout<<"Число строк матрицы = ";
cin>>n;
cout<<"Число столбцов матрицы = ";
cin>>m;
Memory_matr(matr,n,m);//Выделение памяти
Input_matr(matr,n,m);//Ввод матрицы
cout<<"Задана матрица : ";
Output_matr(matr,n,m);//Вывод матрицы
Sort_Insertion(matr,n,m);//Сортировка
cout <<"Обработаная матрица:";
Output_matr(matr,n,m);
Delete_matr(matr,n,m);//Удаление матрицы
cin.get();//консоль ждет, когда нажмется любая клавиша
cin.get();
}
Комментариев нет:
Отправить комментарий