01/10/2018, 11:46

Thêm phần tử vào mảng

class sach
{
	public:
		string Ten;
		int Ma;
		string TG;
		sach()
		{
			Ten="";
			Ma=0;
			TG="";
	 }
	 void Xuat(sach A[],int n){
	 	for(int i=0;i<n;i++)
			{
				cout<<"quyen sach thu ["<<i+1<<"]:"<<endl;
				cout<<A[i].Ten<<endl;
				cout<<A[i].Ma<<endl;
				cout<<A[i].TG<<endl;
				}}
		void Nhap(sach A[])
		{
			
			
				cin.ignore();
				cout<<"moi nhap Ten Sach:"<<endl;
				getline(cin,Ten);
				cout<<"moi nhap Ma sach:"<<endl;
				cin>>Ma;
			cin.ignore();
				cout<<"moi nhap TG:"<<endl;
				getline(cin,TG);
			
			
			
		}
		
		void xoa(sach A[],int n, int k)
		{
			for(int i=k-1;i<n-1;i++)
			{
				A[i]=A[i+1];
			}
			n--;
		}
};
sach A[100];
int dem=0;
int main()
{
	int n;
	cout<<"1.Nhap them sach:"<<endl;
	cout<<"2.kiem tra thong tin sach:"<<endl;
	cout<<"3.thoat "<<endl;
	cout<<"4.xoa thong tin sach:"<<endl;
	do{
	cout<<"moi nhap lua chon cua ban:"<<endl;
	cin>>n;
	if(n>4||n<1) {cout<<"ban nhap sai roi moi nhap lai"<<endl;}
		{
			switch(n)
			{
				case 1:
					{
						int k;
						cout<<"moi nhap so luong sach muon them :"<<endl;
						cin>>k;
						for(int i=0;i<k;i++)
						{
							
						A[i].Nhap(A);
							
							dem++;
						}
						
						break;	
					}
				case 2:
					{
						sach q1;
						q1.Xuat(A,dem);
						break;
					}
					
				case 3:
					{
						return 0;
						break;
					}
				case 4:
					{	int k;
						cout<<"moi chon sach can xoa:"<<endl;
						cin>>k;
						sach q1;
						q1.xoa(A,n,k);
					}
			}
		}
	
}while(n!=3);

}

mọi người xem giúp em em nhập mảng như vậy đúng không ạ.

Student X viết 13:54 ngày 01/10/2018

Vấn đề của bạn ở đây là gì?

Đỗ Hải Nam viết 13:55 ngày 01/10/2018

sau khi em thêm phẩn tử vào mảng thì các phần tử trước mất hết ạ

rogp10 viết 14:02 ngày 01/10/2018

Cứ chọn “thêm” là lại nhập từ đầu, thảo nào chả còn gì

Đỗ Hải Nam viết 13:51 ngày 01/10/2018

A sửa giúp em được không ạ

rogp10 viết 13:54 ngày 01/10/2018

Nhập thêm thì phải bắt đầu từ phía sau chứ

Student X viết 13:49 ngày 01/10/2018

Có một số điểm sau mình xin góp ý:
1. bác nên format code để cho dễ đọc ạ.
2. bác nên tìm hiểu cái gọi là coding convention. khai báo tên biến, tên hàm như thế nào. lưu ý. cố gắng sử dụng tiếng anh.
3. cái hàm xuất của bác nên để riêng ra. chứ không phải bác cho vào class sách như thế.
mô hình mình gợi ý như sau: khai báo class Book, khai báo class MyBooks để quản lý số lượng sách cũng như list sách. hàm xuất của bạn sẽ nằm trong class MyBooks. Hàm main sẽ sử dụng MyBook để làm việc.
4. Mỗi lần bạn chọn thêm sách. thì i của bạn lại bắt đầu lại từ 0. điều này có nghĩa phần từ được chèn thêm sẽ bắt đầu từ đầu mảng A của bạn. làm mất lượng sách bạn đã đặt trước.
5. Bác nên tạo một class IO. trong này chứa các method nhập từ bàn phím. xuất ra màn hình.
6. cố gắng đặt tên có ý nghĩa xíu đi. comment thêm nữa. xong thì thử tìm cách debug. ví dụ đặt tên em có thể gợi ý cho bác đặt mảng A[100] của bác thành listBook[100]. như thế có phải sẽ dễ hiểu không?
7. Bài này nên dùng mảng động bác ạ. bác tìm hiểu con trỏ bác nhé!!!
Thân <3
StudentX

Đỗ Hải Nam viết 13:49 ngày 01/10/2018

cảm ơn anh nhiều ạ…

Trần Hoàn viết 13:54 ngày 01/10/2018

C++ thì nên hạn chế dùng mảng. Bạn nên nghiên cứu sử dụng std::vector (nhớ #include <vector>)
vector thì có sẵn phương thức push_back(), insert(), pop_back(), erase(), size() và nhiều phương thức hữu dụng khác.

rogp10 viết 13:53 ngày 01/10/2018

Thớt xài mảng raw còn như vầy mà chỉ kiểu đó thì…

Bài liên quan
0