循环和 if 流中的逻辑不正确

Logic is incorrect in the flow of loops and ifs

本文关键字:不正确 if 循环      更新时间:2023-10-16

所以我试图找到pat的最低年份.txt和don.txt的最高年份:

帕特.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

唐.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 语句中的逻辑不正确。目前,它正在寻找最高的患者和最低的捐赠者。我必须翻转它们。花了几个小时试图弄清楚这一点,如果有人能看到我的错误,我将不胜感激。我敢肯定这是一个愚蠢的小错误,但对于我的生活,我就是找不到它

我很

困惑,为什么不是简单的代码?

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 关于更好的变量名称。如果选择好的变量名,编程会更容易