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:

Powered by Blogger.