1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÀI TẬP NHÓM MÔN HỌC KỸ THUẬT LẬP TRÌNH Tạo một ADT có tên Array.h và viết một chương trình CheckArray.c để kiểm tra

14 656 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 844,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trường Đại học Bách Khoa Hà NộiViện Công nghệ thông tin và truyền thông Báo cáo kiểm thử và gỡ rối bài làm nhóm 11 Đề tài : Tạo một ADT có tên Array.h và viết một chương trình CheckArra

Trang 1

Trường Đại học Bách Khoa Hà Nội

Viện Công nghệ thông tin và truyền thông

Báo cáo kiểm thử

và gỡ rối bài làm nhóm 11

Đề tài : Tạo một ADT có tên Array.h

và viết một chương trình CheckArray.c để kiểm tra

Hà Nội, 2013

Giảng viên hướng dẫn : TS Vũ thị Hương Giang

Nhóm sinh viên thực hiện 5: Vũ Văn Bảo

Trần Trung Hiếu Nguyễn Minh Tiến Nguyễn Văn Tùng Nguyễn Hồng Vinh

Trang 2

Mục lục

Mục lục 2

I Kiểm thử 3

1 Kiểm thử void Creat (Array &a) 3

2 Kiểm thử thủ tục void PrintArray(Array a) 5

3 Kiểm thử thủ tục void BubleSort(Array &a) 5

4 Kiểm thử hàm thủ tục InsertSort(Array &a) 6

5 Kiểm thử thủ tục void InsertSort(Array &a) 6

6 Kiểm thử hàm float Max(Array a) 6

7 Kiểm thử hàm float Min(Array a) 7

8 Kiểm thử hàm void Average(Array a) 7

9 Kiểm thử thủ tục void Gap(Array a) 7

10 Kiểm thử thủ tục void Averagedeviation(Array a) 8

11 Kiểm thử hàm int Search(Array a) 8

12 Kiểm thử hàm int SearchBinary(Array a) 9

13 Kiểm thử thủ tục void Times(Array a, Array b) 11

14 Tổng kết các lỗi: 11

II Sửa lỗi, gỡ rối 11

1 Lỗi ở tìm kiếm tuần tự: 11

2 Lỗi ở tìm kiếm nhị phân: 12

3 Lỗi ở tính thời gian: 13

Tài liệu tham khảo 14

Trang 3

I Kiểm thử

1 Kiểm thử void Creat (Array &a)

a Trường hợp kiểm thử 1: nhập số phần tử của mảng là một kí tự bất kỳ, nhưng không phải là số

count = e

b Trường hợp kiểm thử 2:nhập vào số phần tử là số nhưng mà không phải là

số nguyên

count = 3.5

Lấy phần nguyên của số vừa nhập

Trang 4

c Trường hợp kiểm thử 4: Nhập vào số phần tử của mảng là một số nguyên nhưng nhập dữ liệu cho mảng có ít nhất 1 phần tử là 1 ký tự bất kỳ, không phải số

count = 7;

max = {e;2.4;6;7.23;9;12.6;*);

d Trường hợp kiểm thử 6: Nhập vào số phần tử của mảng là 1 số nguyên thuộc [1;1000] và nhập dữ liệu cho mảng là các số thực nằm trong phạm vi kích thước của kiểu float

count = 6

array = {16.66;13.32;32,123;2;5}.Yêu cầu:

Trang 5

 Chương trình chạy đúng với yêu cầu.

2 Kiểm thử thủ tục void PrintArray(Array a)

count = 6

array = {16.66;13.32;32,123;2;5}

3 Kiểm thử thủ tục void BubleSort(Array &a)

count = 6

array = {16.66;13.32;32,123;2;5}

Trang 6

{2;5;6.7; 13.32;13.32;16.66;123}.

4 Kiểm thử hàm thủ tục InsertSort(Array &a).

count = 6

array = {16.66;13.32;32,123;2;5}

mang1.max = {2;5;6.7; 13.32;13.32;16.66;123}

5 Kiểm thử thủ tục void InsertSort(Array &a).

count = 6

array = {16.66;13.32;32,123;2;5}

{2;5; 13.32;13.32;16.66;123}

6 Kiểm thử hàm float Max(Array a).

count = 6

array = {16.66;13.32;32,123;2;5}

là phần tử thứ 4

Trang 7

 Chương trình chạy đúng yêu cầu.

7 Kiểm thử hàm float Min(Array a).

count = 6

array = {16.66;13.32;32,123;2;5}

là phần tử thứ 5

8 Kiểm thử hàm void Average(Array a).

count = 6

array = {16.66;13.32;32,123;2;5}

9 Kiểm thử thủ tục void Gap(Array a).

a Không có 1 hoặc cả hai phần tử thứ i và j:

count = 6

array = {16.66;13.32;32,123;2;5}

i=10; j = 14

Trang 8

 Chương trình chạy đúng theo yêu cầu

b Có cả hai phần tử i và j:

count = 6

array = {16.66;13.32;32,123;2;5}

i = 3, j =6

10.Kiểm thử thủ tục void Averagedeviation(Array a).

count = 6

array = {16.66;13.32;32,123;2;5}

trả về giá trị độ lệch trung bình giữa các phần tử trong mảng là 108.16

11.Kiểm thử hàm int Search(Array a).

a Trường hợp thử 1: không có phần tử có giá trị là x

count = 6

array = {16.66;13.32;32,123;2;5}

x = 35.5

Trang 9

 Yêu cầu:

In ra màn hình số 0 thể hiện cho không tìm thấy phần tử này

b Trường hợp thử 2: có 1 phần tử có giá trị là x

count = 6

array = {16.66;13.32;32,123;2;5}

x = 16.66

In ra đúng vị trí của phần tử có giá trị x =16.66 là 1

c Trường hợp thử 3: có nhiều hơn 1 phần tử có giá trị là x

count = 6

array = {16.66;13.32;32,123;2;5;13.32}

x = 13.32

In ra đúng và đủ vị trí chỉ số của phần tử có giá trị là x= 13.32 là 1 và 6

12.Kiểm thử hàm int SearchBinary(Array a)

a Trường hợp thử 1: không có phần tử có giá trị là giatri

count = 6

array = {16.66;13.32;32,123;2;5;13.32}

x = 35.5

Trang 10

 Yêu cầu:

In ra màn hình 0 (k0 thấy phần tử)

b Trường hợp thử 2: có 1 phần tử có giá trị là giatri

count = 6

array = {16.66;13.32;32,123;2;5;13.32}

x = 16.66

In ra đúng vị trí chỉ số của phần tử có giá trị x =16.66 là 6 trong mảng đã sắp xếp

c Trường hợp thử 3: có nhieu hơn 1 phần tử có giá trị là giá trị

count = 6

array = {16.66;13.32;32,123;2;5;13.32}

sau khi sap xep

array = {2;5;13.32,13.32;16.66;32;123}

x = 13.32

In ra đúng và đủ vị trí chỉ số của phần tử có giá trị là x= 13.32 là 3 và 4

Trang 11

13.Kiểm thử thủ tục void Times(Array a, Array b)

Từ kết quả kiểm thử ở các hàm thủ tục trên, và xem thời gian thực hiện của từng hàm/thủ tục:

14.Tổng kết các lỗi:

trình đưa ra kết quả sai, chỉ đưa ra được 1 giá tri

o Có một phần tử thì chương trình đưa ra giá trị 0 tức là không có phần tử

o Có nhiều hơn 1 phần tử chương trình chỉ đưa ra 1 vị trí, đưa ra không đủ các vị trí của phần tử cần tìm

dữ liệu Array khiến người đọc rối mắt,

1 L i tìm ki m tu n t : ỗi ở tìm kiếm tuần tự: ở tìm kiếm tuần tự: ếm tuần tự: ần tự: ự:

Sử dụng thủ tục in ra vị trí của các phần tử nếu bằng với giá trị cần tìm Nếu không có in ra màn hình số 0.

void sequentialSearch(mang mang1,float x)

{

int i, e;

int cs[mang1.count];

e = 0;

/* tim kiem theo giai thuat sequential search*/

for (i = 0; i < mang1.count; i++){

if (mang1.max[i] == x){

cs[e] = i; /*copy cac chi so tim duoc vao mang cs[] */

e++;

} }

Trang 12

/* in ket qua */

if (e == 0) printf("\n %3d", e);

else {

printf("\n Chi so cua phan tu co gia tri %7.3f tim theo giai thuat

sequentialSearch la: ", x);

for (i = 0; i < e; i++)

printf("%3d", cs[i]); // in ra cac chi so can tim }

}

2 L i tìm ki m nh phân: ỗi ở tìm kiếm tuần tự: ở tìm kiếm tuần tự: ếm tuần tự: ị phân:

void SearchBinary(Array a)

{

float key;

printf ("\nNhap gia tri can tim theo kieu nhi phan trong mang :");

key = InPutf();

int left = 0, right, e = 0,d= 0, i,j,k=0, mid, cs1[a.count],cs2[a.count];

right = a.count - 1;

do{

mid = (left + right)/2 ;

if(key == a.array[mid])

{

e++;

cs1[e] = mid;

}

if (key < a.array [mid]) right = mid - 1 ;

else left = mid + 1 ;

}while(left <= right);

left = 1;

right = cs1[1]-1;

do{

mid = (left + right)/2 ;

if(key == a.array [mid])

{

d++;

cs2[d] = mid;

}

if (key <= a.array [mid]) right = mid - 1 ;

else left = mid + 1 ;

}while(left <= right);

if (e == 0) printf("\n khong co phan tu %7.3f tim theo giai thuat binarySearch ", key); else{

printf("\n Chi so cua phan tu co gia tri %7.3f tim theo giai thuat binarySearch trang mang da sap xep la: ", key);

if (cs1[1] == cs2[1]) printf(" %3d ", cs1[1]);

Trang 13

else{

for (i = 1; i <= d; i++){

printf(" %3d ",cs2[i]);

} for (i = 1; i <= e; i++){

printf("%3d", cs1[i]);

} }

}

}

3 L i tính th i gian: ỗi ở tìm kiếm tuần tự: ở tìm kiếm tuần tự: ời gian:

Gán thời gian kêt thúc sau mỗi chức năng thục hiện

Trang 14

Tài liệu tham khảo

[1] Slide bài giảng KTLT-Vũ Thị Hương Giang

[2] Code complete A Practical Handbook ofd Software Construction của tác giả Steve Mc Connell

Ngày đăng: 16/05/2015, 13:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w