Bài tập mảng 2 chiều c++ có lời giải

Bài 5: Nhập vào 2 số nguyên N, M là số dòng và số cột của mảng 2 chiều N x M, xuất mảng ziczac (xem ví dụ)

VD:

Input

Output

3 3

1 2 3 6 5 4 7 8 9

include "iostream"

using namespace std;

int main() { int a[100][100], N, M, t = 1; //N la so dong, M la so cot cin >> N >> M; for (int i = 0; i < N; i++) {

if (i % 2 == 0) {
  for (int j = 0; j < M; j++) {
    a[i][j] = t;
    t++;
  }
}
else {
  for (int j = M - 1; j >= 0; j--) {
    a[i][j] = t;
    t++;
  }
}
} for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) cout << a[i][j] << " ";
cout << endl;
}
return 0;
}

Bài 6: Nhập vào 2 số nguyên N, M là số dòng và số cột của mảng 2 chiều N x M, xuất mảng ziczac (xem ví dụ)

VD:

Input

Output

3 3

1 2 3 8 9 4 7 6 5

include

using namespace std ;

int K[100][100] , n , m ;

void XuLy() {

int trai = 0, tren = 0, phai = m, duoi = n, dem = 0, soluong = m*n;

while (dem < soluong) {
    
for (int i = trai ; i < phai ; i++)  K[trai][i] = ++dem ;
tren++ ;
    
for(int i = tren ; i < duoi ; i++)  K[i][phai-1] = ++dem ;
phai-- ;
      
for (int i = phai-1 ; i >= trai ; i--)  K[duoi-1][i] = ++dem ;
duoi-- ;
       
for (int i = duoi-1 ; i >= tren ; i--)  K[i][trai] = ++dem ;
trai++ ;

}
}

void Xuat() { for (int i = 0 ; i < n ; i++) {

  for (int j = 0 ; j < m ; j++)
      cout << K[i][j] ;
      cout << endl ;
}
}

int main() { cin >> n >> m ;

XuLy(); Xuat();

return 0; }

Bài 7: Xuất số lượng các ký tự (không tính khoảng cách) trong một chuỗi (dùng khoảng trắng để ngăn cách các ký tự) ra màn hình