Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
C++ - Xuất thừa thông tin trong hàm xuất
12:07 17-06-2017
717 lượt xem
4 bình luận
23:54 12-07-2017
#include <iostream>
#include<iomanip>
#include<string>
#include<conio.h>
#include<stdio.h>
using namespace std;
class HANG
{
private:
char tenH[30];
float donGia;
int soL;
//int TT;
public:
void nhap();
void xuat();
friend class PHIEU;
};
class PHIEU
{
private:
char maPh[5];
char ngayL[10];
//int tongTien;
HANG *x;
int n;
public:
void nhap();
void xuat();
};
void HANG::nhap()
{
cout<<"Ten hang: "; fflush(stdin); gets(tenH);
cout<<"Don gia: "; cin>>donGia;
cout<<"So luong: "; cin>>soL;
}
void HANG::xuat()
{
cout<<tenH<<setw(7)<<donGia<<setw(7)<<soL<<setw(7)<<donGia*soL<<endl;
}
void PHIEU::nhap()
{
cout<<"Ma phieu: "; fflush(stdin); gets(maPh);
cout<<"Ngay lap: "; fflush(stdin); gets(ngayL);
cout<<"Nhap so mat hang: "; cin>>n;
x= new HANG[n];
for(int i=0;i<n;i++)
{
cout<<"Nhap mat hang thu: "<<i+1<<endl;
x[i].nhap();
}
//cout<<"tong tien:"; cin>>tongTien;
}
void PHIEU:: xuat()
{
cout<<setw(20)<<"PHIEU MUA HANG"<<endl;
cout<<"Ma phieu: "<<maPh<<"\t\t\t";
cout<<"Ngay lap: "<<ngayL<<endl;
cout<<"Ten hang"<<setw(5)<<"Don gia"<<setw(5)<<"So luong"<<setw(5)<<"Thanh tien"<<endl;
for(int i=0;i<n;i++)
x[i].xuat();
double tong=0;
for(int i =0; i < n; i++)
tong+=x[i].soL * x[i].donGia;
cout<<"Tong tien: "<<tong;
}
int main()
{
PHIEU a;
a.nhap();
a.xuat();
return 0;
}
Chào m.n!
Em có một vấn đề như sau:
Khi nhập thông tin Mã phiếu vd: MP001 thì ở hàm xuất danh sách nó xuất luôn cả phần ngày tháng kèm theo sau mã phiếu còn nhập với thông tin mã phiếu là: 1, 2, hay 3 gì thì xuất đúng thông tin ạ!
Vậy nguyên nhân này do đâu ạ?
Bạn cho maPh[5] thì chỉ nhập 4 kí tự thôi, 1 kí tự \0 nữa. Vậy nên khi nhập vao maPh là ph001 rồi nhập tiếp ngL 24/7/2017 thì tới \0 của ngL nó mới kết thúc.
tutorial
//Khi nhập mã phiếu: MP001
ma phieu: MP001
ngay lap: 1/1/2016
nhap m:1
Nhap mat hang thu: 1
ten hang: 1
don gia: 1
so luong: 1
PHIEU MUA HANG
Ma phieu: MP0011/1/2016Ngay lap:1/1/2016
Ten hangDon giaSo luongThanh tien
1 1 1 1
Tong tien: 1
//Khi nhập Mã phiếu: 1
ma phieu: 1
ngay lap: 1
nhap m:1
Nhap mat hang thu: 1
ten hang: 1
don gia: 1
so luong: 1
PHIEU MUA HANG
Ma phieu: 1Ngay lap:1
Ten hangDon giaSo luongThanh tien
1 1 1 1
Tong tien: 1
Khi nhập đầy đủ thì nó xuất ra chỗ mã phiếu có kèm theo ngày lập như thế này luôn ạ!
Bạn đăng cụ thể với các test Mã phiếu 001 thì output đầy đủ là như thế nào, 1 thì như thế nào đi bạn, vậy mọi người dễ giúp hơn.