2011-11-29 44 views
1

我試圖將數據從一個文件中的數據進行比較,看它是否「適合」的另一個內。我正在考慮將一組作爲「孔」,另一組作爲「塊」。我試圖看看是否所有的圓形塊都適合在至少一個圓孔內。如果他們都合適,我想輸出「是」。如果一個不適合,我想輸出「不,所有的圓塊都不適合至少一個洞。」我試圖將數據從兩個輸入文件進行比較,看看一組小於其他

繼承人我的代碼:

bool fits = false; 

    for (int i=0; i<M; i++) 
    { 
     if (btype[i] == Circles) 
     { 
     CA[i] = (3.14 * (D[i] * D[i])); 
     } 

     for (int j=0; j<N; j++) 
     { 
     if (htype[j] == Circle) 
     { 
      CA[j] = (3.14 * (A[j] * A[j])); 
     } 

     if (CA[i] < CA[j]) 
     { 
      fits = true; 
      break; 
     } 
     } 

     if (!fits) 
     { 
     break; 
     } 
    } 
    if (fits) 
    { 
     cout << "5. YES, all circle blocks fit a hole. " 
      << endl; 
    } 
    else 
    { 
     cout << "5. NO, all circle blocks don't fit a hole. " 
      << endl; 
    } 

的代碼不是演戲的權利。當我把一個圓圈值放到輸入文件中,它肯定會讓程序成爲否,它會給我一個YES。我無法弄清楚。

+0

你的if語句在哪裏打印YES或NO是執行'N'次的for循環的內部。所以你總是會得到'N'輸出線。 –

+0

我如何把它的循環外,仍然使當它是依賴於if條件(CirArea [I] lprater1

+0

正確縮進時它(略)更易於理解。 –

回答

1

你有if語句,做印刷的最後一個內部的for循環。

for (int j=0; j<N; j++) 
{ 
    if (htype[j] == Circle) 
    { 
     CirArea[j] = (3.14 * (A[j] * A[j])); 
    } 


    if (CirArea[i] < CirArea[j]) 
    { 
     cout << "5. YES, all circle blocks fit in a hole. " << endl; 
    } 
    else 
    { 
     cout << "5. NO, all circle blocks don't fit a hole. " << endl; 
    } 
} 

如果你想依靠,如果一個不適合打印的消息,如果一切符合然後打印另一條消息,你可以不喜歡這樣。

float fits = 0.0; 
float nofit = 0.0; 
bool result; 

for (int i=0; i<M; i++) 
{ 
    result = false; 

    if (btype[i] == Circles) 
    { 
    CirArea[i] = (3.14 * (D[i] * D[i])); 
    } 

    for (int j=0; j<N; j++) 
    { 
    if (htype[j] == Circle) 
    { 
     CirArea[j] = (3.14 * (A[j] * A[j])); 
    } 

    if (CirArea[i] < CirArea[j]) 
    { 
     result = true; 
     //exit inner loop 
     break; 
    } 
    } 

    if (!result) 
    { 
    //exit outer loop 
    break; 
    } 
} 

if (result) 
{ 
    cout << "5. YES, all circle blocks fit in a hole. " << endl; 
} 
else 
{ 
    cout << "5. NO, all circle blocks don't fit a hole. " << endl; 
} 
+0

如果我拉出來,程序將無法編譯,因爲錯誤:「我改變了新的ISO「的」作用域 – lprater1

+0

的名稱查找所以我需要聲明INT I = 0;和int j = 0; for循環之外? – lprater1

+0

對不起,你不能像我原來指定的那樣把它拉出來,我是小白,我沒有看到你是如何進行比較的。我已經更新了我的答案。 – link664

0

COUT的線是內部爲循環與Ñ迭代,這是內部另一循環與中號迭代中,看起來像它應該打印M * N個

相關問題