2015-10-24 27 views
-1

Geeting! 我正在一個控制檯應用程序中讀取數字把它們放在一個數組中,輸出告訴你這些數字在數組中的位置,其中數字大於1000. 所以如果你有這樣一個數組:For循環並消除重複

int be[] = { 1001, 1001, 1001, 101, 1001 }; 

輸出應該告訴你,從第一個到第三個位置你有1000個數字,從第五個到最後一個位置你有1000個數字。所以結局會是這樣:

1 3 5 6 

我與解決它,如果是這樣的:

for (int i=1;i<=5;i++) 
    { 
     if (be[i]>=1000) 
      { 
       cout<<i<<" "; 
       for (int j=1;j<5-1;j++) 
       { 
        if (be[i+j]<=1000) 
        { 
         cout<<i+j-1<<" "; 
         break; 
        } 
       } 
      } 
    } 

和主要的問題是,結果會是這樣的:

1 3 2 3 3 3 5 6 

所以在休息之後,我希望第一個for循環繼續,第二個循環結束,但我不完全知道該怎麼做。如果有人從這個模糊的解釋中得到了基本的想法,並且可以給我一些提示或提示,我將非常感激!

回答

2

你只需要一個循環和一堆檢查。 下面是一些僞代碼:

loop through elements 
    if number > 1000 and not started 
     print index 
    else if number <=1000 
     started = false 
     print index-1 
if started = true 
    print index - 1 // last element of array 
+0

哦,不,這不是C++中的C++標記的問題! – g24l

+0

僞代碼沒有規則。 OP想要一個提示,而不是完成任務的C++代碼。我不知道你甚至認爲這是什麼語言。 – ergonaut

+1

它被標記爲C++,問題是關於循環,但任何我只是諷刺。 – g24l

0

要使第一循環繼續,其中第二收盤僅做

int j = 1; 
for (int i=j;i<=5;i++) 
{ 
    if (be[i]>=1000) 
     { 
      cout<<i<<" "; 
      for (;j<4 and be[i+j]>1000 ;j++); 
      if(j < 5) 
      { 
       cout<<i+j-1<<" "; 
      } 
     } 
} 

,如果你想要做什麼還沒有真正檢查?

1

唯一的評論:你有你的陣中沒有第6位,這就是爲什麼我輸出5 5 LIK 從5元至5元 http://ideone.com/k3gF03

int main(void) { 
    int be[] = { 1001, 1001, 1001, 101, 1001 }; 
    int beSize = (sizeof(be)/sizeof(*be)); 
    bool fl = false; 
    int i=0; 
    for (i;i<beSize;i++) 
    { 
     if (be[i]>=1000) 
     { 
      if (!fl) { 
       fl=true; 
       cout<<i+1<<" "; 
      } 
     } else { 
      if (fl) { 
       fl=false; 
       cout<<i<<" "; 
      } 
     } 
    } 
    if (fl) { cout<<i<<" "; } 
    return 0; 
} 
0

如果我理解正確的,你需要的東西像下面

#include <iostream> 

int main() 
{ 
    const size_t low_bound = 1000; 

    int be[] = { 1001, 1001, 1001, 101, 1001 }; 
    const size_t N = sizeof(be)/sizeof(*be); 

    for (int x : be) std::cout << x << ' '; 
    std::cout << std::endl; 

    for (size_t i = 0; i < N; i++) 
    { 
     if (be[i] >= low_bound) 
     { 
      size_t j = i + 1; 
      while (j < N && be[j] >= low_bound) j++; 
      --j; 
      std::cout << i + 1 << "-" << j + 1 << " "; 
      i = j; 
     } 
    } 

    std::cout << std::endl; 
} 

程序輸出是

1001 1001 1001 101 1001 
1-3 5-5 

要考慮到數組的下標0

0

非常簡單,毫不客氣的代碼開始。抱歉。 C++中的數組以索引0開頭。所以有第一個虛擬元素。

int be[] = { 99, 1001, 1001, 1001, 101, 1001 }; // 99 is dummy 
bool in=false; 
int j; 
int i; 
for (i=1;i<=5;i++) 
{ 
    if (be[i]>=1000 && in==false) 
    { 
     in=true; 
     cout << i << " "; 
    } 
    if (be[i]<1000 && in==true) 
    { 
     in=false; 
     cout << i-1 << " "; 
    } 
} 

if (be[i]<1000 && in==true) 
    cout << i << " "; // or i-1 if you prefer the last one