30/09/2018, 18:52

Hỏi đáp Bài tập struct c++

Mọi người giúp e sửa bài tập struct này với , khi e nhập thông tin một bộ phim thì xuất được nhưng khi mình nhập danh sách các bộ phim thì bị báo lỗi , lỗi runtime chứ ko phải lỗi cú pháp mà mình không biết nhầm chỗ nào ? help ! cảm ơn

#include<iostream>
#include<conio.h>
using namespace std ;
const int KT=100 ;
// Dinh nghia cau truc cua DIENVIEN
struct  DIENVIEN
{
	char MSDV[100] ;
	char TenDienVien[100] ;
	int SDT ;
};
struct DS_DIENVIEN
{
	DIENVIEN list_dv[100] ;
	int so_dv ;
};
// Dinh nghia cau truc cua HANGSANXUAT
struct HANGSANXUAT
{
	char MaSanXuat[100];
	char TenSanXuat[100] ;
	char DiaChi[100] ;
	int SDT ;
	char Email[100] ;
};
// Dinh nghia cau truc cua mot bo phim
struct PHIM
{
	char MaSoPhim[100] ;
	char TenPhim[100] ;
	char TheLoai[100] ;
	char TenDaoDien[100] ;
	DS_DIENVIEN DanhSachDienVien ;
	int NamSanXuat ;
	HANGSANXUAT HangSanXuat ; 
};
// Dinh nghia cau truc cua danh sach cac bo phim
struct DS_PHIM
{
	int so_phim ;
	PHIM list_phim[100] ;
};
// Ham nhap thong tin cua mot hang san xuat
void NhapHangSX(HANGSANXUAT &hsx)
{
	fflush(stdin);
	cout<<"
 Moi nhap ma hang san xuat :";
	cin.getline(hsx.MaSanXuat , 100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap ten san xuat : ";
	cin.getline(hsx.TenSanXuat , 100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap dia chi : ";
	cin.getline(hsx.DiaChi ,100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap so dien thoai : ";
	cin>>hsx.SDT ;

	fflush(stdin) ;
	cout<<"
 Moi nhap Email : ";
	cin.getline(hsx.Email,100 ) ;
}
// Ham xuat thong tin cua mot hang san xuat 
void XuatHangSX(HANGSANXUAT hsx )
{
	cout<<"
			 ****---- Thong Tin Hang San Xuat Bo Phim ----**** " ;
	cout<<"
		 Ma hang san xuat : "<<hsx.MaSanXuat ;
	cout<<"
		 Ten san xuat : "<<hsx.TenSanXuat ;
	cout<<"
		 Dia chi : "<<hsx.DiaChi ;
	cout<<"
		 SDT: "<<hsx.SDT ;
	cout<<"
		 Email : "<<hsx.Email ;
}
void Nhap1DV(DIENVIEN &dv )
{
	fflush(stdin) ;
	cout<<"
 Moi nhap ma so dien vien : ";
	cin.getline(dv.MSDV , 100 ) ;
	fflush(stdin) ;

	cout<<"
 Moi nhap ten dien vien  :" ;
	cin.getline(dv.TenDienVien, 100 ) ;
	fflush(stdin) ;

	cout<<"
 Moi nhap so dien thoai  : " ;
	cin>>dv.SDT ;
}
// Ham xuat mot dien vien
void Xuat1DV(DIENVIEN dv )
{
	cout<<"
		 Ma so dien vien : "<<dv.MSDV ;
	cout<<"
		 Ten dien vien   : "<<dv.TenDienVien ;
	cout<<"
		 So dien thoai   : "<<dv.SDT ;
	cout<<"

";
}

// Ham nhap DS cac dien vien 
void NhapDSDV(DS_DIENVIEN &dsdv )
{
	do
	{
		cout<<"
 Moi nhap so dien vien :  " ;
		cin>>dsdv.so_dv ;
		if(dsdv.so_dv < 0 || dsdv.so_dv >KT ) 
			cout<<"
 So dien vien khong hop le !Hay nhap lai!  " ;
	}while(dsdv.so_dv < 0 || dsdv.so_dv >KT ) ;
	for(int i = 0 ; i< dsdv.so_dv ;i++ )
	{
		cout<<"
 Nhap thong tin dien vien thu "<<i+1<<"  " ;
		Nhap1DV(dsdv.list_dv[i]) ;
	}
}
// Ham xuat thong tin cua cac dien vien
void XuatDSDV(DS_DIENVIEN dsdv)
{
	cout<<"
****Thong Tin Cua Cac Dien Vien  *****";
	for(int i=  0 ; i< dsdv.so_dv ;i++ ) 
	{
		cout<<"
 Thong tin cua dien vien thu " <<i+1<<" la :" ;
		Xuat1DV(dsdv.list_dv[i] );
	}
}

// Ham nhap thong tin cau mot bo phim 
void Nhap1BoPhim(PHIM &phim )
{
	fflush(stdin) ;
	cout<<"
 Moi nhap ma so phim : ";
	cin.getline(phim.MaSoPhim ,100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap ten phim : ";
	cin.getline(phim.TenPhim, 100 ) ;

	fflush(stdin);
	cout<<"
 Moi nhap the loai  'co 3 the loai: hinh su , tinh cam , hai ' : ";
	cin.getline(phim.TheLoai , 100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap ten dao dien : ";
	cin.getline(phim.TenDaoDien , 100 ) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap danh sach cac dien vien tham gia  :";
	NhapDSDV(phim.DanhSachDienVien) ;

	fflush(stdin) ;
	cout<<"
 Moi nhap nam san xuat : ";
	cin>>phim.NamSanXuat ;

	fflush(stdin) ;
	cout<<"
 Moi nhap hang san xuat : ";
	NhapHangSX(phim.HangSanXuat) ;
}
// Ham xuat thong tin cua mot bo phim
void Xuat1BoPhim(PHIM phim )
{
	cout<<"
		 Ma so phim : "<<phim.MaSoPhim ;
	cout<<"
		 Ten phim  :" <<phim.TenPhim ;
	cout<<"
		 The loai : "<<phim.TheLoai ;
	cout<<"
		 Ten dao dien :"<<phim.TenDaoDien ;
	XuatDSDV(phim.DanhSachDienVien) ;
	cout<<"
		 Nam san xuat : "<<phim.NamSanXuat ;
	XuatHangSX(phim.HangSanXuat) ;
}
// Ham nhap DS cac bo phim
void NhapDSPHIM(DS_PHIM &dsp )
{
	do
	{
		cout<<"
 Moi nhap so bo phim : ";
		cin>>dsp.so_phim; 
		if(dsp.so_phim < 0 || dsp.so_phim > KT )
			cout<<"
 So bo phim khong hop le ! Kiem tra va nhap lai ! ";
	}while(dsp.so_phim < 0 ||  dsp.so_phim >KT ) ;
	cout<<"
 THONG TIN CHI TIET VE CAC BO PHIM VUA NHAP ";
	for(int i = 0 ; i< dsp.so_phim ;i++ )
	{
		cout<<"
 Moi nhap thong tin cua bo phim thu : "<<i+1;
		Nhap1BoPhim(dsp.list_phim[i] ) ;
	}
}
// Ham xuat thong tin cua cac bo phim
void XuatDSPHIM (DS_PHIM dsp)
{
	cout<<"
 THONG TIN CAC BO PHIM BAN VUA NHAP " ;
	for(int i = 0 ; i< dsp.so_phim; i++ )
	{
		cout<<"
 Thong Tin bo phim thu " << i+1 ;
		Xuat1BoPhim(dsp.list_phim[i] ) ;
	}
}
void main()
{
	/*DIENVIEN DV ;
	Nhap1DV(DV);
	Xuat1DV(DV) ;*/

	/*DS_DIENVIEN DSDV ;
	NhapDSDV(DSDV);
	XuatDSDV(DSDV) ;*/

	/*HANGSANXUAT HSX ;
	NhapHangSX(HSX);
	XuatHangSX(HSX) ;*/

	/*PHIM phim ;
	Nhap1BoPhim(phim) ;
	Xuat1BoPhim(phim) ;
*/
	DS_PHIM DSP;
	NhapDSPHIM(	DSP );
	XuatDSPHIM(DSP) ;

	_getch() ;
}
*grab popcorn* viết 21:02 ngày 30/09/2018

Thay char TenDienVien[100] bằng char *TenDienVien; là hết.
Còn vì sao mình không tìm ra.
Và khi thay bằng con trỏ thì nhớ cấp phát trước khi nhập tên diễn viên là ok nhé.

dv.TenDienVien = (char *)malloc(100*sizeof(char));
cin.getline(dv.TenDienVien, 100 ) ;
Gió viết 20:58 ngày 30/09/2018

Có thể quá bộ nhớ thay 100= 20 hoặc ít hơn thử xem

Bài liên quan
0