Tìm số ở dòng u cột v khi chuyển mảng 2 chiều -> mảng 1 chiều -> sắp xếp -> mảng 2 chiều

Viết chương trinh tìm số ở dòng u cột v cho trước khi chuyển mảng 2 chiều thành mảng 1 chiều rồi sắp xếp rồi đưa lại về mảng 2 chiều

Cho hỏi sau khi chuyển mảng 1 thành 2 chiều rồi sắp xếp lại chuyển từ mảng 2 về 1 chiều hợp các hàm với nhau lại như thế nào để tim số ở mảng mới

#include<iostream>
#include<math.h>

#define maxm 200
#define maxn 200
#define maxa 200

using namespace std;

void nhapmang(int a[maxm][maxn], int &m, int &n);
void xuatmang(int a[maxm][maxn], int m, int n,int u,int v);
void chuyenthanhmang1(int a[maxm][maxn],int b[maxa], int m, int n,int t);
void chuyenthanhmang2(int a[maxm][maxn],int b[maxa], int m, int n,int t);
void sapxeptang(int b[],int t);
int mangtang(int a[maxm][maxn],int b[maxa], int m, int n,int t);

int main()
{
	int a[maxm][maxn],m,n,u,v,b[maxa],t;
	cout<<"Nhap so dong=";  cin>>m;
	cout<<"Nhap so cot=";   cin>>n;
	cout<<"Nhap so u=";     cin>>u;
	cout<<"Nhap so v=";     cin>>v;
	nhapmang(a,m,n);
	xuatmang(a,m,n,u,v);

	return 0;
}

void nhapmang(int a[maxm][maxn], int &m, int &n)
{
    for (int i=1;i<=m;i++)
	for (int j=1;j<=n;j++)
	    cin>>a[i][j];
}

void xuatmang(int a[maxm][maxn], int m, int n,int u,int v)
{
    cout<<m<<" "<<n<<" "<<u<<" "<<v<<endl;
	for (int i=1;i<=m;i++)
	{
        for (int j=1;j<=n;j++)
		  cout<<a[i][j]<<" ";
	    cout<<endl;
	}
	cout<<endl;
}

void chuyenthanhmang1(int a[maxm][maxn],int b[maxa], int m, int n,int t)
{
    t=1;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
        {
            b[t]=a[i][j];
            t++;
        }
    }
}

void sapxeptang(int b[],int t)
{
  for(int i=1;i<t-1;i++)
    for(int j=i+1;j<t;j++)
       if(b[i]<b[j])
         swap(b[i],b[j]);
}

void chuyenthanhmang2(int a[maxm][maxn],int b[maxa], int m, int n,int t)
{
    t=1;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
        {
            a[i][j]=b[t];
            t++;
        }
    }
}

int mangtang(int a[maxm][maxn],int b[maxa], int m, int n,int t);
{
   chuyenthanhmang1(a,b,m,n,t);
   sapxeptang(b,t);
   chuyenthanhmang2(a,b,m,n,t);
   for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
       return a[3][4];
}

Thực chất cũng là tìm phần tử có hạng n*u + v thôi. Tức là việc chuyển đổi chỉ thực hiện một lần.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?