所以我试图找到pat.txt中最低年份和don.txt中最高年份:
Pat.txt
Androf O kidney 24 2012
Blaren B kidney 35 2010
Cosmer A kidney 35 2000
Eralod O heart 53 2009
Forend B kidney 31 2003
Don.txt
Zerk B kidney 20 2009
Rampe A kidney 31 2005
Darech B kidney 34 2008
Seo A kidney 26 2010
Yuio B kidney 26 2013
代码如下:
struct Person {
string surname;
string BType;
string organ;
int age;
int year, ID, IDp;
} Patient[50], Donor[50];
然后感兴趣的代码:
int Date = 5000;
int Datel = 1000;
for (i = 0; i < 6; i ++){
for (i1 = 0; i1 < 6; i1++){
if ((Patient[i].BType == Donor[i1].BType) && (Patient[i].organ == Donor[i1].organ)){
if (Patient[i].year < Date){
Date = Patient[i].year;
//}
if ((Patient[i].year == Date ) && (Donor[i1].year > Datel)){
Date = Patient[i].year;
Datel = Donor[i1].year;
cout << Date << " " << Datel << "\n";
}
}
}
}
}
目前我获得最高患者和最低捐献者(2010-2009),我需要获得(2003-2013)
我觉得其中一个if语句中的逻辑是不正确的。目前它正在找到最高的患者和最低的捐赠者。我必须翻转它们。花了好几个小时试图解决这个问题,如果有人能看到我的错误,我会非常感激。我确定这是一个愚蠢的小错误,但对于我的生活我只是找不到它
答案 0 :(得分:2)
我很困惑,为什么不是简单的代码?
int oldestPatientDate = 5000;
int newestDonorDate = 1000;
for (i = 0; i < 6; i++)
if (oldestPatientDate > Patient[i].year)
oldestPatientDate = Patient[i].year;
for (i = 0; i < 6; i++)
if (newestDonorDate < Donor[i].year)
newestDonorDate = Donor[i].year;
cout << oldestPatientDate << " " << newestDonorDate << "\n";
但也许这个任务还有你所描述的更多。
完全同意PherricOxide关于更好的变量名称。如果选择好的变量名,编程就会更容易。