Brief introduction

31
ĐỀ TÀI THỰC TẬP CƠ SỞ LỜI CẢM ƠN Ngày nay, công nghệ thông tin ngày càng phát triển và tỏ rõ tầm quan trọng trong tất cả các lĩnh vực, có thể nói công nghệ thông tin đã trở thành thước đo để đánh giá sự phát triển của xã hội hiện đại – nơi mà con người đang dần thoát khỏi cách làm việc thủ công, thô sơ và dần tiến đến tin học hóa trong tất cả các lĩnh vực để công việc có hiệu quả hơn, tiết kiệm thời gian và nhân lực. Việc nghiên cứu và lập trình ra các phần mềm, các ứng dụng mới là điều hướng tới của các sinh viên theo học công nghệ thông tin. Bản báo cáo này trình bày kết quả của việc lập trình các bài toán liên quan đến tệp và mảng trong đề tài thực tập cơ sở . Trong quá trình thực hiện em nhận được sự giúp đỡ nhiệt tình từ các giảng viên trong khoa công nghệ thông tin. Nhân dịp này em xin gửi lời cảm ơn đến khoa công nghệ thông tin đã tạo cơ hội giúp em được tham gia học hỏi, rèn luyện các kỹ năng cần thiết cho đợt thực tập cuối khóa. Đặc biệt em xin gửi lời cảm ơn đến giảng viên TS.Nguyễn Ngọc Hiếu đã quan tâm góp ý cho bài làm thực tập cơ sở và sẵn sàng trả lời những thắc mắc khi cần thiết giúp em hoàn thành tốt bài làm của mình. Sinh viên thực hiện: Trần Văn Quyết Trang 1

Transcript of Brief introduction

ĐỀ TÀI THỰC TẬP CƠ SỞ

LỜI CẢM ƠN

Ngày nay, công nghệ thông tin ngày càng phát triển và tỏ rõ tầm quan trọng

trong tất cả các lĩnh vực, có thể nói công nghệ thông tin đã trở thành thước đo để đánh

giá sự phát triển của xã hội hiện đại – nơi mà con người đang dần thoát khỏi cách làm

việc thủ công, thô sơ và dần tiến đến tin học hóa trong tất cả các lĩnh vực để công việc

có hiệu quả hơn, tiết kiệm thời gian và nhân lực.

Việc nghiên cứu và lập trình ra các phần mềm, các ứng dụng mới là điều hướng

tới của các sinh viên theo học công nghệ thông tin. Bản báo cáo này trình bày kết quả

của việc lập trình các bài toán liên quan đến tệp và mảng trong đề tài thực tập cơ sở .

Trong quá trình thực hiện em nhận được sự giúp đỡ nhiệt tình từ các giảng viên trong

khoa công nghệ thông tin.

Nhân dịp này em xin gửi lời cảm ơn đến khoa công nghệ thông tin đã tạo cơ hội

giúp em được tham gia học hỏi, rèn luyện các kỹ năng cần thiết cho đợt thực tập cuối

khóa. Đặc biệt em xin gửi lời cảm ơn đến giảng viên TS.Nguyễn Ngọc Hiếu đã quan

tâm góp ý cho bài làm thực tập cơ sở và sẵn sàng trả lời những thắc mắc khi cần thiết

giúp em hoàn thành tốt bài làm của mình.

Mặc dù đã có nhiều cố gắng nhưng do kiến thức còn hạn chế cùng với kinh

nghiệm chưa có nên không tránh khỏi thiếu sót.Vì vậy em rất mong nhận được những

ý kiến đóng góp bổ sung của thầy cô giáo và các bạn để bài làm thực tập cơ sở của em

được hoàn thiện hơn.

Sinh viên thực hiện: Trần Văn Quyết

Sinh viên thực hiện: Trần Văn Quyết Trang 1

ĐỀ TÀI THỰC TẬP CƠ SỞ

MỤC LỤC

PHẦN I: CÂU SỐ 1

I. MÃ ĐỀ - NỘI DUNG ĐỀ ................................................................................. 4

II. THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỔI HÀM

1. Lựa chọn ngôn ngữ lập trình ........................................................................... 4

2. Xác định bài toán .............................................................................................. 4

3. Ý tưởng .............................................................................................................. 4

4. Thuật toán, lưu đồ thuật toán và code các hàm

a. Hàm đọc tệp ....................................................................................................... 4

+ Ngôn ngữ giả lập trình

+ Lưu đồ thuật toán

+ Code hàm đọc tệp

b. Hàm xem các phần tử của tệp .......................................................................... 6

+ Ngôn ngữ giả lập trình

+ Lưu đồ thuật toán

+ Code hàm in mảng

c. Hàm xem phần tử đại diện của mảng .............................................................. 7

+ Ngôn ngữ giả lập trình

+ Lưu đồ thuật toán

+ Code hàm sao chép mảng

III. CHƯƠNG TRÌNH ..................................................................................................... 9

IV. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TEST TƯƠNG ỨNG

1. Hướng dẫn chạy chương trình ....................................................................... 12

2. Kiểm tra kết quả tương ứng ............................................................................ 14

3. Một số trường hợp đặc biệt ............................................................................. 16

Sinh viên thực hiện: Trần Văn Quyết Trang 2

ĐỀ TÀI THỰC TẬP CƠ SỞ

PHẦN 2: CÂU SỐ 2

I. MÃ ĐỀ - NỘI DUNG ĐỀ ............................................................................... 17

II. THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỖI HÀM

1. Ý tưởng ............................................................................................................ 17

2. Phân tích .......................................................................................................... 17

3. Giải thuật ......................................................................................................... 18

4. Ví dụ ................................................................................................................. 18

III. CHƯƠNG TRÌNH .......................................................................................... 21

IV. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG .................................. 23

Sinh viên thực hiện: Trần Văn Quyết Trang 3

ĐỀ TÀI THỰC TẬP CƠ SỞ

PHẦN I: CÂU SỐ 1

I. MÃ ĐỀ - NỘI DUNG ĐỀ:

Mã Đề 61

Cho tệp văn bản input.txt gồm các số nguyên cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Viết chương trình đọc các phần tử của tệp văn bản input.txt vào một mảng một chiều a, sau đó tạo mảng một chiều b gồm các phần tử đại diện của mảng a.

II. THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỖI HÀM1. Lựa chọn ngôn ngữ lập trình

- Ngôn ngữ Lập trình C++

2. Xác định bài toán

* INPUT:

- Tệp văn bản input.txt tệp đầu vào chứa các số nguyên cách nhau ít nhất một dấu

cách trống hoặc ít nhất một dấu xuống dòng.

* OUTPUT:

- Đọc các phần tử của tệp vào một mảng một chiều a.

- Cho xem các phần tử số nguyên cách nhau ít nhất một dấu cách trống hoặc ít

nhất một dấu xuống dòng chứa trong tệp.

- In ra mảng một chiều b gồm các phần tử đại diện lấy từ mảng a.

3. Ý tưởng

Chương trình đọc tệp đã tạo trước đó.

Hiện thì mảng một chiều a được đọc từ tệp.

Sao chép mảng một chiều sang mảng b.

Tiến hành xóa phần tử trùng ở mảng b => Được các phần tử đại diện của mảng.

Hiện thị các phần tử đại diện sau khi đã xóa các phần tử trùng.

4. Thuật toán, lưu đồ thuật toán và code các hàm.

a. Hàm đọc tệp ( Đọc các phần tử của một tệp văn bản vào mảng một chiều)

Giải thuật giả ngôn ngữ lập trình

int doctep(char s[])

{ FILE *f=NULL;

Mở tệp;

Sinh viên thực hiện: Trần Văn Quyết Trang 4

ĐỀ TÀI THỰC TẬP CƠ SỞ

Nếu tệp không tồn tại thì báo lỗi mở tệp;

return f;

Nếu tệp đã có:

Đọc các phần tử trong tệp ra mảng 1 chiều;

Return f;

Đóng tệp;

}

Lưu đồ Thuật Toán

Đúng

Sai

Code hàm đọc tệp:

int doctep(char s[]){ f=fopen(s,"rt");

if(f==NULL) return 1;else

{ n=0;while(!(feof(f))) { check=fscanf(f,"%d",&a[n]); if(check==0)

{ fscanf(f,"%s",&k);

Sinh viên thực hiện: Trần Văn Quyết Trang 5

Bắt đầu

Mở tệp input.txt để đọc

f=NULL?

Đọc các phần tử trong

tệp ra mảng một chiều

Return fReturn f

Kết thúc

ĐỀ TÀI THỰC TẬP CƠ SỞ

printf("\n\t\tLoi: Vi tri so %d la ky tu: %s\n",n+1,k); break; }

elsen++;}

fclose(f); }}

fclose(fi);b. Hàm xem mảng gồm các số nguyên cách nhau ít nhất một dấu cách trống

hoặc ít nhất một dấu xuống dòng.

Giải thuật giả ngôn ngữ lập trình:

void inmang(int a[],int n) {

printf("\n\t\t");for (i=0;i<n;i++) // Duyệt từ phần tử thứ nhất đến phần tử thứ n { if(a[0]==NULL) // Nếu không có phần tử đầu tiên printf("\n\t\tDanh sach rong!"); // In ra danh sách rỗng else { printf("%d ",a[i]); // Ngược lại thì in danh sách của mảng if((i+1)%10==0) // In danh sách cho đến hết phần tử thứ 10

printf("\n"); // Xuống dòng } }

}Lưu đồ thuật toán:

Đúng

Sai

Đúng

Sinh viên thực hiện: Trần Văn Quyết Trang 6

Bắt đầu

i = 0

i<n

a[0]==NULL

?

Kết thúc

i++

ĐỀ TÀI THỰC TẬP CƠ SỞ

Sai

Code hàm in mảng:

void inmang(int a[],int n) {

printf("\n\t\t");for (i=0;i<n;i++) {if(a[0]==NULL) printf("\n\t\tDanh sach rong!"); else { printf("%d ",a[i]); if((i+1)%10==0)

printf("\n"); } }

}

c. Hàm in ra mảng một chiều b gồm các phần tử đại diện lấy từ mảng a.

Giải thuật giả ngôn ngữ lập trình:

void sodaidien(int a[],int n) {

int i, j;int dem=0;int b[20];printf("\n\t\t");for (i=0;i<n;i++) // Duyệt lần lượt các phần tử của mảng{

Nếu không có phần tử nào trong tệp thì in ra danh sách số đại diện rỗng Ngược lại

{ for(j=0;j<i;j++) // Gán một biến j cho chạy để duyệt hết các phần tử if(a[j]==a[i])

break; if(j==i)//Nếu có phần tử lặp thì thoát để duyệt phần tử kế tiếp

b[dem++]=a[i]; //Thực hiện lưu danh sách số đại diện vào mảng}

} for(i=0;i<dem;i++) {

printf("%d ",b[i]); //In mảng một chiều vừa tìm được }

}

Sinh viên thực hiện: Trần Văn Quyết Trang 7

ĐỀ TÀI THỰC TẬP CƠ SỞ

Lưu đồ thuật toán:

Đúng Đúng

Sai Sai

Đúng

Sai

Đúng Đúng

Sai

Code hàm in số đại diện:

void sodaidien(int a[],int n) { int i, j;

int dem=0;int b[20];printf("\n\t\t");for (i=0;i<n;i++){ if(a[0]==NULL) printf("\n\t\tDanh sach so dai dien rong!");

Sinh viên thực hiện: Trần Văn Quyết Trang 8

i = 0

i<n a[0]==NUL

L?

Kết thúc

Bắt đầu

j<ib[Dem++]=a[i], i++

Danh sach rong

j++ a[j]==a[i]

j = 0i++

ĐỀ TÀI THỰC TẬP CƠ SỞ

else {

for(j=0;j<i;j++) if(a[j]==a[i])

break; if(j==i)

b[dem++]=a[i];}

} for(i=0;i<dem;i++) {

printf("%d ",b[i]); }

}

III. CHƯƠNG TRÌNH

#include "stdafx.h"#include <stdio.h>#include <conio.h>#include <stdlib.h>int a[100];int n,i;int check;char k[20];FILE *f;int doctep(char s[]){

f=fopen(s,"rt");if(f==NULL) return 1;else

{n=0;while(!(feof(f))) { check=fscanf(f,"%d",&a[n]); if(check==0)

{ fscanf(f,"%s",&k); printf("\n\t\tLoi: Vi tri so %d la ky tu: %s\n",n+1,k); break;}

elsen++;

}fclose(f);

Sinh viên thực hiện: Trần Văn Quyết Trang 9

ĐỀ TÀI THỰC TẬP CƠ SỞ

}}void inmang(int a[],int n) {

printf("\n\t\t");for (i=0;i<n;i++) { if(a[0]==NULL) printf("\n\t\tDanh sach rong!"); else { printf("%d ",a[i]); if((i+1)%10==0)

printf("\n"); } }

}void sodaidien(int a[],int n) { int i, j;

int dem=0;int b[20];printf("\n\t\t");for (i=0;i<n;i++){ if(a[0]==NULL) printf("\n\t\tDanh sach so dai dien rong!"); else {

for(j=0;j<i;j++) if(a[j]==a[i])

break; if(j==i)

b[dem++]=a[i];}

} for(i=0;i<dem;i++) {

printf("%d ",b[i]); }

}void main(){

char c,ch,s[50];int check=2;printf("\n\t\t

*===================MENU=================*");printf("\n\t\t * 1. Doc du lieu tu tep *");

Sinh viên thực hiện: Trần Văn Quyết Trang 10

ĐỀ TÀI THỰC TẬP CƠ SỞ

printf("\n\t\t * 2. Xem cac phan tu cua tep *");printf("\n\t\t * 3. Xem cac phan tu dai dien cua day *");printf("\n\t\t * 4. Thoat *");printf("\n\t\t *===========**============**===========

*");do {

lap: printf("\n\t\tMoi chon so tuong ung tu MENU: ");fflush(stdin);c=getchar();switch(c){case '1': printf("\n\t\tNhap ten tep: ");fflush(stdin); gets(s); check=doctep(s); if(check==1) printf("\n\t\t Loi tep !! Tep khong ton tai\n\t\t=>An phim 1 de nhap

tep khac!"); else { printf("\n\t\tDu lieu tu tep da san sang!\n "); goto lap; }case '2': if(check==2) { printf("\n\t\t!!! Loi! Chua doc du lieu tep \n\t\t=>An phim 1 de doc du

lieu "); break;

}

if(check==1) break; else { inmang(a,n);break; }case '3': if(check==2) { printf("\n\t\t!!! Loi ! Chua doc du lieu tu tep\n\t\t=>An phim 1 de

doc du lieu "); break;

} if(check==1) break; else {sodaidien(a,n); break;}case '4':

Sinh viên thực hiện: Trần Văn Quyết Trang 11

ĐỀ TÀI THỰC TẬP CƠ SỞ

{ printf("\n\t\t=======Ket Thuc======\n\t\t Xin chao tam biet va

Chuc suc khoe >.<"); break;

} default: printf("\n\t\tPhim bam khong hop le, moi ban nhap lai\n\t\t Chon

phim tuong ung tu 1-> 4"); }

} while(c!='4');

getch();}

IV. DỮ LIỆU TEST VÀ KẾT QUẢ TEST TƯƠNG ỨNG

1. Hướng dẫn chạy chương trình

Để chạy chương trình ta sử dụng một số phần mềm chuyên dụng như : Dev C+

+, Visual Studio, ... Ở đây ta sử dụng Visual Studio 2010.

Và bộ dữ liệu đi kèm: Ta tạo 1 tệp input.txt là tệp đầu vào chứa các số nguyên

cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng.

Tệp input.txt được lưu ngang hàng với thư mục project.

Nếu không lưu ngang hàng mà muốn đọc tệp, ta phải chỉ đường dẫn tới tệp

input này.

Vị trí lưu của tệp input.txt

Sinh viên thực hiện: Trần Văn Quyết Trang 12

ĐỀ TÀI THỰC TẬP CƠ SỞ

Tệp input.txt

Sau khi nhấp F5 để chạy chương trình thì sẽ tạo ra một file “Câu1.exe” với

đường dẫn như hình dưới. Ta có thể kick đúp vào file này để chạy trực tiếp chương

trình.

Vị trí lưu file Câu1.exe sau khi đã chạy xong chương trình

Sau khi chạy chương trình, ta có giao diện làm việc của chương trình như sau:

Sinh viên thực hiện: Trần Văn Quyết Trang 13

ĐỀ TÀI THỰC TẬP CƠ SỞ

Trong giao diện làm việc của chương trình có một MENU bao gồm các phím

chắc năng từ 1 đến 4:

1. Đọc dữ liệu từ tệp

2. Xem các phần tử của tệp

3. Xem các phần tử đại diện của dãy

4. Thoát khỏi chương trình

2. Kiểm tra kết quả tương ứng

Với tệp nhập vào: input.txt

Khi nhấn phím 2 thì được danh sách các phần tử trong mảng a ban đầu:

Sinh viên thực hiện: Trần Văn Quyết Trang 14

ĐỀ TÀI THỰC TẬP CƠ SỞ

Nhấn tiếp phím 3 để hiện danh sách các phần tử đại diện của mảng a:

Nhấn phím 4 ta có giao diện như hình:

Cuối cùng nhấp Enter để kết thúc chương trình.

Sinh viên thực hiện: Trần Văn Quyết Trang 15

ĐỀ TÀI THỰC TẬP CƠ SỞ

3. Một số trường hợp xảy ra lỗi

Khi tệp có chứa các chữ cái, kí tự đặc biệt.

Khi tệp rỗng.

Khi tệp không tồn tại.

Sinh viên thực hiện: Trần Văn Quyết Trang 16

ĐỀ TÀI THỰC TẬP CƠ SỞ

PHẦN 2: CÂU 2

I. MÃ ĐỀ - NỘI DUNG ĐỀ

Tìm hiểu về phương pháp chia để trị và ứng dụng để viết chương trình cài đặt

thuật toán sắp xếp trộn.

II. THUẬT TOÁN GIẢI QUYẾT CÔNG VIỆC CHO MỖI HÀM

1. Ý tưởng

Bài toán ban đầu có kích thước n.

Phương pháp:

Ta chia bài toán ban đầu thành một số bài toán con đồng dạng với bài toán ban

đầu có kích thước nhỏ hơn n.

Giải các bài toán con ta tìm được các lời giải con.

Tổng hợp các lời giải con => Lời giải của bài toán ban đầu.

Chú ý:

Đối với các bài toán con, ta có thể chia chúng thành những bài toàn con nhỏ

hơn nữa.

Quá trình phân chia này sẽ dừng lại khi kích thước bài toàn đủ nhỏ mà ta có thể

giải dễ dàng => Gọi là bài toán cơ sở.

2. Phân tích

Sinh viên thực hiện: Trần Văn Quyết Trang 17

ĐỀ TÀI THỰC TẬP CƠ SỞ

3. Giải thuật

4. Ví dụ

Ví dụ Quick soft:

Sinh viên thực hiện: Trần Văn Quyết Trang 18

ĐỀ TÀI THỰC TẬP CƠ SỞ

Đề: Sắp xếp dãy n số theo thứ tự tăng dần.

Áp dụng kỹ thuật chia để trị:

- Chia dãy n số thành 2 dãy con

+ Trước khi chia phải phân hoạch

- Giải 2 bài toán con

+ Sắp xếp dãy bên trái

+ Sắp xếp dãy bên phải

- Tổng hợp kết quả

+ Không cần tổng hợp

Ví dụ:

Độ phức tạp của Quicksoft

- Xấu nhất:

+ Dãy n số đã đúng thứ tự tăng dần

+ Phân hoạch bị lệch: Phần tử chốt là phần tử nhỏ nhất => Cần n phép so sánh để biết

nó là phần tử đầu tiên.

Sinh viên thực hiện: Trần Văn Quyết Trang 19

ĐỀ TÀI THỰC TẬP CƠ SỞ

+ Độ phức tạp trong trường hợp này là : O(n2).

- Tốt nhất:

+ Phân hoạch cân bằng: Phần tử chốt là phần tử giữa dãy => C(n)=2C(n/2)+n

+ Độ phức tạp trong trường hợp này là: O(nlogn).

- Chứng minh độ phức tạp trung bình: O(nlogn).

Ví dụ Merge Soft

- Giải thuật Merge Soft

+ Sắp xếp dãy n số theo thứ tự tăng dần.

- Áp dụng kỹ thuật chia để trị:

+ Chia dãy số n thành 2 dãy số con:

* Không cần phân hoạch, cứ cắt dãy số ra làm 2.

+ Giải 2 bài toán con.

* Sắp xếp dãy bên trái => Kết quả 1

* Sắp xếp dãy bên phải => Kết quả 2

- Tổng hợp kết quả:

+ Trộn kết quả (theo thứ tự) của 2 bài toán con.

Ví dụ:

Sinh viên thực hiện: Trần Văn Quyết Trang 20

ĐỀ TÀI THỰC TẬP CƠ SỞ

Độ phức tạp của thuật toán Merge Soft

- Sắp xếp dãy n số:

+ Số lần so sánh: C(n) = 2C(n/2) + n.

+ Độ phức tạp là: O(nlogn)

+ Cần thêm n đơn vị bộ nhớ cho lưu trữ.

III. CHƯƠNG TRÌNH

Chương trình cài đặt sử dụng thuật toán sắp xếp trộn

#include "stdafx.h"#include <stdio.h>#include <conio.h>#include <time.h>

Sinh viên thực hiện: Trần Văn Quyết Trang 21

ĐỀ TÀI THỰC TẬP CƠ SỞ

#include <stdlib.h>#define MAX_INT 2147483647;

// Ham tronvoid merge(int *a, int p, int m, int q) ;

// Ham sap xepvoid mergeSort(int* a, int p, int q);

// Ham in mang ra man hinhvoid printArray(int *a, int n);int main(){

int *a, i, n;

printf("Nhap n=");scanf("%d",&n);

srand(time(0));a=(int*)malloc(n*sizeof(int));for (i=0; i<n; i++)

a[i]=rand()%1000;

if (n>200) printf("\nDo so phan tu n>100 nen chuong trinh se ko in mang ra man

hinh."); else

printf("\n\nCac phan tu ngau nhien duoc tao thanh: \n\n");printArray(a,n);

mergeSort(a,0,n-1);if (n>200) printf("\nDo so phan tu n>100 nen chuong trinh se ko in mang da sap xep ra

man hinh.");else

printf("\n\nCac phan tu ngau nhien sau khi duoc sap xep: \n\n");printArray(a,n);

getch();

Sinh viên thực hiện: Trần Văn Quyết Trang 22

ĐỀ TÀI THỰC TẬP CƠ SỞ

}

void merge(int *a, int p, int m, int q) {

int n1=m-p+2, n2=q-m+1;int i, j, k;int *left=(int*)malloc(n1*sizeof(int));int *right=(int*)malloc(n2*sizeof(int));

//Sao chep sang nua trai sang mang left, nua phai sang mang rightk=p;for (i=0; i<n1-1; i++)

left[i]=a[k++];for (j=0; j<n2-1; j++)

right[j]=a[k++];left[n1-1]=right[n2-1]=MAX_INT; // Dat linh canh

// Tron 2 mangi=j=0;for (k=p; k<=q; k++)

if (left[i]<right[j])a[k]=left[i++];

elsea[k]=right[j++];

free(left); free(right);}

void mergeSort(int* a, int p, int q){

int m=(p+q)/2;if (p<q){

mergeSort(a,p,m);// De quy sap xep mang ben trai a[p-->m]mergeSort(a,m+1,q); // De quy sap xep mang ben phai a[m+1-->n]

Sinh viên thực hiện: Trần Văn Quyết Trang 23

ĐỀ TÀI THỰC TẬP CƠ SỞ

merge(a,p,m,q); // Tron 2 mang a[p-->m] va a[m+1-->q]}

}void printArray(int *a, int n){

int i=0;while (i<n)

printf("%d ",a[i++]);printf("\n\n");

}

IV. BỘ DỮ LIỆU TEST VÀ KẾT QUẢ TƯƠNG ỨNG

Chương trình này chạy trên phần mềm Visual Studio 2010.

Nhấn F5 để chạy chương trình.

Kết quả sau khi nhấn F5:

Ta tiến hành nhập n các phân tử ngẫu nhiên được tạo ra từ hàm:

srand(time(0));a=(int*)malloc(n*sizeof(int));for (i=0; i<n; i++)

a[i]=rand()%1000;

Sinh viên thực hiện: Trần Văn Quyết Trang 24

ĐỀ TÀI THỰC TẬP CƠ SỞ

Nhập n=10 ta có được kết quả như hình:

Sau cùng là DEMO trực tiếp.

Sinh viên thực hiện: Trần Văn Quyết Trang 25