Tiêu đề: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Code:
#include <iostream.h> using namespace std; #include <conio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> struct SinhVien { char MaSV[11]; char HoTen[50]; char QueQuan[20]; unsigned int NamSinh; float Diem; char XepLoai[30]; } SV[100], t[1]; bool Nhap1SinhVien(int n) { cout<<"Nhap ma sinh vien "<<(n+1)<<endl; cin.get(SV[n].MaSV,11); cin.get(); cout<<"Nhap ho ten sinh vien "<<(n+1)<<endl; cin.getline(SV[n].HoTen,50); // Xoa ki tu trang cuoi chuoi while (*(SV[n].HoTen+strlen(SV[n].HoTen)-1)==32) *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0'; // 2 ki tu trang lien tiep xoa bot mot cai int i=0; while (*(SV[n].HoTen+i)) if (*(SV[n].HoTen+i)==32&&*(SV[n].HoTen+i+1)==32) strcpy(SV[n].HoTen+i,SV[n].HoTen+i+1); else i++; if (SV[n].HoTen[0]==' ') for (int i=0;SV[n].HoTen[i]!='\0';i++) SV[n].HoTen[i]=SV[n].HoTen[i+1]; // Viet hoa ki tu dau dong SV[n].HoTen[0]=toupper(SV[n].HoTen[0]); cout<<"Nhap que quan ( ten tinh/thanh pho) sinh vien "<<(n+1)<<endl; cin.getline(SV[n].QueQuan,20); // Xoa ki tu trang cuoi chuoi while (*(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)==32) *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0'; // 2 ki tu trang lien tiep xoa bot mot cai int j=0; while (*(SV[n].QueQuan+j)) if (*(SV[n].QueQuan+j)==32&&*(SV[n].QueQuan+j+1)==32) strcpy(SV[n].QueQuan+j,SV[n].QueQuan+j+1); else j++; if (SV[n].QueQuan[0]==' ') for (int j=0;SV[n].QueQuan[j]!='\0';j++) SV[n].QueQuan[j]=SV[n].QueQuan[j+1]; // Viet hoa ki tu dau dong SV[n].QueQuan[0]=toupper(SV[n].QueQuan[0]); cout<<"Nhap nam sinh sinh vien "<<(n+1)<<endl; cin>>SV[n].NamSinh; cout<<"Nhap diem tot nghiep sinh vien "<<(n+1)<<endl; cin>>SV[n].Diem; if (SV[n].Diem >= 9) strcpy(SV[n].XepLoai,"Xuat Xac"); if ((SV[n].Diem >= 8)&&(SV[n].Diem < 9)) strcpy(SV[n].XepLoai,"Gioi"); if ((SV[n].Diem >= 7)&&(SV[n].Diem < 8)) strcpy(SV[n].XepLoai,"Kha"); if ((SV[n].Diem >= 6)&&(SV[n].Diem < 7)) strcpy(SV[n].XepLoai,"Trung Binh Kha"); if ((SV[n].Diem >= 5)&&(SV[n].Diem < 6)) strcpy(SV[n].XepLoai,"Trung Binh"); if ((SV[n].NamSinh>=1950)&&(SV[n].NamSinh<=2000)&&(SV[n].Diem<=10.0)&&(SV[n].Diem>=5.0)) return 1; else return 0; } void NhapDSSinhVien(int N,bool A[]) { for (int k=0;k<N;k++) { do { cout<<"NHAP THONG TIN SINH VIEN THU "<<(k+1)<<endl; A[k]=Nhap1SinhVien(k); cin.get(); } while (A[k]== 0); }
} void TimSinhVienTheoHoTen(int N,char T[50]) { int dem=0; for(int k=0;k<N;k++) if (strcmp(T,SV[k].HoTen)==0) { cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl; cout<<"Ho va ten: "<<SV[k].HoTen<<endl; cout<<"Que Quan: "<<SV[k].QueQuan<<endl; cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl; cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl; cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl; dem+=1; } if (dem==0) cout<<"Khong tim duoc sinh vien nao \n"; } void SapXepTheoDiem(int N) { int j,i=0; for(int i;i<N;i++) for(int j=i+1;j<N+1;j++) if (SV[i].Diem < SV[j].Diem) { t[0] = SV[i]; SV[i] = SV[j]; SV[j] = t[0]; } for(int i;i<N;i++) for(int j=i+1;j<N+1;j++) if ((SV[i].Diem == SV[j].Diem)&&(atol(SV[i].MaSV) > atol(SV[j].MaSV))) { t[0] = SV[i]; SV[i] = SV[j]; SV[j] = t[0]; } } void InDanhSach(int N) { for(int k=0;k<N;k++) { cout<<"THONG TIN SINH VIEN THU "<<(k+1)<<endl; cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl; cout<<"Ho va ten: "<<SV[k].HoTen<<endl; cout<<"Que Quan: "<<SV[k].QueQuan<<endl; cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl; cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl; cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl; } } int main() { bool A[100]; int N; char T[50]; cout<<"Nhap so luong sinh vien N \n"; cin>>N; cin.get(); NhapDSSinhVien(N,A); cout<<"Nhap ho ten hoc sinh can tim \n"; cin.getline(T,50); TimSinhVienTheoHoTen(N,T); SapXepTheoDiem(N); InDanhSach(N); getch(); return 0; }
Bài giải này chưa hoàn thiện ở những điểm sau:
- Khi nhập Họ tên sinh viên và Quê quán: không xử lí được nếu nhập khoảng cách ở đầu chuỗi. - Chưa giải quyết được đoạn sắp xếp sinh viên theo mã số SV khi 2 sinh viên có cùng điểm tốt nghiệp. - Trình bày chưa đẹp.
Những lỗi này mình sẽ sớm khắc phục trong thời gian tới, hiện giờ các bạn xem đỡ nhé !
Thu May 20, 2010 10:00 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
sau khi kiểm tra lại thì thấy lỗi ngữ nghĩa tùm lum hết. blackrose coi lại nhé.chứ tui thấy nó bị lỗi khá nặng đó
Thu May 20, 2010 3:31 pm
Ma Mới
nguoitanoi061290
Giới tính :
Đến từ : Đà Lạt
Join : 02/12/2009
Bài gửi : 11
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
bai giai gi kho hiu wa vay phu.bua nao thi bay minh nha cau.kho hiu qua
Thu May 20, 2010 4:59 pm
Thành Viên Chuẩn
hongchung
Giới tính :
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
oh bai nay khong biet test thu chua!thay sai nhieu cho! hinh nhu la mot so cho giong nhu trong ngon ngu c! nhung ban nay lam vay la gioi wa roi! thank nhieu!
Thu May 20, 2010 5:34 pm
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Cảm ơn các bạn đã quan tâm góp ý nhưng mà viết bài không có dấu cẩn thận bị admin xử lí đó nha
Tình hình là ở nhà mình sử dụng Borland C++ 5.2 trong khi đa số các bạn sử dụng Microsoft Visual C++ 6.0. Hình như 2 thằng này không ưa nhau hay sao ấy, mình viết code và test trên Borland C++ thì chạy tốt nhưng các bạn copy qua Visual C++ thì báo lỗi lung tung. Do đó, mình đã sửa lại code và test trên Visual C++ chạy ngon lành.
Dưới đây là bài giải hoàn chỉnh , đã thêm hàm fix các lỗi "nhập khoảng cách ở đầu chuỗi" và "sắp xếp theo mã số sinh viên" .
Code:
#include <iostream> using namespace std; #include <conio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> struct SinhVien { char MaSV[11]; char HoTen[50]; char QueQuan[20]; unsigned int NamSinh; float Diem; char XepLoai[30]; } SV[100], t[1]; bool Nhap1SinhVien(int n) { cout<<"Nhap ma sinh vien "<<(n+1)<<endl; cin.get(SV[n].MaSV,11); cin.get(); cout<<"Nhap ho ten sinh vien "<<(n+1)<<endl; cin.getline(SV[n].HoTen,50); // Xoa ki tu trang dau chuoi while (*SV[n].HoTen==32) { for (int i=0;i<strlen(SV[n].HoTen)-1;i++) SV[n].HoTen[i]=SV[n].HoTen[i+1]; *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0'; } // Xoa ki tu trang cuoi chuoi while (*(SV[n].HoTen+strlen(SV[n].HoTen)-1)==32) *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0'; // 2 ki tu trang lien tiep xoa bot mot cai int i=0; while (*(SV[n].HoTen+i)) if (*(SV[n].HoTen+i)==32&&*(SV[n].HoTen+i+1)==32) strcpy(SV[n].HoTen+i,SV[n].HoTen+i+1); else i++; if (SV[n].HoTen[0]==' ') for (int i=0;SV[n].HoTen[i]!='\0';i++) SV[n].HoTen[i]=SV[n].HoTen[i+1]; // Viet hoa ki tu dau dong SV[n].HoTen[0]=toupper(SV[n].HoTen[0]); cout<<"Nhap que quan ( ten tinh/thanh pho) sinh vien "<<(n+1)<<endl; cin.getline(SV[n].QueQuan,20); // Xoa ki tu trang dau chuoi while (*SV[n].QueQuan==32) { for (int i=0;i<strlen(SV[n].QueQuan)-1;i++) SV[n].QueQuan[i]=SV[n].QueQuan[i+1]; *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0'; } // Xoa ki tu trang cuoi chuoi while (*(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)==32) *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0'; // 2 ki tu trang lien tiep xoa bot mot cai int j=0; while (*(SV[n].QueQuan+j)) if (*(SV[n].QueQuan+j)==32&&*(SV[n].QueQuan+j+1)==32) strcpy(SV[n].QueQuan+j,SV[n].QueQuan+j+1); else j++; if (SV[n].QueQuan[0]==' ') for (int j=0;SV[n].QueQuan[j]!='\0';j++) SV[n].QueQuan[j]=SV[n].QueQuan[j+1]; // Viet hoa ki tu dau dong SV[n].QueQuan[0]=toupper(SV[n].QueQuan[0]); cout<<"Nhap nam sinh sinh vien "<<(n+1)<<endl; cin>>SV[n].NamSinh; cout<<"Nhap diem tot nghiep sinh vien "<<(n+1)<<endl; cin>>SV[n].Diem; if (SV[n].Diem >= 9) strcpy(SV[n].XepLoai,"Xuat Xac"); if ((SV[n].Diem >= 8)&&(SV[n].Diem < 9)) strcpy(SV[n].XepLoai,"Gioi"); if ((SV[n].Diem >= 7)&&(SV[n].Diem < 8)) strcpy(SV[n].XepLoai,"Kha"); if ((SV[n].Diem >= 6)&&(SV[n].Diem < 7)) strcpy(SV[n].XepLoai,"Trung Binh Kha"); if ((SV[n].Diem >= 5)&&(SV[n].Diem < 6)) strcpy(SV[n].XepLoai,"Trung Binh"); if ((SV[n].NamSinh>=1950)&&(SV[n].NamSinh<=2000)&&(SV[n].Diem<=10.0)&&(SV[n].Diem>=5.0)) return 1; else return 0; } void NhapDSSinhVien(int N,bool A[]) { for (int k=0;k<N;k++) { do { cout<<"NHAP THONG TIN SINH VIEN THU "<<(k+1)<<endl; A[k]=Nhap1SinhVien(k); cin.get(); } while (A[k]== 0); }
} void TimSinhVienTheoHoTen(int N,char T[50]) { int dem=0; for(int k=0;k<N;k++) if (strcmp(T,SV[k].HoTen)==0) { cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl; cout<<"Ho va ten: "<<SV[k].HoTen<<endl; cout<<"Que Quan: "<<SV[k].QueQuan<<endl; cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl; cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl; cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl; dem+=1; } if (dem==0) cout<<"Khong tim duoc sinh vien nao \n"; } void SapXepTheoDiem(int N) { int j,i; for(i=0;i<N;i++) for(j=i+1;j<N+1;j++) if (SV[i].Diem < SV[j].Diem) { t[0] = SV[i]; SV[i] = SV[j]; SV[j] = t[0]; } for(i=0;i<N;i++) for(j=i+1;j<N+1;j++) if ((SV[i].Diem == SV[j].Diem)&&(atol(SV[i].MaSV) > atol(SV[j].MaSV))) { t[0] = SV[i]; SV[i] = SV[j]; SV[j] = t[0]; } } void InDanhSach(int N) { for(int k=0;k<N;k++) { cout<<"THONG TIN SINH VIEN THU "<<(k+1)<<endl; cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl; cout<<"Ho va ten: "<<SV[k].HoTen<<endl; cout<<"Que Quan: "<<SV[k].QueQuan<<endl; cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl; cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl; cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl; } } int main() { bool A[100]; int N; char T[50]; cout<<"Nhap so luong sinh vien N \n"; cin>>N; cin.get(); NhapDSSinhVien(N,A); cout<<endl<<"********************************************"<<endl; cout<<"Nhan Enter de den ham TimSinhVienTheoHoTen \n"; getch(); cout<<"Nhap ho ten hoc sinh can tim \n"; cin.getline(T,50); TimSinhVienTheoHoTen(N,T); cout<<endl<<"********************************************"<<endl; cout<<"Nhan Enter de den ham InDanhSach \n"; getch(); SapXepTheoDiem(N); InDanhSach(N); getch(); return 0; }
Nói là hoàn chỉnh nhưng theo đề thì vẫn có một số điểm chưa hoàn thiện. VD như: + Phải kiểm tra tính hợp lệ của tuổi bắt đầu đi học nhưng đã kiểm tra năm hợp lệ rồi thì tại sao lại còn phải kiểm tra tuổi. Do đó, bài giải không khai thác chỗ này . + Tên thì có thể trùng nhưng Mã số sinh viên thì duy nhất . Đề không yêu cầu kiểm tra mã số sinh viên trùng nhau nên bài giải cũng không khai thác, và còn nhiều chỗ nho nhỏ khác nữa.... + Câu e) kêu in dữ liệu dưới dạng bảng ??? OMG!! Xin chịu thua ! Ít đi học nên không biết thầy có dạy cái này hông ? chứ em nhớ hổng lầm cái này C++ nâng cao
Số lần được cảm ơn :Message reputation : 100% (2 votes)
Thu May 20, 2010 7:27 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Cảm ơn Blackrose!
Thu May 20, 2010 9:01 pm
Thành Viên Chuẩn
hongchung
Giới tính :
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
viết trên Borland C++ với lại Visual C++ phải khai báo lại thư viện bạn đã thử chưa?
Thu May 20, 2010 9:02 pm
Thành Viên Chuẩn
hongchung
Giới tính :
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Phải Thank bạn nhiều!
Thu May 20, 2010 9:07 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
bộ phận kiểm tra đã kiểm tra xong.kết quả...hơi tiếc cho bạn phú. sau khi test mình thấy ko sai code.nhưng mà sai ngữ nghĩa. mình chọn số lượng là 2 sv nhập xong hết thông tin của sv1 thì nó típ tục báo...nhập típ thông tin sv1 đi em! hix thêm nữa là phần nhập tên vẫn có thể nhập số tùy ý(sv2 mình mới nhập tùm lum xem sao). bạn cố gang lại thử đi nhé phú.dù sao cũng phải kham phục!gioỉ thật đó
Thu May 20, 2010 9:16 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Code:
#include <iostream> #include <cstring> #include <iomanip> using namespace std; struct sinhvien { char masv[11]; char hoten[50]; char quequan[20]; unsigned int namsinh; float diem; char xeploai[30]; }; bool nhap1sinhvien(sinhvien &sv) { cout<<"nhap ma sinh vien\n"; cin.ignore(255,'\n'); cin.getline(sv.masv,11); cout<<"nhap ho ten\n"; cin.ignore(255,'\n'); cin.getline(sv.hoten,50); cout<<"nhap que quan\n"; cin.ignore(255,'\n'); cin.getline(sv.quequan,20); cout<<"nhap nam sinh\n"; cin>>sv.namsinh; cout<<"nhap diem\n"; cin>>sv.diem; if((sv.namsinh<1950)||(sv.namsinh>2000)) return false; int tuoi=2010-sv.namsinh; if((tuoi<18)||(tuoi>50)) return false; if((sv.diem<5.0)||(sv.diem>10.0)) return false; if(sv.diem>=9.0) strcpy(sv.xeploai,"xuatsac"); else if(sv.diem>=8.0) strcpy(sv.xeploai,"gioi"); else if(sv.diem>=7.0) strcpy(sv.xeploai,"kha"); else if(sv.diem>=6.0) strcpy(sv.xeploai,"tbkha"); else strcpy(sv.xeploai,"trung binh"); return true; } void nhapdssinhvien(sinhvien ds[],int n) { sinhvien tmp; int i=0; while (i<n) { if(nhap1sinhvien(tmp)) { ds[i++]=tmp; } }
} void timsinhvientheoten(sinhvien ds[],int n) { int i,ok=0; char ht[50]; cout<<"nhap ten can tim\n"; cin.ignore(255,'\n'); cin.getline(ht,50); for(i=0;i<n;i++) { if(strcmp(ds[i].hoten,ht)==0) { cout<<"co ten "<<ht<<" trong danh sach\n"; ok=1; break; }
} if(ok!=1) cout<<"ko co ten "<<ht<<" trong danh sach\n"; } void sapxeptheodiem(sinhvien ds[],int n) { int i,j; for(i=0;i<n;i++) for(j=1;j<n;j++) { if(ds[i].diem<ds[j].diem) swap(ds[i],ds[j]); else if(ds[i].diem==ds[j].diem) { if(strcmp(ds[i].masv,ds[j].masv)==1) swap(ds[i],ds[j]); } } } void indanhsach(sinhvien ds[],int n) { int i; cout<<"masv "; for(i=0;i<n;i++) { cout<<ds[i].masv; cout<<"\t\t"; } cout<<"\n"; cout<<"ho va ten "; for(i=0;i<n;i++) { cout<<ds[i].hoten; cout<<"\t"; } cout<<"\n"; cout<<"que quan "; for(i=0;i<n;i++) { cout<<ds[i].quequan; cout<<"\t\t"; } cout<<"\n"; cout<<"nam sinh "; for(i=0;i<n;i++) { cout<<ds[i].namsinh; cout<<"\t\t\t"; } cout<<"\n"; cout<<"diem "; for(i=0;i<n;i++) { cout<<ds[i].diem; cout<<"\t\t\t"; } cout<<"\n"; cout<<"xep loai "; for(i=0;i<n;i++) { cout<<ds[i].xeploai; cout<<"\t\t"; }
} void main() { sinhvien ds[100]; int n; cout<<"nhap so sinh vien can nhap vao danh sach"; cin>>n; nhapdssinhvien(ds,n); sapxeptheodiem(ds,n); indanhsach(ds,n); timsinhvientheoten(ds,n); }
Còn cái chuẩn hóa chuỗi chưa có làm đc chỉ làm đc nhiêu đây thui nhưng mà còn 1 số cái chưa hoàn chỉnh lăm!!!mấy bạn test thử nhan!!!
Thu May 20, 2010 9:45 pm
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
superkid đã viết:
bộ phận kiểm tra đã kiểm tra xong.kết quả...hơi tiếc cho bạn phú. sau khi test mình thấy ko sai code.nhưng mà sai ngữ nghĩa. mình chọn số lượng là 2 sv nhập xong hết thông tin của sv1 thì nó típ tục báo...nhập típ thông tin sv1 đi em! hix thêm nữa là phần nhập tên vẫn có thể nhập số tùy ý(sv2 mình mới nhập tùm lum xem sao). bạn cố gang lại thử đi nhé phú.dù sao cũng phải kham phục!gioỉ thật đó
Chương trình bắt nhập lại SV nào là do nhập năm sinh và điểm không đúng ( năm sinh phải thuộc [1950;2000] và điểm phải thuộc [5;10] )
Việt Nam mình có người tên có số đó bạn với lại đã nói rồi : đề yêu cầu đến đâu thì làm đến đó, bài giải đã dài lắm rồi !
Hi hi, vậy là không có sai nhé , cám ơn đã góp ý
@qphuong: Bài của ông in danh sách có dạng bảng ( chỉ bị lỗi không hiện họ tên). Đúng là một ý tưởng mới lạ đó
Thu May 20, 2010 11:41 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
bài của phương test tốt... đang coi làm cái chuẩn hóa tên vs làm cái bảng lại cho đẹp )
Fri May 21, 2010 10:59 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
sao bài của p tui thấy còn bị lỗi lúc cho xuất bảng.mọi thứ mình nhập bằng tay đều ko dc hiển thị.và khi đưa ra yêu cầu bắt người ta nhập quê quan thì phả bấm enter 2 lần sau khi đã nhập để mà qua yêu cầu tiếp theo.phương ráng sửa lại cho anh em đi phương.thêm cái nữa góp ý là mình thấy bài của phú có cái hay là nhập sv nào thì phú cho biết đây là sv thứ bao nhiêu.của p ko có.p thêm vào đi nhé.haiz...công nhận mấy u giỏi thiệt.tui chưa làm dc zậy.hix
Fri May 21, 2010 8:19 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
àh cái lỗi như ông nói thì tại do câu lệnh cin.ignore(255,'\n') áh câu này là lệnh dừng xóa bộ nhớ với lại nó chỉ đọc sau khi bấm enter nên khi mà ông chạy thì trc khi nhập ông phải enter trc rùi nhập là đc!còn cái kia thì dễ mà các bạn tự thêm nhá!hihi
Fri May 21, 2010 9:38 pm
Thành Viên Chuẩn
abcde
Giới tính :
Đến từ : abcde
Join : 02/04/2010
Bài gửi : 43
HUMOR : abcde
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Cảm ơn bạn Phú và bạn Phương nhiều nhé : )
Sat May 22, 2010 9:31 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
ủa?thế sao mình ko xài câu như bình thường p?xài cái câu cin.ignore làm gì zậy?ủa mà câu này mình có học ko nhỉ???
Sat May 22, 2010 5:30 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
cái câu lệnh này theo mình đc bít thì là dùng để xóa bộ nhớ trong chuỗi!!! hình như là nếu ko có câu này thì chuỗi chỉ nhập đc 1 lần rùi thì cái chuỗi đó có giá trị đó luôn không thay đổi nữa!!!ví dụ khi nhập tên cho sinh viên thứ 1 xong mà ko có câu này thì sau khi nhập tên cho sinh viên thứ hai thì tên của sinh viên thứ hai sẽ là tên của sinh viên thứ nhât!!!câu này thì thầy chỉ giới thiệu cho bít thui bữa đi học cuối cùng áh
Sat May 22, 2010 5:49 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
hix...hum đó bị ốm.nghỉ mất tiu.tiếc wa'.huhu
Sat May 29, 2010 7:35 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Code:
#include <iostream> #include <cstring> #include <iomanip> using namespace std; struct sinhvien { char masv[11]; char hoten[50]; char quequan[20]; unsigned int namsinh; float diem; char xeploai[30]; }; bool nhap1sinhvien(sinhvien &sv) { cout<<"nhap ma sinh vien\n"; cin.ignore(255,'\n'); cin.getline(sv.masv,11); cout<<"nhap ho ten\n"; cin.ignore(255,'\n'); cin.getline(sv.hoten,50);
while (*sv.hoten==32) //xoa ki tu dau chuoi { for (int i=0;i<strlen(sv.hoten)-1;i++) sv.hoten[i]=sv.hoten[i+1]; *(sv.hoten+strlen(sv.hoten)-1)='\0'; }
while(*(sv.hoten+strlen(sv.hoten)-1)==32) //xoa ki tu cuoi chuoi *(sv.hoten+strlen(sv.hoten-1))='\0'; int i=0; while (*(sv.hoten+i)) //xoa khoang trang thua if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32) strcpy(sv.hoten+i,sv.hoten+i+1); else i++;
for ( i=0;i<strlen(sv.hoten);i++) //Chuyen tat ca thanh chu thuong sv.hoten[i]=tolower(sv.hoten[i]);
sv.hoten[0]=toupper(sv.hoten[0]); //In hoa chu cai dau tien for ( i=0;i<strlen(sv.hoten);i++) if (sv.hoten[i-1]==' ' && sv.hoten[i]!=' ') sv.hoten[i]=toupper(sv.hoten[i]);
cout<<"nhap que quan\n"; cin.ignore(255,'\n'); cin.getline(sv.quequan,20); while (*sv.quequan==32) //xoa ki tu dau chuoi { for (int i=0;i<strlen(sv.quequan)-1;i++) sv.quequan[i]=sv.quequan[i+1]; *(sv.quequan+strlen(sv.quequan)-1)='\0'; }
while(*(sv.quequan+strlen(sv.quequan)-1)==32) //xoa ki tu cuoi chuoi *(sv.quequan+strlen(sv.quequan-1))='\0'; i=0; while (*(sv.quequan+i)) //xoa khoang trang thua if (*(sv.quequan+i)==32&&*(sv.quequan+i+1)==32) strcpy(sv.quequan+i,sv.quequan+i+1); else i++;
for ( i=0;i<strlen(sv.quequan);i++) //Chuyen tat ca thanh chu thuong sv.quequan[i]=tolower(sv.quequan[i]);
sv.quequan[0]=toupper(sv.quequan[0]); //In hoa chu cai dau tien for ( i=0;i<strlen(sv.quequan);i++) if (sv.quequan[i-1]==' ' && sv.quequan[i]!=' ') sv.quequan[i]=toupper(sv.quequan[i]);
cout<<"nhap nam sinh\n"; cin>>sv.namsinh; cout<<"nhap diem\n"; cin>>sv.diem; if((sv.namsinh<1950)||(sv.namsinh>2000)) return false; int tuoi=2010-sv.namsinh; if((tuoi<18)||(tuoi>50)) return false; if((sv.diem<5.0)||(sv.diem>10.0)) return false; if(sv.diem>=9.0) strcpy(sv.xeploai,"xuatsac"); else if(sv.diem>=8.0) strcpy(sv.xeploai,"gioi"); else if(sv.diem>=7.0) strcpy(sv.xeploai,"kha"); else if(sv.diem>=6.0) strcpy(sv.xeploai,"tbkha"); else strcpy(sv.xeploai,"trung binh"); return true; } void nhapdssinhvien(sinhvien ds[],int n) { sinhvien tmp; int i=0; while (i<n) { cout<<"nhap thong tin sinh vien thu"<<i+1<<endl; if(nhap1sinhvien(tmp)) { ds[i++]=tmp; } }
} void timsinhvientheoten(sinhvien ds[],int n) { int i,ok=0; char ht[50]; cout<<"nhap ten can tim\n"; cin.ignore(255,'\n'); cin.getline(ht,50); for(i=0;i<n;i++) { if(strcmp(ds[i].hoten,ht)==0) { cout<<"co ten "<<ht<<" trong danh sach\n"; ok=1; break; }
} if(ok!=1) cout<<"ko co ten "<<ht<<" trong danh sach\n"; } void sapxeptheodiem(sinhvien ds[],int n) { int i,j; for(i=0;i<n;i++) for(j=1;j<n;j++) { if(ds[i].diem<ds[j].diem) swap(ds[i],ds[j]); else if(ds[i].diem==ds[j].diem) { if(strcmp(ds[i].masv,ds[j].masv)==1) swap(ds[i],ds[j]); } } } void indanhsach(sinhvien ds[],int n) { int i; cout<<"masv "; for(i=0;i<n;i++) { cout<<ds[i].masv; cout<<"\t\t\t"; } cout<<"\n"; cout<<"ho va ten "; for(i=0;i<n;i++) { cout<<ds[i].hoten; cout<<"\t"; } cout<<"\n"; cout<<"que quan "; for(i=0;i<n;i++) { cout<<ds[i].quequan; cout<<"\t\t"; } cout<<"\n"; cout<<"nam sinh "; for(i=0;i<n;i++) { cout<<ds[i].namsinh; cout<<"\t\t\t"; } cout<<"\n"; cout<<"diem "; for(i=0;i<n;i++) { cout<<ds[i].diem; cout<<"\t\t\t"; } cout<<"\n"; cout<<"xep loai "; for(i=0;i<n;i++) { cout<<ds[i].xeploai; cout<<"\t\t"; }
} int main() { sinhvien ds[100]; int n; cout<<"nhap so sinh vien can nhap vao danh sach : "; cin>>n; nhapdssinhvien(ds,n); sapxeptheodiem(ds,n); timsinhvientheoten(ds,n); indanhsach(ds,n); return 0; }
mới làm xong mấy bạn coi có thiếu sót gì ko nha!!!
Sat May 29, 2010 10:09 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
void xoa1kitu(char a[], int vitri) { int n= strlen(a); for(int j=vitri; j<n;j++) a[j]=a[j+1]; a[n-1]='\0';
} void chuanhoa(char chuoi[]) {
while (chuoi[0]==' ') { xoa1kitu(chuoi,0); }
while (chuoi[strlen(chuoi)-1]==' ') { xoa1kitu(chuoi,strlen(chuoi)-1); } for (int i=0;i<strlen(chuoi);i++) { if ((int)chuoi[i]==32 && (int)chuoi[i+1]==32) { xoa1kitu(chuoi,i); i--; }
}
for (int i=0;i<strlen(chuoi);i++) //Chuyen tat ca thanh chu thuong chuoi[i]=tolower(chuoi[i]);
chuoi[0]=toupper(chuoi[0]); //In hoa chu cai dau tien for (int i=0;i<strlen(chuoi);i++) if (chuoi[i-1]==' ' && chuoi[i]!=' ') chuoi[i]=toupper(chuoi[i]); }
bool Nhap1SinhVien(SinhVien &sv) { char HoTen[50],QueQuan[20]; cout<<"\n-------------------------------------------------------------------------\n"; cout<<"Nhap MSSV :"; cin.ignore(255,'\n'); cin.getline(sv.MaSV,11); cout<<"Nhap Ho ten Sinh vien :"; cin.getline(HoTen,50); chuanhoa(HoTen); strcpy(sv.HoTen,HoTen); cout<<"Nhap que quan :"; cin.getline(QueQuan,20); chuanhoa(QueQuan); strcpy(sv.QueQuan,QueQuan); cout<<"Nhap nam sinh :"; cin>>sv.NamSinh; cout<<"Nhap Diem : :"; cin>>sv.Diem; if (sv.Diem>=8) strcpy(sv.XepLoai,"Gioi"); else if (sv.Diem>=6) strcpy(sv.XepLoai,"Kha"); else strcpy(sv.XepLoai,"TB"); int Tuoi=2010-sv.NamSinh; if((sv.NamSinh<1950)||(sv.NamSinh>2000)) return false; else if ((sv.Diem<5.0)||(sv.Diem>10.0)) return false; else if (Tuoi<18 || Tuoi>50 ) return false; else return true;
}
void NhapDSSinhVien(SinhVien ds[],int n) { SinhVien tmp; int i=0; while (i<n) { if(Nhap1SinhVien(tmp)) { ds[i++]=tmp; } else cout<<"\n !!! Thong tin Sinh Vien vua nhap ko hop le... Vui long nhap lai\n "<<endl; }
}
void XuatDS(SinhVien sv[],int n) { // Dong dau tien for (int i=1;i<=78;i++) cout<<"_"; cout<<endl; cout<<"| MSSV |"<<" Ho Ten |"<<" Nam Sinh |"<<" Que Quan |"<<" Diem |"<<" Xep Loai |\n"; for (int i=1;i<=78;i++) cout<<"_"; cout<<endl; //Cac dong hien thi du lieu for (int i=0;i<n;i++) { cout<<"|"<<setw(8)<<sv[i].MaSV<<"|" <<setw(20)<<sv[i].HoTen<<"|" <<setw(13)<<sv[i].NamSinh<<"|" <<setw(11)<<sv[i].QueQuan<<"|" <<setw(8)<<sv[i].Diem<<"|" <<setw(11)<<sv[i].XepLoai<<"|"; cout<<endl;
}
for (int i=1;i<=78;i++) cout<<"_"; cout<<endl;
}
void TimSinhVienTheoHoTen(SinhVien sv[], int n) { char keyword[100] ; cout<<"Nhap ten sinh vien can tim :"; cin.ignore(255,'\n'); cin.getline(keyword,100); chuanhoa(keyword); int dem=0; for (int i=0;i<n;i++) if (strcmp(sv[i].HoTen,keyword)==0) { dem++; cout<<"\n----------------------------------------------\n"; cout<<"MSSV :"<<sv[i].MaSV<<endl; cout<<"Ho ten :"<<sv[i].HoTen<<endl; cout<<"Nam Sinh :"<<sv[i].NamSinh<<endl; cout<<"Que quan :"<<sv[i].QueQuan<<endl; cout<<"Diem :" <<sv[i].Diem<<endl; cout<<"Xep loai :" <<sv[i].XepLoai<<endl; } if (dem>0) { cout<<"\n----------------------------------------------\n"; cout<<"Tim thay " <<dem<<" sinh vien co ten : "<<keyword<<endl; } else cout<<"Ko tim thay !!!"; } void SapXepTheoDiem(SinhVien sv[], int n) { for (int i=0;i<n;i++) for (int j=i;j<n;j++) { if (sv[i].Diem > sv[j].Diem) swap(sv[i] , sv[j]); else if (sv[i].Diem = sv[j].Diem) { if (strcmp(sv[i].MaSV , sv[j].MaSV)==1) swap(sv[i] , sv[j]); } } }
int main() { SinhVien sv[100]; char keyword[100]; int n; cout<<"Nhap so luong sinh vien :"; cin>>n; NhapDSSinhVien(sv,n); SapXepTheoDiem(sv,n); system("cls"); XuatDS(sv,n); TimSinhVienTheoHoTen(sv,n);
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
1 ý tưởng mới cho những bạn ko thích sài con trỏ!!! kết nhất là cái bảng!!!hehe thanhks leo!!!
Sun May 30, 2010 12:40 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
thông báo: bị sai phần điểm .. khi swap thì điểm chạy lung tung.. ko đúng nữa... bà kon sửa tiếp đí :d
Sun May 30, 2010 8:57 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
cho hỏi: while (*(sv.hoten+i)) //xoa khoang trang thua if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32) strcpy(sv.hoten+i,sv.hoten+i+1); else i++; va một số câu ì, Hình như sau While và Ì là một (bool sta.) sao ko thấy đau hết vậy??? Giải thích giùm cách chạy này,THx nghe
Sun May 30, 2010 10:29 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
mẹ ơi đúng là quỷ đỡ...cái thằng leo này kinh thật pà kon há.à choi tui hỏi chút xíu.tui thì dở về viết mấy cái code nhưng tui xin góp ý cái này xíu.tui tính làm cái phần xóa khoảng trắng và viết hoa chữ cái đầu tiên như sau.mình nhập tên váo 1 mảng.sau đó cho nó chạy từng ô trong mảng.nếu thấy ở đâu kí tự có mã ASCII bằng mã của phím spacebar thì mình delete nó.và cho hàm viết hoa chữ cái ở ô tiếp theo.theo mọi người đây có phải là cách làm tối ưu chưa? thêm nữa là bài của ông leo sao tui copy về máy cho chạy thì nó báo là 5 lỗi.ông nói là nói chạy dc trên VC6 mà máy tui chạy VC6 nè.sao lỗi dữ thế? ------------------------------------------------------------------------ ông kiểm tra lại xem do code hay do máy dùm tui nhé.hix!
Sun May 30, 2010 11:19 am
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
kim_o đã viết:
Trích dẫn :
cho hỏi: while (*(sv.hoten+i)) //xoa khoang trang thua if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32) strcpy(sv.hoten+i,sv.hoten+i+1); else i++; va một số câu if, Hình như sau While và If là một (bool sta.) sao ko thấy đau hết vậy??? Giải thích giùm cách chạy này,THx nghe
cái phần điều kiện ở câu lệnh while là *(sv.hoten+i) nghĩa là phấn tử thứ i khác rỗng còn trong câu if thì *(sv.hoten+i)==32&&(sv.hotten+i+1)==32 là câu điều kiện có nghĩa là hai phần tử thứ i và i+1 đều bằng khoảng cách (mã ASCII của khoảng cách là 32) cách chạy thì khi mà phần tử thứ i khác rỗng thì kiểm tra tiếp phần tử thứ i có là khoảng cách ko nếu đúng thì kiểm tra tiếp phần thứ i+1 nếu là khoảng trắng thì copy phần tử thứ i+1 vào phần tử thứ i nghĩa là xóa bớt phần tử thứ i+1 còn không thì tăng i lên chỉ dậy thui!!!
rex đã viết:
Trích dẫn :
thông báo: bị sai phần điểm .. khi swap thì điểm chạy lung tung.. ko đúng nữa... bà kon sửa tiếp đí :d
cái câu lệnh của ông nó bị sai rùi
Code:
if (sv[i].Diem > sv[j].Diem) swap(sv[i] , sv[j]);
phải là
Code:
if (sv[i].Diem < sv[j].Diem) swap(sv[i] , sv[j]);
mới đúng!!! @superkid:ý tưởng của ông hay áh nhưng mà trong C++ ko có hàm nào để xóa hết nên khi làm sẽ gặp nhiều phiền phức nên ko thể làm cùng lúc cả hia việc đc!!!còn bài của leo báo lỗi là do C_free nên khi chạy trên VC6 nó báo lỗi linh tinh thui mấy bạn tự sửa đc mà!!!
Sun May 30, 2010 1:17 pm
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
Các bạn đúng là Pro
À mà nói thêm với bạn kim_o là :Theo sách cấu trúc của while là "while(expression) statement" ( expression chứ không phải conditional như cấu trúc If, for, do .. while). Do đó , trong dấu ngoặc của while vừa có thể là biểu thức điều kiện hoặc một biểu thức có trị xác định(biểu hiện).
Sun May 30, 2010 2:09 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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
void xoa1kitu(char a[], int vitri) { int n= strlen(a); for(int j=vitri; j<n;j++) a[j]=a[j+1]; a[n-1]='\0';
} void chuanhoa(char chuoi[]) {
while (chuoi[0]==' ') { xoa1kitu(chuoi,0); }
while (chuoi[strlen(chuoi)-1]==' ') { xoa1kitu(chuoi,strlen(chuoi)-1); } for (int i=0;i<strlen(chuoi);i++) { if ((int)chuoi[i]==32 && (int)chuoi[i+1]==32) { xoa1kitu(chuoi,i); i--; }
}
for (i=0;i<strlen(chuoi);i++) //Chuyen tat ca thanh chu thuong chuoi[i]=tolower(chuoi[i]);
chuoi[0]=toupper(chuoi[0]); //In hoa chu cai dau tien for ( i=0;i<strlen(chuoi);i++) if (chuoi[i-1]==' ' && chuoi[i]!=' ') chuoi[i]=toupper(chuoi[i]); }
bool Nhap1SinhVien(SinhVien &sv) { char HoTen[50],QueQuan[20]; cout<<"\n-------------------------------------------------------------------------\n"; cout<<"Nhap MSSV :"; cin.ignore(255,'\n'); cin.getline(sv.MaSV,11); cout<<"Nhap Ho ten Sinh vien :"; cin.getline(HoTen,50); chuanhoa(HoTen); strcpy(sv.HoTen,HoTen); cout<<"Nhap que quan :"; cin.getline(QueQuan,20); chuanhoa(QueQuan); strcpy(sv.QueQuan,QueQuan); cout<<"Nhap nam sinh :"; cin>>sv.NamSinh; cout<<"Nhap Diem : :"; cin>>sv.Diem; if(sv.Diem>=9) strcpy(sv.XepLoai,"xuat sac"); else if (sv.Diem>=8) strcpy(sv.XepLoai,"Gioi"); else if (sv.Diem>=6) strcpy(sv.XepLoai,"Kha"); else strcpy(sv.XepLoai,"TB"); int Tuoi=2010-sv.NamSinh; if((sv.NamSinh<1950)||(sv.NamSinh>2000)) return false; else if ((sv.Diem<5.0)||(sv.Diem>10.0)) return false; else if (Tuoi<18 || Tuoi>50 ) return false; else return true;
}
void NhapDSSinhVien(SinhVien ds[],int n) { SinhVien tmp; int i=0; while (i<n) { if(Nhap1SinhVien(tmp)) { ds[i++]=tmp; } else cout<<"\n !!! Thong tin Sinh Vien vua nhap ko hop le... Vui long nhap lai\n "<<endl; }
}
void XuatDS(SinhVien sv[],int n) { // Dong dau tien for (int i=1;i<=78;i++) cout<<"_"; cout<<endl; cout<<"| MSSV |"<<" Ho Ten |"<<" Nam Sinh |"<<" Que Quan |"<<" Diem |"<<" Xep Loai |\n"; for ( i=1;i<=78;i++) cout<<"_"; cout<<endl; //Cac dong hien thi du lieu for ( i=0;i<n;i++) { cout<<"|"<<setw(8)<<sv[i].MaSV<<"|" <<setw(20)<<sv[i].HoTen<<"|" <<setw(13)<<sv[i].NamSinh<<"|" <<setw(11)<<sv[i].QueQuan<<"|" <<setw(8)<<sv[i].Diem<<"|" <<setw(11)<<sv[i].XepLoai<<"|"; cout<<endl;
}
for ( i=1;i<=78;i++) cout<<"_"; cout<<endl;
}
void TimSinhVienTheoHoTen(SinhVien sv[], int n) { char keyword[100] ; cout<<"Nhap ten sinh vien can tim :"; cin.ignore(255,'\n'); cin.getline(keyword,100); chuanhoa(keyword); int dem=0; for (int i=0;i<n;i++) if (strcmp(sv[i].HoTen,keyword)==0) { dem++; cout<<"\n----------------------------------------------\n"; cout<<"MSSV :"<<sv[i].MaSV<<endl; cout<<"Ho ten :"<<sv[i].HoTen<<endl; cout<<"Nam Sinh :"<<sv[i].NamSinh<<endl; cout<<"Que quan :"<<sv[i].QueQuan<<endl; cout<<"Diem :" <<sv[i].Diem<<endl; cout<<"Xep loai :" <<sv[i].XepLoai<<endl; } if (dem>0) { cout<<"\n----------------------------------------------\n"; cout<<"Tim thay " <<dem<<" sinh vien co ten : "<<keyword<<endl; } else cout<<"Ko tim thay !!!"; } void SapXepTheoDiem(SinhVien sv[], int n) { for (int i=0;i<n;i++) for (int j=1;j<n;j++) { if (sv[i].Diem < sv[j].Diem) swap(sv[i] , sv[j]); else if (sv[i].Diem == sv[j].Diem) { if (strcmp(sv[i].MaSV , sv[j].MaSV)==1) swap(sv[i] , sv[j]); } } }
int main() { SinhVien sv[100];
int n; cout<<"Nhap so luong sinh vien :"; cin>>n; NhapDSSinhVien(sv,n); SapXepTheoDiem(sv,n); system("cls"); XuatDS(sv,n); TimSinhVienTheoHoTen(sv,n);
return 0;
}
bài của rex sau khi sửa lại đôi chút giờ có thể chạy tốt trên VC6 rùi đó mấy cái lỗi cũng ko còn và điểm cũng xếp ok và thêm cái xếp loại xuất sắc mà rex còn thiếu ở bài trên!!!
Số lần được cảm ơn :Message reputation : 100% (1 vote)
Sun May 30, 2010 2:49 pm
Ma Mới
luachonmotvisao_56
Giới tính :
Đến từ : phú yên
Join : 30/12/2009
Bài gửi : 3
HUMOR : xem phim
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
sao minh copy hoai ko dc nhi
Sun May 30, 2010 4:15 pm
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: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
luachonmotvisao_56 đã viết:
sao minh copy hoai ko dc nhi
Mong rằng Chúa sẽ giúp bạn
Sponsored content
Tiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010
[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010