2013-10-10 41 views
-1

所以我試圖找到pat.txt最低的一年,最高年don.txt流量不正確:邏輯是循環和IFS的

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 

唐.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

你試過調試它嗎? –

+1

請使用更好的變量名稱..它使人們試圖閱讀你的代碼能夠更容易地遵循它。什麼是「日期」和「日期1」?一個應該是最古老的病人的一年?爲什麼不稱他們爲「newestPatientDate」和「oldestDonerDate」? – PherricOxide

+0

轉到您覺得自己最沒信心的代碼,提出一個關於它的問題,然後嘗試回答該問題。 – Leonardo

回答

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關於更好的變量名稱。如果你選擇好的變量名稱,編程是更容易