30/09/2018, 19:06

Bài tập lớn c++

em làm xong tự nhiên tới câu 2 mới biết mình làm sai ạ T.T.
cho em hỏi ở câu tìm kiếm nếu mình muốn tìm kiếm thì nó phải ở trong 1 mảng mới tìm kiếm được phải
không ạ.
mà làm sao mình có thể đưa 1 lớp học dô 1 mảng được ạ.

#include<iostream>
using namespace std;
void menu();
void nhapthongtin()//nhập thông tin cần thiết
{
	char malophoc[5], chude[30], hotengv[30];
	int siso, ngaybd, thangbd, nambd, ngaykt, thangkt, namkt;
	cout << "
 Nhap ma lop hoc:";
	cin >> malophoc;
	cout << "
 Nhap chu de:";
	cin >> chude;
	cout << "
 Nhap ho va ten giao vien:";
	cin >> hotengv;
	cout << "
 Ngay thang nam bat dau:";
	cin >> ngaybd >> thangbd >> nambd;
	cout << "
 Ngay thang nam ket thuc:";
	cin >> ngaykt >> thangkt >> namkt;
	cout << "
 Nhap si so:";
	cin >> siso;
}
void main()
{
	int n;
	cout << "Nhap thong tin can cho lop hoc:";
	nhapthongtin();
	menu();
	system("pause");
}
void menu()
{
	int n;

	cout << "
 1:Them moi thong tin cho lop hoc";
	cin >> n;
	switch (n)
	{	
		case 1: nhapthongtin();
			break;


	}
}
Leng Keng viết 21:16 ngày 30/09/2018

bạn học hướng đối tượng trong c++ chưa! dùng hướng đối tượng mình nghĩ tối ưu hơn!

dihocke viết 21:14 ngày 30/09/2018

Nếu đã là c++ rồi thì k nên dùng struct nữa, dùng class đi cho hay
đầu tiên bạn viết 1 class LopHoc
sau đó có thể khai báo 1 mảng các biến thuộc kiểu LopHoc, hoặc bạn cũng có thể viết thêm 1 class DSLopHoc

thanh viết 21:06 ngày 30/09/2018

mình chưa học hướng đối tượng pn ơi

thanh viết 21:13 ngày 30/09/2018

cô mình chưa dậy class luôn

Leng Keng viết 21:14 ngày 30/09/2018

thế này code sẽ rài và xử lí nhiều mảng! nếu bạn học struct oy thì có thể dùng đó,tham khảo code dưới đây của mình,:

#include<iostream>
#include<conio.h>
#define max 100
using namespace std;
struct sinhvien{
	char hoten[50];
	long ma;
};
struct danhsach{
	sinhvien ds[100];
	int tong;
};
void khoitao(danhsach &d){
	d.tong=0;
}
int ktrong(danhsach d){
	return d.tong==0;
}
int ktday(danhsach d){
	return d.tong==max;
}
void xem(danhsach d){
	for(int i=0;i<d.tong;i++){
		cout<<endl<<" Ma sinh vien:"<<d.ds[i].ma<<endl;
		cout<<endl<<"Ten sinh vien:"<<d.ds[i].hoten<<endl;
	}
}
void themcuoi(danhsach &d){
	sinhvien sv;
	cout<<endl<<" Nhap ma sinh vien:";
	cin.ignore();
	cin>>sv.ma;
	cout<<endl<<"Nhap ten sinh vien:";
	fflush(stdin);
	cin.getline(sv.hoten,sizeof (sv.hoten),'\n');
	if(ktday(d))return ;
	d.ds[d.tong]=sv;
	d.tong++;
}
void xoa(danhsach &d,int k){
	if(ktrong(d)||k>d.tong-1)return ;
	for(int i=k;i<d.tong;i++){
		d.ds[i]=d.ds[i+1];
	}
	d.tong--;
}
void layra(danhsach &d,sinhvien sv){
	if(ktrong(d))return;
	sv=d.ds[d.tong-1];
	--d.tong;
	
}
int main(){
	danhsach dssv;
	sinhvien sv;
	khoitao(dssv);
	int a=1,chon;
	while(a){
		cout<<"Chon:"<<endl;
		cout<<"1.Them sinh vien:"<<endl;
		cout<<"2.Xem danh sach:"<<endl;
		cout<<"3.Xoa phan tu:"<<endl;
		cout<<"4.Layra."<<endl;
		cout<<"0.Ket thuc!"<<endl;
		cout<<"--------";
		fflush(stdin);
		cin>>chon;
		switch(chon){
			case 0:
				a=0;break;
				case 1:
					themcuoi(dssv);break;
					case 2:
						xem(dssv);break;
						case 3:
							int k;
							cout<<"Nhap k:";
							fflush(stdin);
							cin>>k;
							xoa(dssv,k);break;
							case 4: layra(dssv,sv);break;
							
		}
	}
	return 0;
}
thanh viết 21:08 ngày 30/09/2018

tks mình sẽ nghiên cứu

thanh viết 21:09 ngày 30/09/2018

cho mình hỏi dòng

void themcuoi(danhsach &d){//và tại sao mình không khai báo kiểu dữ liệu

	sinhvien sv;
	cout<<endl<<" Nhap ma sinh vien:";
	cin.ignore();//ý nghĩa của dòng này
	cin>>sv.ma;
	cout<<endl<<"Nhap ten sinh vien:";
	fflush(stdin);//dòng này
	cin.getline(sv.hoten,sizeof (sv.hoten),'\n');//với dòng này
	if(ktday(d))return ;//
	d.ds[d.tong]=sv;//3 dòng này
	d.tong++;//
}
Leng Keng viết 21:14 ngày 30/09/2018

1:void themcuoi(danhsach &d): cái này truyền vào struct danhsach đặt tên biến là d để mình dùng trong hàm này.
2.cin.ignore(); hàm này xóa bộ nhớ bàn phím, bạn có thể bỏ đi(nếu không có lỗi khi bỏ).
3.fflush(stdin); cái này cũng để xóa bộ nhớ bàn phím khi nhập biến kí tự kiểu char(bạn bỏ đi là sẽ rõ).
4.cin.getline(sv.hoten,sizeof (sv.hoten),'\n'); lệnh char chỉ nhập được một kí tự, nhưng với lệnh này bạn có thể nhập được nhiều kí tự nhưng giới hạn bởi mảng bạn đặt ở trên struct sinhvien{}
5… bạn lên mạng tìm tài liệu cấu trúc dữ liệu và giải thuật(phần này là cài đặt danh sách mảng) để đọc thêm về cái này. chứ mình nói thì khó hiểu lắm!

Leng Keng viết 21:15 ngày 30/09/2018

câu lệnh nào bạn chưa hiểu thì lên google seach nhé, gặp lỗi thì hỏi m.n.

thanh viết 21:18 ngày 30/09/2018

bạn có link nào mà có chú thích không mình kiếm toàn là code không à nhìn dô trả hiểu gì

Leng Keng viết 21:21 ngày 30/09/2018

với kiến thức hiện tại của bạn thì hơi khó để làm đề này! bạn thử xem tài liệu này coi. http://www.e-ptit.edu.vn/hoctap/hoclieu/CTDLGT.pdf

thanh viết 21:17 ngày 30/09/2018

bạn có link mấy bài tập lớn không cho mình với nhé

Leng Keng viết 21:08 ngày 30/09/2018

còn đây là code dùng hướng đối tượng:

#include<fstream>
using namespace std;
class Nguoi{
	protected :
		string name="",diachi="",sdt="";
};
int a;
int maThe=1000;
class Reader:public Nguoi{
	private:
		int mathe;
		string loaiBanDoc="";
		public:
			string lop="";
			int namhoc;
			string noiLamViec="";
			string chucVu="";
			string khoa="";
			void inFileBanDoc();
		void nhapReader(){
		
			int b;
			cout<<endl<<"Nhap ten thanh vien:";
			cin.ignore();
			getline(cin,name);
			cout<<endl<<"Dia chi:";
			getline(cin,diachi);
			cout<<endl<<"So dien thoai:";
			getline(cin,sdt);
			cin.ignore();
			this->mathe=maThe++;
			lap: ;
			cout<<endl<<"Chon loai ban doc:";
			cout<<endl<<"1.Sinh vien."<<endl<<"2.Hoc vien cao hoc"<<endl<<"3.Giao vien."<<endl;
			cin>>b;
			switch(b){
				case 1: loaiBanDoc="Sinh vien";
				cout<<"Nhap lop:";
				cin.ignore();
				getline(cin,lop);
				cout<< endl<<"Nam hoc:";
				cin>>namhoc;goto loop1;
				case 2: loaiBanDoc="Hoc vien cao hoc";
				cin.ignore();
				cout<<endl<<"Nhap noi cong tac:";
				getline(cin,noiLamViec);goto loop1;
				case 3: loaiBanDoc="Giao vien";
				cin.ignore();
				cout<<endl<<"NHap vao chuc vu:";
				getline(cin,chucVu);
				cout<<endl<<"Khoa giang day:";
				getline(cin,khoa);goto loop1;
				default : cout<<endl<<"Nhap lai lua chon:"<<endl;
				goto lap;
			}
			loop1: ;
			
	//	}
	//	void inTT(){
			cout<<endl<<"-----------------"<<endl<<loaiBanDoc<<":"<<endl<<name<<" - "<<this->mathe;
			cout<<endl<<"Dia chi: "<<diachi<<endl<<"So dian thoai: "<<sdt<<endl;
			switch(b){
				case 1:cout<<"Lop: "<<lop<<endl<<"Nam hoc: "<<namhoc<<endl;goto loop2;
				case 2:cout<<"Noi lam viec: "<<noiLamViec<<endl;goto loop2;
				case 3:cout<<"Chuc vu: "<<chucVu<<endl<<"Khoa giang day:"<<khoa;goto loop2;
			}
			loop2:;
			b=a;
			//inFileBanDoc(b);
		}
	
		void setmathe(int mathe){
		this->mathe=mathe;
		}
		int getmathe(void){
			return this->mathe;
		}
};
//int a=0;
	void Reader::inFileBanDoc(){
			ofstream fileBanDoc;
			cout<<endl<<"bat dau in file:------------------------"<<endl;
			fileBanDoc.open("E:\\BANDOC.DAT",ios::app);
			fileBanDoc<<endl<<"-----------------"<<endl<<loaiBanDoc<<":"<<endl<<name<<" - "<<this->mathe;
			fileBanDoc<<endl<<"Dia chi: "<<diachi<<endl<<"So dian thoai: "<<sdt<<endl;
			if(a==1){
				fileBanDoc<<"Lop: "<<lop<<endl<<"Nam hoc: "<<namhoc<<endl;fileBanDoc.close();
			}
			if(a==2){
				fileBanDoc<<"Noi lam viec: "<<noiLamViec<<endl;fileBanDoc.close();
			}
			if(a==3){
				fileBanDoc<<"Chuc vu: "<<chucVu<<endl<<"Khoa giang day:"<<khoa;fileBanDoc.close();
			}
		/*	switch(a){
				case 1:fileBanDoc<<"Lop: "<<lop<<endl<<"Nam hoc: "<<namhoc<<endl;fileBanDoc.close();break;
				case 2:fileBanDoc<<"Noi lam viec: "<<noiLamViec<<endl;fileBanDoc.close();break;
				case 3:fileBanDoc<<"Chuc vu: "<<chucVu<<endl<<"Khoa giang day:"<<khoa;fileBanDoc.close();break;
			}*/
			
		}
int main(){
	int n;
	Reader *nguoidoc;
	cout<<"Nhap vao so thanh vien:";
	cin>>n;
	nguoidoc= new Reader[n];
	for(int i=0;i<n;i++){
	//	nguoidoc[i].setmathe();
		cout<<endl<<"Nhap thanh vien thu "<<i+1<<":"<<endl;
		nguoidoc[i].nhapReader();
		nguoidoc[i].inFileBanDoc();
		//nguoidoc[i].inTT();
	}
	return 0;
	
}










bạn đọc qua hướng đối tượng trong c++ là có thể làm bài này dễ dàng, nó la lá giống struct thui.http://vietjack.com/cplusplus/lop_va_doi_tuong_trong_cplusplus.jsp

Bài liên quan
0