Bài tập dài Kĩ thuật lập trình docx

7 564 0
Bài tập dài Kĩ thuật lập trình docx

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

Thông tin tài liệu

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]; } } 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 ; char 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); h=xauconchung(x,y); // 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]; maux=l+1; // maux la lenhmauthui } } } fprintf(g,"%d %d\n",maux,max); } fclose(f); fclose(g); } . 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. 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(

Ngày đăng: 20/03/2014, 17:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan