cái ông thầy chơi ác! cho đề khó mà không cho thi trên máy bắt viết code bằng tay! vậy là em làm sai tè le luôn(về test mới thấy) ! tức quá về nhà ăn cơm không được ngồi giải đề thi => đã ra. Giờ mình post lên cho mấy u test giùm!
Code:
#include #include #include using namespace std; struct nhanvien { char manv[6]; char hoten[50]; char quequan[20]; unsigned int namsinh; unsigned int namvaolam; }; //khai bao prototype bool nhapnhanvien(nhanvien &nv,int i); void nhapdsnhanvien(int n, nhanvien ds[]); int timnhanvientheohoten (char ht[], nhanvien ds[],int n); void indanhsach(nhanvien ds[],int n); void chuanhoaten(char hoten[]); //ham main void main() { nhanvien a[100]; char ten[40]; int n; cout<<"nhap tong so nhan vien: "; cin>>n; nhapdsnhanvien(n,a); indanhsach(a,n); cout<<"nhap ten nhan vien can tim: "; cin.ignore(255,'\\n'); cin.getline(ten,40); chuanhoaten(ten); int i=timnhanvientheohoten(ten,a,n); if(i==-1) cout<<"khong tim thay nhan vien "< else cout<<"co nhan vien "<<<" trong danh sach\\n"<<<"\\t" <<<"\\t" <<<"\\t" <<<"\\t" << cout<
} //dinh nghia
bool nhapnhanvien(nhanvien &nv,int i) { //nhap sinh vien cin.ignore(255,'\\n'); cout<<"ho ten: "; cin.getline(nv.hoten,50); cout<<"Que quan: "; cin.getline(nv.quequan,20); cout<<"Nam sinh: "; cin>>nv.namsinh; cout<<"Nam vao lam: "; cin>>nv.namvaolam; //sinh ma nhan vien tu dong tang int a[5],j=4; switch(j) { case 4:a[j--]=i%10; case 3:a[j--]=(i%100)/10; case 2:a[j--]=((i%1000)/100); case 1:a[j--]=((i%10000)/1000); case 0:a[j--]=((i%100000)/10000); } for(j=0;j<5;j++) switch(a[j]) { case 0:nv.manv[j]=48;break; case 1:nv.manv[j]=49;break; case 2:nv.manv[j]=50;break; case 3:nv.manv[j]=51;break; case 4:nv.manv[j]=52;break; case 5:nv.manv[j]=53;break; case 6:nv.manv[j]=54;break; case 7:nv.manv[j]=55;break; case 8:nv.manv[j]=56;break; } nv.manv[5]='\\0'; //kiem tra nam sinh va nam bat dau di lam if (nv.namsinh<1950||nv.namsinh>2000) return 0; if (nv.namvaolam>2010) return 0; //kiem tra tuoi bat dau lam int tuoi=nv.namvaolam-nv.namsinh; if (tuoi<18||tuoi>60) return 0; //chuan hoa ten chuanhoaten(nv.hoten); chuanhoaten(nv.quequan); return 1; } void nhapdsnhanvien(int n, nhanvien ds[]) { nhanvien tmp; int i=0; do { cout<<"nhap nhan vien thu "<< if(nhapnhanvien(tmp,i+1)) ds[i++]=tmp; } while(i } int timnhanvientheohoten (char ht[], nhanvien ds[],int n) { for(int i=0;i if(strcmp(ht,ds[i].hoten)==0) return i; return -1; } void indanhsach(nhanvien ds[],int n) { for (int i=1;i<=78;i++) cout<<"_"; cout< cout<<"| Ma NV |"<<" Ho Ten |"<<" Nam Sinh |"<<" Que Quan |"<<" Nam vao lam |\\n"; for (i=1;i<=78;i++) cout<<"_"; cout< for (i=0;i { cout<<"|"<<<<"|" <<<<"|" <<<<"|" <<<<"|" <<<<"|\\n"; }
huhu không chịu đâu! ước gì được thêm cỡ 10 phút thì đâu có sai như vậy huhu!
Tue Jun 01, 2010 10:26 pm
Tổng điều hành
Admin
Giới tính :
Đến từ : Bình Phước
Join : 29/10/2009
Bài gửi : 581
HUMOR : Du Lịch - Hoạt Động Tập thể - Vọc Phần Mềm
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Báo cáo chị Yến Xào là phần khai báo thư viện của chị ngộ mất rồi kìa! sửa lại đi
Tue Jun 01, 2010 10:55 pm
Thành Viên Thường Trực
congtu_ngaitu91
Giới tính :
Đến từ : ngãi tứ
Join : 12/12/2009
Bài gửi : 68
HUMOR : mọi thứ
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
post len lam j nua~ t thi lai rui` .chan' nhu con gian'
Tue Jun 01, 2010 11:11 pm
Thành Viên Xây Dựng
kim_o
Giới tính :
Đến từ : An Giang
Join : 12/11/2009
Bài gửi : 148
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Hay lắm Yến...Có như vậy mới làm được một IT chuyên nghiệp,... hâm mộ pà quá, môn này tui ráng thi cho qua. chứ cũng không quá đạt nặng như vậy. Cố lên!! Congratulation!!!
Wed Jun 02, 2010 7:52 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Code:
#include <iostream> #include<cstring> #include <iomanip> using namespace std; struct nhanvien { char manv[6]; char hoten[50]; char quequan[20]; unsigned int namsinh; unsigned int namvaolam; }; //khai bao prototype bool nhapnhanvien(nhanvien &nv,int i); void nhapdsnhanvien(int n, nhanvien ds[]); int timnhanvientheohoten (char ht[], nhanvien ds[],int n); void indanhsach(nhanvien ds[],int n); void chuanhoaten(char hoten[]); //ham main void main() { nhanvien a[100]; char ten[40]; int n; cout<<"nhap tong so nhan vien: "; cin>>n; nhapdsnhanvien(n,a); indanhsach(a,n); cout<<"nhap ten nhan vien can tim: "; cin.ignore(255,'\n'); cin.getline(ten,40); chuanhoaten(ten); int i=timnhanvientheohoten(ten,a,n); if(i==-1) cout<<"khong tim thay nhan vien "<<ten; else cout<<"co nhan vien "<<ten<<" trong danh sach\n"<<a[i].manv<<"\t" <<a[i].hoten<<"\t" <<a[i].namsinh<<"\t" <<a[i].quequan<<"\t" <<a[i].namvaolam<<endl; cout<<endl;
} //dinh nghia
bool nhapnhanvien(nhanvien &nv,int i) { //nhap sinh vien cin.ignore(255,'\n'); cout<<"ho ten: "; cin.getline(nv.hoten,50); cout<<"Que quan: "; cin.getline(nv.quequan,20); cout<<"Nam sinh: "; cin>>nv.namsinh; cout<<"Nam vao lam: "; cin>>nv.namvaolam; //sinh ma nhan vien tu dong tang int a[5],j=4; switch(j) { case 4:a[j--]=i%10; case 3:a[j--]=(i%100)/10; case 2:a[j--]=((i%1000)/100); case 1:a[j--]=((i%10000)/1000); case 0:a[j--]=((i%100000)/10000); } for(j=0;j<5;j++) switch(a[j]) { case 0:nv.manv[j]=48;break; case 1:nv.manv[j]=49;break; case 2:nv.manv[j]=50;break; case 3:nv.manv[j]=51;break; case 4:nv.manv[j]=52;break; case 5:nv.manv[j]=53;break; case 6:nv.manv[j]=54;break; case 7:nv.manv[j]=55;break; case 8:nv.manv[j]=56;break; } nv.manv[5]='\0'; //kiem tra nam sinh va nam bat dau di lam if (nv.namsinh<1950||nv.namsinh>2000) return 0; if (nv.namvaolam>2010) return 0; //kiem tra tuoi bat dau lam int tuoi=nv.namvaolam-nv.namsinh; if (tuoi<18||tuoi>60) return 0; //chuan hoa ten chuanhoaten(nv.hoten); chuanhoaten(nv.quequan); return 1; } void nhapdsnhanvien(int n, nhanvien ds[]) { nhanvien tmp; int i=0; do { cout<<"nhap nhan vien thu "<<i+1<<endl; if(nhapnhanvien(tmp,i+1)) ds[i++]=tmp; } while(i<n); } int timnhanvientheohoten (char ht[], nhanvien ds[],int n) { for(int i=0;i<n;i++) if(strcmp(ht,ds[i].hoten)==0) return i; return -1; } void indanhsach(nhanvien ds[],int n) { for (int i=1;i<=78;i++) cout<<"_"; cout<<endl; cout<<"| Ma NV |"<<" Ho Ten |"<<" Nam Sinh |"<<" Que Quan |"<<" Nam vao lam |\n"; for (i=1;i<=78;i++) cout<<"_"; cout<<endl; for (i=0;i<n;i++) { cout<<"|"<<setw(7)<<ds[i].manv<<"|" <<setw(20)<<ds[i].hoten<<"|" <<setw(13)<<ds[i].namsinh<<"|" <<setw(17)<<ds[i].quequan<<"|" <<setw(15)<<ds[i].namvaolam<<"|\n"; }
post len lam j nua~ t thi lai rui` .chan' nhu con gian'
yến post lên phòng hờ có thi lại thì onl kiếm code mà học chứ kì trước thi xoá mất code luôn:( làm lại thấy bà cố tổ. lúc thi yến cũng làm sai từa lưa hột dưa luôn mà! @ Phạm Nông: chị đã sửa lại code òi. do copy và past nó ăn luôn của chị mấy string nên code trước đọc hiểu chết liền. do lỗi copy ấy mà. @kim_o: không phải yến giỏi đâu tại thi hk đc nên ấm ước làm cho ra ấy mà! hichic! một phần chắc cũng do khi viết xong một chương trình gì đó mà chạy là trong lòng thấy zui zui sao sao á! cho dù đó là một chương trình con nít cũng biết viết! cứ ra bảng f5 đen thui kia là zui òi @all: mấy u thấy code mình sai nhớ chỉ giáo mình nhá! hichic!
Wed Jun 02, 2010 8:42 pm
IT Pro
superkid
Giới tính :
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
tao phục mày wa' xào...cỡ tao chắc thi xong là hết.ko thích code lắm,
Wed Jun 02, 2010 9:25 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
for(j=0;j<5;j++) switch(a[j]) { case 0:nv.manv[j]=48;break; case 1:nv.manv[j]=49;break; case 2:nv.manv[j]=50;break; case 3:nv.manv[j]=51;break; case 4:nv.manv[j]=52;break; case 5:nv.manv[j]=53;break; case 6:nv.manv[j]=54;break; case 7:nv.manv[j]=55;break; case 8:nv.manv[j]=56;break; }
khúc này làm j vậy Yến
Wed Jun 02, 2010 9:41 pm
IT Pro
qphuong07
Giới tính :
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
haiz bó tay với nhỏ Yến luôn viết code mình test chạy đúng mà ko bít sao đúng!!! thắc mắt chỗ giống như regulus áh!!!khó hỉu quá!!!
Wed Jun 02, 2010 11:12 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
nhìn hơn giống mã ACSI của các số mà sao hem có 0 2 4 6 8
Theo mình thì bài này tách ra từng số của i rùi xài chèn vào xâu bằng cách ép kiểu (char) (i+48)
Fri Jun 04, 2010 7:27 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
à khúc đó là chuyển từ kiểu int ra kiểu char đó! khi a[i]=0 thì nó sẽ chuyển thành 48. xuất ra màn hình thì vẫn là số 0. vì số 0 trong bảng mã ascii là 48 mừ. mấy cái case khúc sau tương tự thui à!. Theo bạn Hải góp ý hồi sáng thì mình có thể rút gọn code bằng cách ép kiểu. đỡ tốn công viết cái switch khúc sau mấy bạn thắc mắc nhưng cái switch lúc đầu thì char(...)+48. ... có nghĩa là copy khúc trước vô! chưa test trên vs6 hihi. để ý thử òi post sau nhé mấy bạn thông củm. còn bạn hải hỏi hk có mấy số 0,2,4,6,8 mình hk hiểu câu hỏi lém! all: thanks đã góp ý! khakha
Fri Jun 04, 2010 8:01 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Code:
switch(j) { case 4:a[j--]=i%10; case 3:a[j--]=(i%100)/10; case 2:a[j--]=((i%1000)/100); case 1:a[j--]=((i%10000)/1000); case 0:a[j--]=((i%100000)/10000); } for(j=0;j<5;j++) nv.manv[j]=(char)(a[j]+48);
Trích dẫn :
switch(j) { case 4:nv.manv[j--]=(char)i%10+48; case 3:nv.manv[j--]=(char)(i%100)/10+48; case 2:nv.manv[j--]=(char)(i%1000)/100+48; case 1:nv.manv[j--]=(char)(i%10000)/1000+48; case 0:nv.manv[j--]=(char)(i%100000)/10000+48;
}
Fri Jun 04, 2010 8:03 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
đây là 2 cách cho code gọn hơn. các bạn test thử. c1 bỏ switch thứ 2 thay thế bằng vòng lặp for c2 bỏ hết 2 switch thay thế bằng switch trên là ok mời các bạn test thử và tiếp tục đóng góp ý kiến cho code càng gọn càng tốt để mà đem phao vô phòng thi. haha cái code bạn hải hỏi thiếu một dòg òi mấy bạn hk phát hiện ra hihi! mình hk thể nào mà sửa đc nên post đây đỡ zị
Code:
case 9:nv.manv[j]=57;break;
Sat Jun 05, 2010 12:03 am
Người Nhà
blackrose4s
Giới tính :
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Yến vừa xinh đẹp lại học giỏi . Biết bao giờ mình mới được như Yến đây ????
Sat Jun 05, 2010 8:30 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
sau một hồi đọc lại code mình thấy code dài và khó nhớ. với lại học thuộc cũng khó. mình mới rút 2 switch kia thành một vòng lặp for cho mã tự tăng. bài này là mã tự tăng ngắn nhất trong những code mình viết. mong các bạn góp ý tiếp cho code ngày càng ngắn! và nhờ các bạn test code giùm luôn có trục trặc gì nhớ rú mình nha. có sai nhờ các bạn sửa giùm luôn thể! hihi
Code:
#include <cmath> #include <iostream> #include<cstring> #include <iomanip> using namespace std; struct nhanvien { char manv[6]; char hoten[50]; char quequan[20]; unsigned int namsinh; unsigned int namvaolam; }; //khai bao prototype bool nhapnhanvien(nhanvien &nv,int i); void nhapdsnhanvien(int n, nhanvien ds[]); int timnhanvientheohoten (char ht[], nhanvien ds[],int n); void indanhsach(nhanvien ds[],int n); void chuanhoaten(char hoten[]); //ham main void main() { nhanvien a[100]; char ten[40]; int n; cout<<"nhap tong so nhan vien: "; cin>>n; nhapdsnhanvien(n,a); indanhsach(a,n); cout<<"nhap ten nhan vien can tim: "; cin.ignore(255,'\n'); cin.getline(ten,40); chuanhoaten(ten); int i=timnhanvientheohoten(ten,a,n); if(i==-1) cout<<"khong tim thay nhan vien "<<ten; else cout<<"co nhan vien "<<ten<<" trong danh sach\n"<<a[i].manv<<"\t" <<a[i].hoten<<"\t" <<a[i].namsinh<<"\t" <<a[i].quequan<<"\t" <<a[i].namvaolam<<endl; cout<<endl;
} //dinh nghia
bool nhapnhanvien(nhanvien &nv,int i) { //nhap sinh vien cin.ignore(255,'\n'); cout<<"ho ten: "; cin.getline(nv.hoten,50); cout<<"Que quan: "; cin.getline(nv.quequan,20); cout<<"Nam sinh: "; cin>>nv.namsinh; cout<<"Nam vao lam: "; cin>>nv.namvaolam; //sinh ma nhan vien tu dong tang for(int j=0;j<5;j++) nv.manv[j]=(char)i%(int)pow(10,5-j)/pow(10,4-j)+48;
nv.manv[5]='\0'; //kiem tra nam sinh va nam bat dau di lam if (nv.namsinh<1950||nv.namsinh>2000) return 0; if (nv.namvaolam>2010) return 0; //kiem tra tuoi bat dau lam int tuoi=nv.namvaolam-nv.namsinh; if (tuoi<18||tuoi>60) return 0; //chuan hoa ten chuanhoaten(nv.hoten); chuanhoaten(nv.quequan); return 1; } void nhapdsnhanvien(int n, nhanvien ds[]) { nhanvien tmp; int i=0; do { cout<<"nhap nhan vien thu "<<i+1<<endl; if(nhapnhanvien(tmp,i+1)) ds[i++]=tmp; } while(i<n); } int timnhanvientheohoten (char ht[], nhanvien ds[],int n) { for(int i=0;i<n;i++) if(strcmp(ht,ds[i].hoten)==0) return i; return -1; } void indanhsach(nhanvien ds[],int n) { for (int i=1;i<=78;i++) cout<<"_"; cout<<endl; cout<<"| Ma NV |"<<" Ho Ten |"<<" Nam Sinh |"<<" Que Quan |"<<" Nam vao lam |\n"; for (i=1;i<=78;i++) cout<<"_"; cout<<endl; for (i=0;i<n;i++) { cout<<"|"<<setw(7)<<ds[i].manv<<"|" <<setw(20)<<ds[i].hoten<<"|" <<setw(13)<<ds[i].namsinh<<"|" <<setw(17)<<ds[i].quequan<<"|" <<setw(15)<<ds[i].namvaolam<<"|\n"; }
bạn nào thi lại c++ thì task này có thể tham khảo. chúc các bạn thành công. vì bị sốt rồi nên hk lên send được nữa. xin lỗi nhé. không thì qua blogplus mình lấy link mediafire mà down về một lần nữa chúc các bạn thành công quánh dấu kí tên Cout Yan
Sat Aug 14, 2010 10:30 pm
Ma Mới
nhocbap1514
Giới tính :
Đến từ : DakNong
Join : 14/11/2009
Bài gửi : 12
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Thấy các em code giỏi vậy sao làm bài thấp vậy
Giấu nghề hả
Sun Aug 15, 2010 8:53 am
Người Nhà
Yuki
Giới tính :
Đến từ : An Giang
Join : 19/11/2009
Bài gửi : 295
HUMOR : nge nhạc,doc truyen,choi game va....judo :P
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
có nghề đâu mà giấu a
Sun Aug 15, 2010 7:22 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
hk phải đâu anh. làm bài thi code trên giấy hk có phím f7 anh ơi. mà điểm cuối kì em nghi thầy chấm điểm lộn nữa mà hihi. chứ hk phải dấu nghề đâu. mà đầu óc em bả nho thân bả đậu sao mà dấu được. phải học hỏi mấy anh nhiều lắm hihi
Sun Aug 15, 2010 7:27 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
à quên dặn mấy bác nữa. mấy bác thi lại lấy code cuối cùng cho nó ngắn học thuộc cho nó dễ nha mấy bác. chúc các bác thi thành công. thi xong điểm cao nhớ kao mình chầu kem nha.
Mon Aug 16, 2010 1:57 am
Người Nhà
blackrose4s
Giới tính :
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng
Thú cưng .:
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Bài của Yến sao tui copy dô Cltr + F5 nó không chạy mờ báo 20 error(s), 1 warning(s)
Hu hu ngày mai là thi lại rồi ! Chắc tui cắn lưỡi quá ! Chép hết bài của Yến dô liệu có được không ?
Mon Aug 16, 2010 8:05 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++
Trích dẫn :
Bài của Yến sao tui copy dô Cltr + F5 nó không chạy mờ báo 20 error(s), 1 warning(s)
bạn cho hỏi bạn dùng chương trình gì để build vậy? mình dùng vs6 có lẽ bạn dùng vs2005 nó chắc nó bị error chỗ đó hay là bạn chép thiếu cái j đó vào để build. bạn vô blog mình lấy link tải về test lại thử xem. nếu có error hay waining bạn hãy ghi lại và post lên mình giải đáp cho nếu mình biết
Trích dẫn :
Hu hu ngày mai là thi lại rồi ! Chắc tui cắn lưỡi quá ! Chép hết bài của Yến dô liệu có được không ?
nếu thầy cho i trang đề thì bạn cứ việc chép hk vấn đề j cả còn hk giống bạn chép thì mình chỉ bó tay .com