C/C++
Обработка массивов на c++
В заданной матрице W упорядочить по убыванию элементы каждого столбца матрицы. Исходную и полученную матрицу вывести в общепринятом виде.
С сортировкой пузырьком:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
void print_matrix(int **a, int k, int l)
{
int i, j;
for (i = 0; i < k; i++)
{
for (j = 0; j < l; j++) cout << setw(3) << a[i][j];
cout << endl;
}
cout << endl;
}
int main()
{
int i, j, k, l, m, n;
cout << "n m: ";
cin >> n >> m;
int **W = new int *[n];
for (i = 0; i < n; i++) W[i] = new int [m];
srand(time(nullptr));
for (i = 0; i < n; i++) for (j = 0; j < m; j++)
W[i][j] = rand() % 100;
cout << "Matrix W:" << endl;
print_matrix(W, n, m);
for (j = 0; j < m; j++)
for (i = 1; i < n; i++)
for (k = n - 1; k >= i; k--)
if (W[k - 1][j] < W[k][j])
{
l = W[k - 1][j];
W[k - 1][j] = W[k][j];
W[k][j] = l;
}
cout << "Matrix W after sorting:" << endl;
print_matrix(W, n, m);
}

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
void print_matrix(int **a, int k, int l)
{
int i, j;
for (i = 0; i < k; i++)
{
for (j = 0; j < l; j++) cout << setw(3) << a[i][j];
cout << endl;
}
cout << endl;
}
int main()
{
int i, j, k, l, m, n;
cout << "n m: ";
cin >> n >> m;
int **W = new int *[n];
for (i = 0; i < n; i++) W[i] = new int [m];
srand(time(nullptr));
for (i = 0; i < n; i++) for (j = 0; j < m; j++)
W[i][j] = rand() % 100;
cout << "Matrix W:" << endl;
print_matrix(W, n, m);
for (j = 0; j < m; j++)
for (i = 1; i < n; i++)
for (k = n - 1; k >= i; k--)
if (W[k - 1][j] < W[k][j])
{
l = W[k - 1][j];
W[k - 1][j] = W[k][j];
W[k][j] = l;
}
cout << "Matrix W after sorting:" << endl;
print_matrix(W, n, m);
}

#include "iostream"
#include "algorithm"
#include "ctime"
#include "cstdlib"
using namespace std;
void print(int** a, size_t n, size_t m){
for(size_t i=0;i< n;i++){
for(size_t j=0;j< m;j++)cout<< a[i][j]<<'\t'; cout<< endl;}}
int** alloc(size_t n, size_t m){
int **a=new int*[n];
for (size_t i=0;i < n;++i)a[i]=new int [m]; return a;}
void free(int **a, size_t n, size_t m){
for(size_t i=0;i< n;++i)delete[] a[i]; delete[] a;}
int main(){
size_t n,m; cout<<"n m: "; cin>>n>>m; srand(time(NULL));
int **w=alloc(n,m), **t=alloc(m, n);
for(size_t i=0;i< n;++i)for(size_t j=0;j< m;++j)w[i][j]=rand()%1000;
cout<<"source matrix: "<< endl; print(w,n,m); cout<< endl;
for(size_t i=0;i< n;i++)for(size_t j=0;j< m;j++)t[j][i]=w[i][j];
for(size_t i=0;i< m;i++){sort(t[i],t[i]+n); reverse(t[i],t[i]+n);}
for(size_t i=0;i< n;i++)for(size_t j=0;j< m;j++)w[i][j]=t[j][i];
print(w,n,m); free(t,m,n); free(w,n,m);}
Для квадратной матрицы было бы заметно проще, но нигде не сказано, что матрица должна быть квадратной.
#include "algorithm"
#include "ctime"
#include "cstdlib"
using namespace std;
void print(int** a, size_t n, size_t m){
for(size_t i=0;i< n;i++){
for(size_t j=0;j< m;j++)cout<< a[i][j]<<'\t'; cout<< endl;}}
int** alloc(size_t n, size_t m){
int **a=new int*[n];
for (size_t i=0;i < n;++i)a[i]=new int [m]; return a;}
void free(int **a, size_t n, size_t m){
for(size_t i=0;i< n;++i)delete[] a[i]; delete[] a;}
int main(){
size_t n,m; cout<<"n m: "; cin>>n>>m; srand(time(NULL));
int **w=alloc(n,m), **t=alloc(m, n);
for(size_t i=0;i< n;++i)for(size_t j=0;j< m;++j)w[i][j]=rand()%1000;
cout<<"source matrix: "<< endl; print(w,n,m); cout<< endl;
for(size_t i=0;i< n;i++)for(size_t j=0;j< m;j++)t[j][i]=w[i][j];
for(size_t i=0;i< m;i++){sort(t[i],t[i]+n); reverse(t[i],t[i]+n);}
for(size_t i=0;i< n;i++)for(size_t j=0;j< m;j++)w[i][j]=t[j][i];
print(w,n,m); free(t,m,n); free(w,n,m);}
Для квадратной матрицы было бы заметно проще, но нигде не сказано, что матрица должна быть квадратной.
Георгий Родионов
это мы находим исходную и полученную матрицы?
Георгий Родионов
видно
https://www.youtube.com/watch?v=oVS3ViSFfOs смотри урок и делай задачу
Похожие вопросы
- Помогите пожалуйста - создать 4 массива на c++
- Нужно решить задачу с массивами на C++
- Написать массив на C(не C++) пожалуйста!!! простым языком с пояснениями
- Массив функции c++ помогите
- Сложности с массивами структур c++
- Функторы и массивы в C++
- Как удалить элемент массива в C++
- Одномерный массив в C++
- Помогите решить задачу с двумерным массивом на C++
- Найти наиболее часто встречаемое число в массиве на C++, используя только функции