掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ソートを実現するには? (ID:62029)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
一応こういうのを作ってみました。 #include <iostream.h> /**プロトタイプ宣言**/ int main(void); void swap(short *x, short *y); void sort(short nPassengerCount[], short nCarNo[]); /**クラスCCarの定義**/ class CCar { private: short m_nCarNo; //車両番号 short m_nPassengerCount; //乗客数 public: CCar(){} //コンストラクタ short GetCarNo(); //車両番号を取得する。 short GetPassengerCount(); //乗客数を取得する。 void SetCarNo(short nCarNo); //車両番号をセットする。 void SetPassengerCount(short nPassengerCount); //乗客数をセットする。 void DisplayPassengerCount(); //乗客数を表示する。 void EnterPassengerCount(); //乗客数を入力する。 ~CCar(){}; //デストラクタ }; /**車両番号を取得する**/ short CCar::GetCarNo() { return m_nCarNo; } /**乗客数を取得する**/ short CCar::GetPassengerCount() { return m_nPassengerCount; } /**車両番号をセットする**/ void CCar::SetCarNo(short nCarNo) { m_nCarNo=nCarNo; } /**乗客数をセットする**/ void CCar::SetPassengerCount(short nPassengerCount) { m_nPassengerCount=nPassengerCount; } /**乗客数を入力する**/ void CCar::EnterPassengerCount() { static int i=0; short nPassengerCount; if(i==5){ i=0; } cout<<++i<<"両目の乗客数を入力してください:"; cin>>nPassengerCount; SetCarNo(i); SetPassengerCount(nPassengerCount); } /**並び替えた車両番号、乗客数の表示**/ void CCar::DisplayPassengerCount() { cout<<m_nCarNo<<"両目の乗客数は"<<m_nPassengerCount<<"人です。\n"; } /**main**/ int main(void) { int i; char cont; short nCarNo[5], nPassengerCount[5]; /**オブジェクト生成**/ CCar train[5]; /**乗客数の入力**/ do{ for(i=0; i<5; i++){ train[i].EnterPassengerCount(); } cout<<"これでいいですか?[Y/N]::"; cin>>cont; }while(cont=='n'); /**車両番号、乗客数を取得**/ for(i=0; i<5; i++){ nCarNo[i]=train[i].GetCarNo(); nPassengerCount[i]=train[i].GetPassengerCount(); } sort(nPassengerCount, nCarNo); /**結果表示**/ for(i=0; i<5; i++){ train[nCarNo[i]-1].DisplayPassengerCount(); } return(0); } /**入れ替え**/ void swap(short *x, short *y) { short temp = *x; *x = *y; *y = temp; } /**車両番号と乗客数を昇順にソート**/ void sort(short nPassengerCount[], short nCarNo[]) { int i, j; for(i=0; i<4; i++){ for(j=i+1; j<5; j++){ if(nPassengerCount[i] > nPassengerCount[j]){ swap(&nPassengerCount[i], &nPassengerCount[j]); swap(&nCarNo[i], &nCarNo[j]); } } } }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.