Логика неверна в потоке циклов и ifs

Поэтому я пытаюсь найти самый низкий год в 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, которое делает равенство. На данный момент он находит самого высокого пациента и самого низкого донора. Я должен перевернуть их. Потратил часы, пытаясь понять это, я был бы очень признателен, если бы кто-то увидел мою ошибку. Я уверен, что это глупая маленькая ошибка, но для жизни я просто не могу найти это

-1

Решение

Я в замешательстве, почему не простой код?

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 по поводу лучших имен переменных. Программирование Полегче если вы выбираете хорошие имена переменных.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]