TH. CTDL & GT Ths.Văn Th Thiên Tran
g
Pa
g
e 1
Bài thc hành 1: TÌM KIM
------YZ------
Ni dung
1. Ôn li cách viết mt chương trình C dng hàm
2. Nm vng cu trúc d liu mng 1 chiu
3. Nm vng gii thut tìm kiếm
a. Tìm kiếm tuyến tính
b. Tìm kiếm nh phân
Bàitp
Bài 1. Viết chương trình thc hin:
Sinh mng ngu nhiên gm N s nguyên (N>0), mi phn t có giá tr (-100, 100)
Xut mng ra màn hình
Tìm phn t có giá tr X trong mng, nếu có cho biết v trí xut hin ca X trong
mng (Làm theo 2 cách tìm kiếm tuyến tính và tìm kiếm nh phân).
Bài 2. Viết chương trình qun lý thư vin, thông tin mi cun sách gm: mã sách (int),tên
sách(char[40]), giá (float).
Nhp danh sách gm N cun sách
Xut danh sách các cun sách ra màn hình
Tìm cun sách có mã là X (Làm theo 2 cách: tìm tuyến tính và tìm nh phân)
Tìm cun sách có tên là X (Làm theo 2 cách: tìm tuyến tính và tìm nh phân)
Tìm cun sách có giá cao nht (nếu có nhiu sách có giá cao nht trùng nhau thì xut
hết ra màn hình).
Hướngdn
Bài 1.
Nhc li, cu trúc chung ca mt chương trình C:
//Khai báo thư vin
#include<stdio.h>
//Khai báo hng nếu có
#define Tên_hng Giá_tr
//---------------------------------------------------------------
//Khai báo các mu hàm dùng trong chương trình
Kiu_d_liu_tr_v Tên_hàm(khai báo các tham s đầu vào);
//---------------------------------------------------------------
//Hàm chính
void main()
{
TH. CTDL & GT Ths.Văn Th Thiên Tran
g
Pa
g
e 2
clrscr(); //xóa màn hình
//khai báo các biến cn dùng
//cài đặt chương trình theo menu chc năng
//dùng mt biến nguyên để lưu công vic mà người dùng chn
int chon;
do{
clrscr();
//nhp chn la ca người dùng
printf(“1: Sinh mang\n”);
printf(“2: Xuat mang\n”);
printf(“3: Tim X theo Phuong phap tim tuyen tinh\n”);
printf(“4: Tim X theo Phuong phap tim nhi phan\n”);
printf(“0: Thoat\n”);
printf(“Hay chon cong viec:”); scanf(“%d”, &chon);
//thc hin công vic cho la chn tương ng
switch (chon){
case 1: //Gi hàm Sinh mng
break;
case 2: //Gi hàm xut mng
break;
case 3:
//Nhp s nguyên X cn tìm
//Gi hàm tìm tuyến tính
break;
case 4:
//Nhp s nguyên X cn tìm
//Gi hàm tìm nh phân
default:
chon=0;
break;
}
getch();
}while (chon!=0);
}
//---------------------------------------------------------------
//Cài đặt chi tiết các hàm con
Kiu_d_liu_tr_v Tên_hàm(khai báo các tham s đầu vào)
{
//Cài đặt chi tiết
}
TH. CTDL & GT Ths.Văn Th Thiên Tran
g
Pa
g
e 3
Da vào cu trúc trên hãy cài đặt chương trình đầy d cho bài 1, trong đó:
Hàm sinh mng:
+ Bước 1: Nhp s phn t ca mng sao cho N>0, nếu nhp sai thì bt buc phi
nhp li
+ Bước 2: Sinh ngu nhiên giá tr cho tng phn t a[i] trong mng sao cho a[i](-
100, 100)
VD: a[i]=random(100); // a[i] nhn giá tr ngu nhiên [0, 100)
a[i]=random(200)-100; //a[i] nhn giá tr ngu nhiên (-100, 100)
Hàm xut mng
Hàm tìm phn t X (tìm tuyến tính)
+ Nếu tìm thy X trong mng, hàm tr v v trí tìm thy
Nếu không tìm thy, hàm tr v -1
+ Mu hàm:
int TimX_TuyenTinh(int a[], int n, int X);
Hàm tìm phn t X (tìm nh phân)
+ Nếu tìm thy X trong mng, hàm tr v v trí tìm thy
Nếu không tìm thy, hàm tr v -1
+ Mu hàm:
int TimX_NhiPhan(int a[], int n, int X);
Bài 2.
Khai báo cu trúc sách
Hàm nhp 1 cun sách: nhp thông tin cho 1 cun sách
Hàm xut 1 cun sách: xut thông tin ca 1 cun sách
Hàm nhp danh sách các cun sách: dùng 1 mng mt chiu để lưu danh các cun
sách, mi phn t trong mng là 1 cun sách
+ Bước 1: Nhp s lượng cun sách (Nhp n)
typedef struct Tên_cu_trúc
{
//khai báo các biến thành phn ca cu trúc
}Tên_cu_trúc_viết_gn;
VD:
Typedef struct CuonSach
{
int masach;
char tensach[40];
float gia;
}SV;
TH. CTDL & GT Ths.Văn Th Thiên Tran
g
Pa
g
e 4
+ Bước 2: Nhp thông tin cho tng cun sách (Nhp a[i], i=0, 1, ..n-1) bng
cách gi hàm nhp 1 cun sách cho phn t a[i]
Hàm xut danh sách các cun sách: Xut thông tin tng cun sách a[i], i=0..n-1
bng cách gi hàm xut 1 cun sách
Hàm tìm cun sách mã là X: Làm theo hai cách tìm tuyến tính và nh phân
Hàm tìm cun sách có tên là X: Làm theo hai cách tìm tuyến tính và nh phân
+ Lưu ý: tên sách là kiu chui, do đó khi so sánh tên sách phi dùng hàm
strcmp(). VD: Hàm strcmp(s1, s2): Hàm tr v 0 nếu chui s1== chui s2, tr
v giá tr <0 nếu s1<s2 và >0 nếu s1>s2.
Hàm tìm cun sách giá ln nht: (đã hướng dn trên lp ^^!)