私はID、グレード、年、および年の値を持つ申請者のリンクリストを作成する(クラスとして保存されている)数値(スコア)。私はこのリストを検索して最高得点の申請者を検索し、それを返す関数を書く必要があります。私は最高得点を見つけることができましたが、私はその特定の応募者のクラス全体ではなく、その価値を返すだけです。私のコードを変更した後は、4つの値(ID、グレード、年、およびスコア)のそれぞれの出力を取得するようになりましたが、それらはすべて初期値である0を示します。ここにすべての関連コードがあります。C++:リンクされたリスト内のクラスの最高値を見つける
#include <iostream>
#include <fstream>
#include <iomanip>
#include "applicant.cpp"
using namespace std;
struct Linkapp
{
Applicant person;
Linkapp *next;
};
class Linkthem
{
protected:
Linkapp *start;
public:
Linkthem(void);
void link(Applicant);
void printthem(void);
Applicant returnbest(void);
};
Applicant best;
Linkthem::Linkthem()
{
start = NULL;
};
void
Linkthem::link(Applicant one)
{
Linkapp *p;
p = new Linkapp;
p->person = one;
p->next = start;
start = p;
}
Applicant Linkthem::returnbest (void)
{
Linkapp *travel;
travel = start;
best = travel->person;
while (travel != NULL)
{
if (travel->person.return_value() > best.return_value())
best = travel->person;
travel = travel->next;
}
return best;
}
int
main()
{
ifstream infile;
Applicant fellow;
Linkthem mylist;
int id, yrs;
char knowledge;
cout.setf(ios::fixed);
cout.precision(2);
infile.open("applicnt.dat");
while (!infile.eof())
{
infile >> id >> knowledge >> yrs;
fellow.store_id(id);
fellow.store_skill(knowledge);
fellow.store_years(yrs);
mylist.link(fellow);
}
mylist.printthem();
cout << best.return_id() << ' ' << best.return_skill() << ' ';
cout << best.return_years() << ' ' << best.return_value() << endl;
fellow = mylist.returnbest();
return 0;
}
そして "applicant.cpp"
class Applicant
{
protected:
int id;
char skill;
int years;
float value;
void calc_value(void); // <--- NOT for general use, called by return_value
public:
Applicant(void);
void store_id(int);
void store_skill(char);
void store_years(int);
int return_id(void);
char return_skill(void);
int return_years(void);
float return_value(void);
};
から問題は間違いなく、私はちょうど場所がわからないんだけど、私のreturnbest機能内にあります。
外観は - グローバル変数は 'best'に更新されたときを考えると、あなたは実際に... – Nim
何らかの理由でそれを使用するとき:: std :: listを使用していない? –
Aconcagua
@Aconcagua:これは宿題なのでおそらく* "私は仕事に取り組んでいます" * –