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();
}
Bài liên quan
@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?