Bài tập c++ về mảng có lời giải năm 2024

Trước khi đi vào danh sách các bài tập mảng hai chiều, mình xin nhắc lại một số khái niệm về mảng hai chiều trong C#.

Mảng hai chiều trong C#

Mẫu đơn giản nhất của mảng đa chiều là mảng hai chiều. Một mảng hai chiều về bản chất là danh sách của các mảng một chiều.

Một mảng 2 chiều có thể được nghĩ như là một bảng, có x hàng và y cột. Dưới đây là một mảng hai chiều có 3 hàng và 4 cột.

Bài tập c++ về mảng có lời giải năm 2024

Như vậy, mỗi phần tử trong mảng a được định danh bởi một tên phần tử trong mẫu a[i][j], với a là tên mảng và i, j là các subscript – chỉ số được xác định duy nhất mỗi phần tử trong a.

Khởi tạo mảng hai chiều trong C#

Các mảng đa chiều có thể được khởi tạo bởi xác định các giá trị trong dấu móc vuông cho mỗi hàng. Sau đây là một hàng với 3 hàng và mỗi hàng chứa 4 cột.

int [,] a = int [3,4] = { {0, 1, 2, 3} , / Khởi tạo cho hàng được đánh chỉ mục là 0 / {4, 5, 6, 7} , / Khởi tạo cho hàng được đánh chỉ mục là 1 / {8, 9, 10, 11} / Khởi tạo cho hàng được đánh chỉ mục là 2 / };

Bạn có thể tham khảo thêm về mảng đa chiều trong C# bằng cách click chuột VÀO ĐÂY.

Quảng cáo

Bài tập c++ về mảng có lời giải năm 2024

Bài tập mảng hai chiều trong C#

Dưới đây là danh sách các bài tập về mảng hai chiều trong C#. Mời bạn click vào link để theo dõi bài tập cũng như chương trình C# minh họa lời giải cho bài tập.

  • Đọc và in mảng hai chiều trong C#
  • Cộng hai ma trận trong C#
  • Trừ ma trận trong C#
  • Chương trình C# để nhân hai ma trận
  • Tìm ma trận chuyển vị trong C#
  • Chương trình C# để tính tổng các phần tử trên đường chéo chính của ma trận
  • Tính tổng các phần tử trên đường chéo phụ của ma trận trong C#
  • Chương trình C# để tính tổng các hàng, các cột của ma trận
  • In ma trận tam giác trên trong C#
  • Chương trình C# để in ma trận tam giác dưới
  • Tính định thức ma trận trong C#
  • Chương trình C# để kiểm tra ma trận thưa (Sparse Matrix)
  • Chương trình C# để so sánh hai ma trận xem chúng có bằng nhau không

Quảng cáo

Bài tập c++ về mảng có lời giải năm 2024

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Bài tập c++ về mảng có lời giải năm 2024

Bài tập c++ về mảng có lời giải năm 2024

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Dạng bài tập liệt kê và đếm khá đơn giản, đề bài thường yêu cầu các bạn đếm hoặc liệt kê các phần tử trong mảng thỏa mãn tính chất cho trước. Ví dụ như số nguyên tố, thuận nghịch, số chẵn, lẻ...

Để giải bài tập này bạn cần chuẩn bị hàm kiểm tra tính chất mà đề bài yêu cầu, việc cần làm còn lại chỉ cần duyệt qua từng phần tử trong mảng và kiểm tra thỏa mãn yêu cầu thì sẽ đếm hoặc liệt kê

Bài 1 : Liệt kê các số nguyên tố trong mảng

include "iostream"

include "math.h"

using namespace std; bool nt(int n){ if(n < 2)

  return false;  
for(int i = 2; i <= sqrt(n); i++){
  if(n % i == 0) return false;  
} return true; } int main(){ int n = 10; int a[10] = {2, 3, 19, 88, 100, 28, 47, 31, 14, 25}; cout << "Cac so nguyen to trong day : "; for(int i = 0; i < n; i++){
  if(nt(a[i])){  
     cout << a[i] << ' ';  
  }  
} return 0; }

Output :

Cac so nguyen to trong day : 2 3 19 47 31

Ví dụ 2 : Đếm và liệt kê các số thuận nghịch trong mảng

include "iostream"

include "math.h"

using namespace std; bool tn(int n){ int rev = 0, tmp = n; while(n != 0){

  rev = rev * 10 + n % 10;  
  n /= 10;  
} return rev == tmp; } int main(){ int n = 10; int a[10] = {2222, 3, 19, 88, 12321, 28, 4774, 31, 141, 25}; int dem = 0; for(int i = 0; i < n; i++){ if(tn(a[i])){
  ++dem;  
  }  
} cout << "So luong so thuan nghich : " << dem << endl; cout << "Danh sach so thuan nghich : "; for(int i = 0; i < n; i++){
  if(tn(a[i])){  
     cout << a[i] << " ";  
  }  
} return 0; }

Output :

So luong so thuan nghich : 6 Danh sach so thuan nghich : 2222 3 88 12321 4774 141

2.Tìm Max, Min

Để tìm phần tử lớn nhất (nhỏ nhất) trong mảng ta có thể làm như sau :

  1. Giả sử phần tử đầu tiên trong mảng là lớn nhất (nhỏ nhất)
  2. Duyệt các phần tử còn lại trong mảng và so sánh sau đó cập nhật giá trị cho biến lớn nhất (nhỏ nhất)

Code :

include "iostream"

include "math.h"

using namespace std; int main(){

int n = 10;  
int a[10] = {2222, 3, 19, 88, 12321, 28, 4774, 31, 141, 25};  
int max_val = a[0], min_val = a[0];  
for(int i = 1; i < n; i++){  
    if(a[i] < min_val){  
        min_val = a[i];  
    }  
    if(a[i] > max_val){  
        max_val = a[i];  
    }  
}  
cout << "So lon nhat : " << max_val << endl;  
cout << "So nho nhat : " << min_val << endl;  
return 0;  
}

Output :

So lon nhat : 12321 So nho nhat : 3

Bạn cũng có thể tìm max bằng cách khởi tạo giá trị cho biến max_val một giá trị rất nhỏ (-109) để khi duyệt qua phần tử đầu tiên trong mảng thì giá trị của biến max_val sẽ được cập nhật ngay. Ngược lại khi tìm min bạn sẽ khởi tạo giá trị của min_val là một số rất lớn (109).

Tùy thuộc vào giới hạn của đề bài để bạn có thể quyết định khởi tạo giá trị phù hợp cho max_val và min_val, max_val sẽ khởi tạo nhỏ hơn giá trị nhỏ nhất mà đề bài cho, min_val sẽ khởi tạo là số lớn hơn giá trị lớn nhất mà đề bài cho. Ví dụ đề bài cho các phần tử trong mảng thuộc [0, 106] thì max_val bạn cần khởi tạo nhỏ hơn 0 và min_val bạn cần khởi tạo lớn hơn 106.

Code :

include "iostream"

include "math.h"

using namespace std;

define MIN -1000000000

define MAX 1000000000

int main(){

int n = 10;  
int a[10] = {2222, 3, 19, 88, 12321, 28, 4774, 31, 141, 25};  
int max_val = MIN, min_val = MAX;  
for(int i = 0; i < n; i++){  
    if(a[i] < min_val){  
        min_val = a[i];  
    }  
    if(a[i] > max_val){  
        max_val = a[i];  
    }  
}  
cout << "So lon nhat : " << max_val << endl;  
cout << "So nho nhat : " << min_val << endl;  
return 0;  
}

Output :

So lon nhat : 12321 So nho nhat : 3


3. Mảng Đối Xứng

Kiểm tra mảng đối xứng

Để kiểm tra mảng đối xứng bạn cần xét các cặp phần tử đối xứng với nhau, nếu 2 phần tử này có giá trị khác nhau có thể kết luận luôn mảng không đối xứng.

Xét thấy phần tử có chỉ số i thì phần tử đối xứng với nó sẽ có chỉ số n - i - 1, số cặp mà bạn cần phải xét sẽ là N / 2 với N là số lượng phần tử trong mảng. Ví dụ với mảng có 6 phần tử bạn cần xét 3 cặp, 5 phần tử bạn cần xét 2 cặp vì phần tử chính giữa sẽ đối xứng với chính nó nên không cần kiểm tra.

a102030302010i012345n - i - 1543210

Code :

include "iostream"

include "math.h"

using namespace std; bool doixung(int a[], int n){

for(int i = 0; i < n / 2; i++){  
    if(a[i] != a[n - i - 1]){  
        return false;  
    }  
}  
return true;  
} int main(){
int n = 10;  
int a[10] = {1, 2, 3, 4, 5, 5, 4, 3, 2, 1};  
cout << "Mang a doi xung : " << boolalpha << doixung(a, n) << endl;  
int m = 5;  
int b[5] = {1, 2, 3, 2, 3};  
cout << "Mang b doi xung : " << boolalpha << doixung(b, m) << endl;  
return 0;  
}

Output :

Mang a doi xung : true Mang b doi xung : false

Lật ngược mảng

Bạn cũng có thể sử dụng code trên để lật ngược một mảng, bạn sẽ xét từng cặp phần tử trong mảng và hoán đối giá trị.

Code :

Cac so nguyen to trong day : 2 3 19 47 31

0

Output :

Cac so nguyen to trong day : 2 3 19 47 31

1


4. Đếm Cặp Phần Tử

Dạng bài tập này sẽ yêu cầu các bạn xét tất cả các cặp phần tử trong mảng A[] có N phần tử và kiểm tra tính chất của các cặp này, ví dụ đếm số cặp phần tử nguyên tố cùng nhau trong mảng, đếm cặp số có tổng bằng K ...