Sắp xếp một mảng (có sử dụng hàm đổi chỗ) - Lập trình C
Thực hành: Thực hiện sắp xếp một mảng (có sử dụng hàm đổi chỗ)
Yêu cầu:
1. Nhập vào số n từ bàn phím.
2. Nhập từng phần tử trong mảng
3. Thực hiện sắp xếp tăng dần
4. Chuyển phần code thực hiện sắp xếp thành hàm riêng
5. In ra kết quả
Duration: 20
1.1 THỰC HÀNH BƯỚC 1
Mở Code Blocks → New File → Empty file --> Lưu file SapXepMangTangDan_GoiHam có đuôi .cpp
1.2 THỰC HÀNH BƯỚC 2
Khai báo sử dụng các thư viện
#include <conio.h>
#include <stdio.h>
|
1.3 THỰC HÀNH BƯỚC 3
Khai báo biến và mảng sử dụng trong chương trình
int ds[10];
int n;
int sotrungbinh=0;
//Hien thong bao moi nguoi dung nhap
printf("Nhap so luong phan tu:");
//Nhap vao tu ban phim
scanf("%d",&n);
//In n ra
printf("n=%d\n",n);
//Nhap cac phan tu trong mang
for (int i = 0; i<n; i++)
{
//In ra loi huong dan nhap phan tu thu may
printf("Nhap phan tu thu [%d]:",i+1);
scanf("%d",&ds[i]);
}
|
1.4 THỰC HÀNH BƯỚC 4
Để tìm min của các phần tử trong mảng
Thực hiện vòng for chạy từ 1 tới giá trị n-1
Với mỗi phần tử đó, thực hiện chạy từ phần tử sau nó cho đến hết để thực hiện kiểm tra.
Nếu giá trị không thỏa mãn thì đổi chỗ
for (int i = 0;i<n-1;i++)
{
for (int j = i+1; i<n;i++)
{
if (ds[i]>ds[j])
{
DoiCho(ds[i],ds[j]);
}
}
}
|
1.5 THỰC HÀNH BƯỚC 5
In kết quả
printf("Danh sach da sap xep la:\n");
for (int i = 0;i<n;i++)
{
printf("ds[%d]=%d\n",i,ds[i]);
}
|
*** II. Chuyển thành hàm
II.1 Khuôn mẫu hàm
Khai báo 1 hàm có khuôn mẫu sau: DoiCho là tên hàm thực hiện việc đổi giải trị của 2 biến truyền vào.
void DoiCho(int& y, int& x);
|
II.2 Code của hàm
void DoiCho(int& y, int& x)
{
int tg = x;
x = y;
y = tg;
}
|
II.3 Code mới của hàm Main
int main()
{
int ds[10];
int n;
int sonhonhat=9999999;
//Hien thong bao moi nguoi dung nhap
printf("Nhap so luong phan tu:");
//Nhap vao tu ban phim
scanf("%d",&n);
//In n ra
printf("n=%d\n",n);
//Nhap cac phan tu trong mang
for (int i = 0; i<n; i++)
{
//In ra loi huong dan nhap phan tu thu may
printf("Nhap phan tu thu [%d]:",i+1);
scanf("%d",&ds[i]);
}
printf("Min trong mang:\n");
//goi ham
sonhonhat = timMin(ds,n);
//In ra danh sach
printf("Danh sach da nhap la:");
for (int i = 0;i<n;i++)
{
printf("ds[%d]=%d\n",i,ds[i]);
}
printf("Gia tri nho nhat %d \n", sonhonhat);
getch();
}
int timMin(int ds[], int n)
{
int sonhonhat = ds[0];
for (int i = 0;i<n;i++)
{
if (ds[i]<sonhonhat)
{
sonhonhat = ds[i];
}
}
return sonhonhat;
}
|
II.4 Code toàn bộ của chương trình là
#include <stdio.h>
#include <conio.h>
void DoiCho(int& y, int& x);
int main()
{
int ds[10];
int n;
int sotrungbinh=0;
//Hien thong bao moi nguoi dung nhap
printf("Nhap so luong phan tu:");
//Nhap vao tu ban phim
scanf("%d",&n);
//In n ra
printf("n=%d\n",n);
//Nhap cac phan tu trong mang
for (int i = 0; i<n; i++)
{
//In ra loi huong dan nhap phan tu thu may
printf("Nhap phan tu thu [%d]:",i+1);
scanf("%d",&ds[i]);
}
printf("Sap xep mang tang dan:\n");
//goi ham
for (int i = 0;i<n-1;i++)
{
for (int j = i+1; i<n;i++)
{
if (ds[i]>ds[j])
{
DoiCho(ds[i],ds[j]);
}
}
}
//In ra danh sach
printf("Danh sach da sap xep la:\n");
for (int i = 0;i<n;i++)
{
printf("ds[%d]=%d\n",i,ds[i]);
}
getch();
}
void DoiCho(int& y, int& x)
{
int tg = x;
x = y;
y = tg;
}
|
No comments: