Việc chấm điểm được thực hiện một cách tự động bằng máy tính.. 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 sa
Trang 1BÀ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
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ự,
đượ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ự
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ụ:
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.
Trang 27. 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
Trang 3//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 {
Trang 4if(a[i-1][j]<a[i][j-1]) a[i][j]=a[i][j-1];
else a[i][j]=a[i-1][j];
} } return a[m][n];
}
void copy(char *s1,char *s2)
{ inti=0;
while(s2[i]!='\0')
{ s1[i]=s2[i];
i++;
s1[i]='\0';
}
} voidchuthuong(char *x)
{ inti,m;
m=mlen(x);
for (i=0;i<m;i++)
{ if(x[i]>64&& x[i]<91) x[i]=x[i]+32;
} }
void main()
{ inti,j,somau,solenh ;
Trang 5char x[21],y[101];
charmau[10][21];
charlenh[10][101];
FILE *f,*g;
f=fopen("void.in","r");
g=fopen("void.out","w");
//doc du lieu tu file voi.in
fscanf(f,"%d %d",&somau,&solenh);
for(i=0;i<somau;i++)
{ fscanf(f,"%s",&mau[i]);
} for(i=0;i<solenh;i++)
{ fscanf(f,"%s",&lenh[i]);
} // xacdinhtronglenh co chuamaunao
for(i=0;i<solenh;i++)
{ intmang[10]={0,0,0,0,0,0,0,0,0,0};
int max=0,maux=0,h;
copy(y,lenh[i]); //copy khaulenh de so sanh
chuthuong(y);
for(j=0;j<somau;j++)
{ copy(x,mau[j]); //copy lenhmau
chuthuong(x);
Trang 6// neu co mautronglenhthithuchientim so mauxuathientronglenh do
if(h==mlen(x))
{ inti,n,l,a,td,daixc;
charxau[101];
int k=1;
n=mlen(x);
td=(int) 100/n;
// taomau de so sanh while(k<=td) { for(a=0;a<n;a++) for(i=0;i<k;i++) xau[k*a+i]=x[a];
xau[k*n]='\0';
daixc=xauconchung(xau,y);
if(daixc==k*n) mang[j]=k;
else break;
k++;
} //timlenhmauxuathiennhieunhatva so lanxuathientrongkhaulenh
for (l=0;l<10;l++)
if (mang[l]>max)
{ max=mang[l];
Trang 7maux=l+1; // maux la lenhmauthui
} }
} fprintf(g,"%d %d\n",maux,max);
}
fclose(f);
fclose(g);
}