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 ạ.
Bài liên quan
Vấn đề của bạn ở đây là gì?
sau khi em thêm phẩn tử vào mảng thì các phần tử trước mất hết ạ
Cứ chọn “thêm” là lại nhập từ đầu, thảo nào chả còn gì
A sửa giúp em được không ạ
Nhập thêm thì phải bắt đầu từ phía sau chứ
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
cảm ơn anh nhiều ạ…
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.Thớt xài mảng raw còn như vầy mà chỉ kiểu đó thì…