Tạo và so sánh 2 mảng động c++ năm 2024

Yêu cầu bài toán

Khai báo cấu trúc biểu diễn thông tin của một thời gian bao gồm: giờ, phút, giây

Viết chương trình nhập vào 2 thời gian. So sánh 2 thời gian vừa nhập và in ra kết quả.

Hướng dẫn

Bài tập mang tính tham khảo, hỗ trợ các bạn làm quen và luyện tập với các bàn toán lập trình cơ bản trong C++.

Kteam khuyến khích các bạn tự phân tích đề bài > tự giải bài toán > debug để kiểm tra kết quả và fix lỗi trong quá trình giải. Sau đó, bạn có thể tham khảo source code mẫu để hoàn chỉnh bài tập.

Để được hỗ trợ tốt nhất, bạn có thể đặt câu hỏi ở phần bình luận bên dưới bài viết hoặc ở mục Hỏi & Đáp.

Source

`/ Khai bao cau truc bieu dien thong tin cua mot thoi gian bao gom: gio, phut, giay. Viet chuong trinh nhap vao 2 thoi gian. So sanh 2 thoi gian vua nhap và in ra ket qua! /


include

using namespace std; struct Thoigian { int gio, phut, giay; }; void NhapTG(Thoigian &t) { do {

cout<<"\nNhap vao gio: ";  
cin>>t.gio;  
if(t.gio<0 || t.gio>24)  
  cout<<"Nhap sai, yeu cau nhap lai gio! ";  
}while(t.gio<0 || t.gio>24); do {
cout<<"Nhap vao phut: ";  
cin>>t.phut;  
if(t.phut<0 || t.phut>60)  
  cout<<"Nhap sai, yeu cau nhap lai phut! ";  
}while(t.phut<0 || t.phut>60); do {
cout<<"Nhap vao giay: ";  
cin>>t.giay;  
if(t.giay<0 || t.giay>60)  
  cout<<"Nhap sai, yeu cau nhap lai giay! ";  
}while(t.giay<0 || t.giay>60); } void XuatTG(Thoigian t) { cout<< t.gio << ":" << t.phut << ":" << t.giay; } long DoiThoiGian(Thoigian t) { return (t.gio*3600 + t.phut*60 + t.giay); } void main() { Thoigian t1, t2; cout<<"Nhap thoi gian 1: "; NhapTG(t1); cout<<"Nhap thoi gian 2: "; NhapTG(t2); long kq1=DoiThoiGian(t1); long kq2=DoiThoiGian(t2); cout<<"Thoi gian 1: "; XuatTG(t1); cout<<"\nThoi gian 2: "; XuatTG(t2); if(kq1>kq2)
cout<<"\nThoi gian 1 lon hon thoi gian 2!";  
else
if(kq1
else
cout<<"\nHai thoi gian nhap vao banh nhau!";
cout<

Kết luận

Bạn có thể củng cố kiến thức C++ từ khóa Lập trình C++ cơ bản.

Hoặc tìm hiểu thêm các bài tập khác trong khóa Bài toán kinh điển trong lập trình

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Viết chương trình so sánh 2 thời gian nhập vào và in ra kết quả dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Tạo và so sánh 2 mảng động c++ năm 2024


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Trong bài này, Nguyễn Văn Hiếu sẽ cung cấp cho các bạn loạt bài tập mảng 2 chiều có lời giải. Tôi mong rằng bài chia sẻ này giúp các bạn có thể tập luyện và học tốt hơn về phần kiến thức mảng hai chiều. Không dài dòng nữa, chúng ta sẽ bắt đầu với loạt bài tập này ngay thôi nào.

Nội dung bài viết này yêu cầu người đọc cần có kiến thức về mảng 2 chiều trong C/C++. Do đó, nếu bạn cần bổ sung kiến thức thì hãy đọc bài học Mảng 2 chiều trong C/C++ trước khi đọc bài này nhé.

NỘI DUNG BÀI VIẾT

Nhập xuất là bài tập mảng 2 chiều cơ bản nhất mà chúng ta cần phải làm. Mọi bài toán liên quan tới mảng 2 chiều chúng ta đều cần 2 chức năng này.

BT1. Nhập vào mảng 2 chiều có kích thước m x n. Hiển thị ma trận vừa nhập ra màn hình.

Lời giải:

include

include

main() {

int a[50][50];  
int i,j,m,n;  
printf("nhap so hang n="); scanf("%d",&n);  
printf("nhap so cot m="); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
for(i=0;i
}


BT2. Viết hàm nhập, xuất 1 ma trận kích thước m x n

Lời giải:

include

void NhapMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++)

  for(int j = 0; j < n; j++)  
  {  
     printf("A[%d][%d] = ", i, j);  
     scanf("%d", &a[i][j]);  
  }  
} void XuatMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++) {
  for(int j = 0; j < n; j++)  
     printf("%d\t", a[i][j]);  
  printf("\n");  
} } int main(){
int a[100][100];  
int m,n;  
printf("nhap so hang n = "); scanf("%d",&n);  
printf("nhap so cot m = "); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
NhapMaTran(a, m , n);  
XuatMaTran(a, m, n);  
}

Dạng 2. Tìm giá trị lớn nhất/ nhỏ nhất trong mảng 2 chiều

Đây là dạng bài tập mảng 2 chiều cơ bản nhất giúp các bạn luyện tập kiến thức, các bạn khi đã hiểu mảng 2 chiều thì hoàn toán có thể áp dụng các kiến thức từ bài tập mảng 1 chiều để dùng cho mảng 2 chiều.

BT3. Nhập vào một ma trận n x m, in ra ma trận vừa nhập dưới dạng bảng. Hiển thị và tính tổng các phần tử trên hàng chẵn của ma trận. Tìm giá trị lớn nhất trên cột 1 của ma trận

Lời giải:

include

include

main() {

int a[50][50];  
int i,j,m,n;  
printf("nhap so hang n="); scanf("%d",&n);  
printf("nhap so cot m="); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
for(i=0;i
//hien thi ma tran vua nhap duoi dang bang
printf("ma tran vua nhap la:\n");  
for(i=0;i
// tinh tong pt tren hang chan cua mang
float s=0;  
for(i=0;i
// tim max tren cot 1 cua mang
int max;  
max=a[0][0];  
for(i=1;imax)  
    {  
        max=a[i][0];  
    }  
}  
printf("\nGia tri max tren cot 1 cua mang la %5d",max);  
getch();  
}


BT4. Viết hàm tìm giá trị lớn nhất, nhỏ nhất trong ma trận

Lời giải:

include

void NhapMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++)

  for(int j = 0; j < n; j++)  
  {  
     printf("A[%d][%d] = ", i, j);  
     scanf("%d", &a[i][j]);  
  }  
} void XuatMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++) {
  for(int j = 0; j < n; j++)  
     printf("%d\t", a[i][j]);  
  printf("\n");  
} } int PhanTuLonNhat(int a[][100], int m, int n) { int max = a[0][0]; for(int i = 0; i < m; i++)
  for(int j = 0; j < n; j++)  
     if(a[i][j]>max)  
        max = a[i][j];  
return max; } int main(){
int a[100][100];  
int m,n;  
printf("nhap so hang n = "); scanf("%d",&n);  
printf("nhap so cot m = "); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
NhapMaTran(a, m , n);  
XuatMaTran(a, m, n);  
printf("\nPhan tu lon nhat la %d", PhanTuLonNhat(a, m, n));  
}

Dạng 3. Tính tổng 2 ma trận có cùng kích thước

BT5. Tính tổng hai ma trận có cùng kích thước.

Lời giải:

include

include

main() {

int a[10][10],b[10][10],c[10][10];  
int i,j,m,n;  
printf("nhap so hang m="); scanf("%d",&m);  
printf("nhap so cot n="); scanf("%d",&n);  
printf("nhap vao ma tran:\n");  
for(i=0;i
}

Dạng 4. Sắp xếp ma trận tăng/ giảm dần

Dạng bài tập mảng 2 chiều: sắp xếp mảng, sắp xếp 1 hàng, 1 cột, …

BT6. Nhập vào một ma trận n x m, in ra ma trận vừa nhập dưới dạng bảng. Sắp xếp hàng 2 theo chiều giá trị các phần tử giảm dần. Đưa ra màn hình tổng các phần tử trong ma trận. Tìm giá trị lớn nhất trong mảng. Tìm giá trị nhỏ nhất chia hết cho 3 có trong mảng.

Lời giải:

include

include

main() {

int a[50][50];  
int m,n,i,j;  
printf("nhap so hang n="); scanf("%d",&n);  
printf("nhap so cot m="); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
for(i=0;i
// in ra ma tran vua nhap duoi dang bang
printf("ma tran vua nhap la:\n");  
for(i=0;i
//sap xep hang 2 trong mang theo chieu giam dan
int tg,k;  
for(j=0;j
// Dua ra man hinh tong cac phan tu ma tran
int s=0;  
for(i=0;i
// gia tri nho nhat chia het cho 3 trong mang
int min, kt=0;  
for(i=0;i
}

Một số bài tập mảng 2 chiều khác

Bắt đầu ở đây, để cho ngắn gọn bài viết. Mình sẽ chỉ đưa ra hàm con giải quyết phần đề bài của bài tập mảng 2 chiều tương ứng. Các bạn sẽ tự thêm nó vào hàm main nhé. Mẫu code sử dụng hàm có thể xem ở BT2 và BT4.

BT7. Viết hàm tính tổng các số chẵn trong ma trận

int TongCacSoChan(int a[][100], int m, int n) { int sum = 0; for(int i = 0; i < m; i++)

  for(int j = 0; j < n; j++)  
     if(a[i][j]%2==0)  
        sum += a[i][j];  
return sum; }


BT8. Viết hàm liệt kê các số nguyên tố trong ma trận, đếm các số nguyên tố có trong ma trận

bool SoNguyenTo(int soA) {

if (soA < 2)  
{  
    return false;  
}  
else  
{  
    for (int i = 2; i <= sqrt((float)soA); i ++)  
    {  
        if (soA%i==0)  
        {  
            return false;  
        }  
    }  
}  
return true;  
} int DemSoLuongSNT(int a[][100], int m, int n) { int dem = 0; for(int i = 0; i < m; i++)
  for(int j = 0; j < n; j++)  
     if(SoNguyenTo(a[i][j])) dem++;  
return dem; } void LietKeSNT(int a[][100], int m, int n) { int dem = 0; for(int i = 0; i < m; i++)
  for(int j = 0; j < n; j++)  
     if(SoNguyenTo(a[i][j])) printf("%d\t", a[i][j]);  
}


BT9. Viết hàm xóa một dòng của ma trận. Viết hàm xóa một cột của ma trận

void XoaDong(int a[][100], int &m, int n, int r) { for(int i=r;i for(int j=0;j m--; } void XoaCot(int a[][100], int m, int &n, int c) { for(int i=0;i for(int j=c;j n--; }


BT10. Viết hàm đổi chỗ 2 hàng của 1 ma trận. Viết hàm đổi chỗ 2 cột của ma trận.

void swap(int &a, int &b) {    int temp = a;    a = b;    b = temp; } void DoiCho2Hang(int a[][100], int m, int n, int row1, int row2) {    if((row1>=0 && row1=0 && row2=0 && column1=0 && column2


BT12. Viết hàm tìm giá trị lớn nhất/ nhỏ nhất trên đường chéo chính của ma trận.

include

void NhapMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++)

  for(int j = 0; j < n; j++)  
  {  
     printf("A[%d][%d] = ", i, j);  
     scanf("%d", &a[i][j]);  
  }  
} void XuatMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++) {
  for(int j = 0; j < n; j++)  
     printf("%d\t", a[i][j]);  
  printf("\n");  
} } int main(){
int a[100][100];  
int m,n;  
printf("nhap so hang n = "); scanf("%d",&n);  
printf("nhap so cot m = "); scanf("%d",&m);  
printf("nhap vao ma tran:\n");  
NhapMaTran(a, m , n);  
XuatMaTran(a, m, n);  
}

0

Trên đây là một số bài tập mảng 2 chiều do mình tổng hợp lại. Mình sẽ tiếp tục cập nhật các bài tập về mảng 2 chiều tại bài viết này khi có bài tập mới. Chúc các bạn học tập tốt!

Xem ngay bộ sưu tập tài liệu lập trình do Lập trình không khó biên soạn: https://github.com/NguyenVanHieuBlog/tai-lieu-lap-trinh