30/09/2018, 18:23

Struct c++ :Sắp tên tên môn học tăng dần

sửa giúp mình hàm sắp xếp môn hoc tăng dần theo tên với , sai gì không rõ ạ

#include<iostream>
#include<iomanip>
using namespace std ;
#include<string.h>
#include<conio.h>
struct MONHOC
{
	char MaSo[20] ;
	char ten[50] ;
	int tinchi ;
};
struct DS_MONHOC 
{
	MONHOC * list ;
	int n ;
};
void NhapMH(MONHOC &x)
{
	cout<<"
 Nhap ma mon hoc :" ;
	fflush(stdin);
	cin.getline(x.MaSo , 20 ) ;
	cout<<"
 Nhap ten mon hoc :" ;
	//cin.getline(h->ten , 20 );
	cin.getline(x.ten , 20 );
	cout<<"
 nhap so tin chi :" ;
	cin>>x.tinchi ;
}
// ham xuat thong tin cua mot mon hoc su dung con tro
void Xuat_MH(MONHOC &h )
{
	cout<<"
"<<h.MaSo<<setw(20)<<h.ten<<setw(20)<<h.tinchi ;
}
// nhap danh sach mon hoc
void NhapDS_MONHOC(DS_MONHOC &dsmh , int pn )
{
	dsmh.list = new MONHOC[pn] ;
	dsmh.n = pn ;
	for(int i = 0 ;i <dsmh.n  ; i++ )
	{
		cout<<"
nhap mon hoc thu " <<i<<endl ;
		NhapMH(dsmh.list[i]) ;
	}
}
// xuat danh sach mon hoc 
void XuatDS_MONHOC(DS_MONHOC dsmh  )
{
	cout<<"Ma so "<<setw(20)<<" ten mon hoc"<<setw(20)<<"tin chi ";
	for(int i = 0 ;i <dsmh.n  ; i++ )
	{
		//cout<<"
thong tin  mon hoc thu " <<i<<endl ;
		Xuat_MH(dsmh.list[i]);
	}
}
// sap xep cac mon hoc tang dan theo ten 
void SapXep(DS_MONHOC &dsmh )
{
	for(int i = 0 ;i< dsmh.n  -1  ;i ++ )
	{
		for(int j =i+1 ; j< dsmh.n ;j++ )
		{
			if(strcmp(dsmh.list[i].ten ,dsmh.list[j].ten)> 0 )
			{
				MONHOC mh = dsmh.list[i] ;
				dsmh.list[i] = dsmh.list[j] ;
				dsmh.list[j] = mh ;
			}
		}
	}
}
void main()
{
	int n ;
	DS_MONHOC dsmh ;
	dsmh.list = NULL ;
	dsmh.n = 0 ;
	do
	{
	cout<<"
 Moi nhap so luong mon hoc ";
	cin>>n;
	if(n <= 0 )
		cout<<"
 Moi nhap so luong lon hon 0 ";
	}while(n <= 0);
	NhapDS_MONHOC(dsmh ,n );
	XuatDS_MONHOC(dsmh);
	cout<<"
 Danh sach mon hoc sau khi sap xep tang dan la :" ;
	SapXep(dsmh );
	_getch();	
}
Mai Anh Dũng viết 20:37 ngày 30/09/2018

@Lang_K_Doanh có thể nói rõ hơn là code có khả năng bị lỗi ở đoạn nào không?

Bài liên quan
0