
BÀI TẬP DÀI KỸ THUẬT LẬP TRÌNH K55
Alex đangthamgiamộtdựánđiềukhiểnRobot bằnggiọngnói. Robot đượcđiềukhiểnthông qua cáckhẩulệnhcủa
Alex.Mộttậplệnhmẫusẽđượcdạytrướccho Robot.Khẩulệnhcủa Alex đượcthuvàomáytínhthông qua một
Microphone rồitruyềnxuốngchocáccơcấuchấphànhcủaRobot. Tuynhiên, do chấtlượngcủa Microphone
cũngnhưảnhhưởngcủamôitrườngxungquanh, lệnhthuđượccóchứarấtnhiềunhiễu.Nhiệmvụcủa Alex
làphảiviếtchươngtrìnhxửlýlệnhthuđượcxemnókhớpnhấtvớilệnhnàotrongtậplệnh.
Tậplệnhmẫudạytrướccho Robot đượclưuthànhcácchuỗicóđộdàikhôngquá 20 kýtự,
khôngphânbiệthoathường.Khẩulệnhthuđượctừ Microphone
đượclưuvàomáytínhdướidạngcácchuỗicóđộdàikhôngquá 100 kýtự, khôngphânbiệthoathường. Mộtlệnh X
đượcgọilàkhớpvớilệnh Y trongtậplệnhmẫunếucáckýtựcủachuỗi Y xuấthiệntheođúngthứtựtrongchuỗi X
(khôngnhấtthiếtliềnnhau). Lệnh X đượcgọilàkhớpvớilệnh Y1 hơnlệnh Y2nếusốlầnxuấthiệncủachuỗi Y1
nhiềuhơn so vớisốlầnxuấthiệncủachuỗi Y2 trongchuỗi X.
Cáclệnhcũngnhưtậplệnhđượclưutrữtrongmáytínhdướidạng file vănbản: VOICE.INcócấutrúc:
- Dòngđầutiênchứa 2 sốnguyên m, n (m ≤ 10; n ≤ 10)
- mdòngtiếptheochứacácchuỗitrongtậplệnhmẫu. Mỗilệnhtrên 1 dòngvàcókhôngquá 20 kýtự
- ndòngtiếptheochứacácchuỗitrongtậpkhẩulệnhcủa Alex. Mỗilệnhtrên 1 dòngvàcókhôngquá 100 kýtự
Kếtquảxửlýghira file vănbảnVOICE.OUTgồm n dòng.
Mỗidòngghi02sốnguyênbiểuthịsốthứtựcủalệnhmẫutrongtậplệnhkhớpvớilệnhtươngứngcủa Alex
vàsốlầnlặplạicủalệnhmẫuđó.Nếukhôngcólệnhmẫunàokhớpghi 0.Cácsốghicáchnhaubởidấucách.
Vídụ:
VOICE.IN VOICE.OUT
4 3
UP
DOWN
LEFT
RIGHT
UUUPPPPPPPUP
TURN
UDdOOPpPWNwNwnWn
1 3
0 0
2 2
ĐÁNH GIÁ VÀ CHO ĐIỂM
1. Việc chấm điểm được thực hiện một cách tự động bằng máy tính.
2. Có tất cả 10 Tests với mức độ từ dễ đến khó.
3. Mỗi Test chạy đúng (in đúng cả thứ tự của lệnh và số lần xuất hiện lệnh) sẽ được 10 điểm. Nếu chỉ in
đúng số thứ tự mà in sai số lần xuất hiện của lệnh sẽ được 5 điểm. Tráilại, được0 điểm.
4. Điểm của bài tập dài sẽ là tổng điểm thu được sau khi chạy 10 Tests.
5. Điểm thu được sau khi chia 10 và làm tròn sẽ được tính làm điểm quá trình
6. Mỗi người hoàn thành và nộp bài tập của mình một cách độc lập.
7. Mỗi sinh viên nộp bài tập của mình trong một thư mục có định dạng: Họ và tên sinh viên – Mã số sinh
viên. Ví dụ: Sinh viên Nguyễn Văn A có mã số sinh viên là 12345 thì tất cả các file của mỗi bài tập sẽ
lưu vào trong thư mục NguyenVanA-12345.
8. Sinh viên chỉ nộp các file .c và .h cần thiết. KHÔNG nộp cả thư mục Project.
9. Cả lớp copy vào 1 đĩa CD, ghi ngoài nhãn là: lớp “KTLT-K55-1”
10. Đĩa “KTLT-K55-1” nộp vào tuần 14 của học kỳ
11. Điểm giữa kỳ sẽ được công bố vào tuần 16 của học kỳ
12. Mỗi bài tập chỉ thu đúng 01 lần vào buổi học sáng thứ 6 của tuần 14. Không cho phép nộp bổ sung.

13. Sinh viên thiếu bài trong đĩa “KTLT-K55-1” sẽ được 0 điểm quá trình.
14. Các bài giống nhau sẽ được chia đều số điểm theo số lượng giống tương ứng

//NguyễnVănNhân
//MSSV:20101962
//Lớp ĐK-TĐH-1 K55
//Bàitậpdàikĩthuậtlậptrình
#include<stdio.h>
#include"mystring.h"
intmlen( char *str)
{
inti=0;
while(str[i]!='\0') i++;
returni;
}
intxauconchung(char *x,char *y)
{
inti,j,m,n;
int a[101][101];
m=mlen(x);
n=mlen(y);
for(i=0;i<m+1;i++)
a[i][0]=0;
for(i=0;i<n+1;i++)
a[0][i]=0;
for(i=1;i<m+1;i++)
for(j=1;j<n+1;j++)
{
if (x[i-1]==y[j-1]) a[i][j]=a[i-1][j-1]+1;
else {
if(a[i-1][j]<a[i][j-1]) a[i][j]=a[i][j-1];
else a[i][j]=a[i-1][j];