2013-11-23 41 views
0

基本上我試圖問的是,是否有讀取數組中的數據,以便您可以爲它創建一個'case'。預讀數組以預測後面的結果C

例如:您陣列只有整數,如:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3

,你想嘗試做的是創造一個什麼coutdown直到下一個非零數字。基本顯示倒計時。有沒有辦法做到這一點?

+2

請解釋更多!我不明白... – MeNa

+0

基本上我想顯示的倒計時,直到下一個非零數字 爲第一個案件...直到它遇到數字'4'顯示從倒數第一0到倒計時4所以4,3,2,1「實際數字」。然後,從那個4到1只有1個零,所以:1,「實際數字」等。 –

+0

那麼,你允許多次讀取數組嗎?你的程序的目的是什麼? –

回答

1

此代碼:

#include <stdio.h> 

int main(void) 
{ 
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, }; 

    int a_size = sizeof(array)/sizeof(array[0]); 

    int i = 0; 
    while (i < a_size) 
    { 
     if (array[i] == 0) 
     { 
      int j; 
      for (j = i; j < a_size; j++) 
       if (array[j] != 0) 
        break; 
      printf("%d\n", j - i); 
      i = j; 
     } 
     else 
      i++; 
    } 
    return 0; 
} 

產生這樣的輸出:

4 
1 
12 

如果這是你想要的東西,那是大概你所需要的。如果它不是你想要的,你需要更清楚地解釋你想要的是什麼。


修訂了修正後的預計輸出代碼:

#include <stdio.h> 

int main(void) 
{ 
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, }; 

    int a_size = sizeof(array)/sizeof(array[0]); 

    int i = 0; 
    while (i < a_size) 
    { 
     if (array[i] == 0) 
     { 
      int j; 
      for (j = i; j < a_size; j++) 
       if (array[j] != 0) 
        break; 
      int k = j - i; 
      while (k > 0) 
       printf(" %d", k--); 
      i = j; 
     } 
     else 
     { 
      printf(" '"); 
      i++; 
     } 
    } 
    putchar('\n'); 
    return 0; 
} 

修訂輸出:

4 3 2 1 ' 1 ' 12 11 10 9 8 7 6 5 4 3 2 1 ' 
+0

啊,有點。 12我想象的是總的大小(20) - 4 - 3 - 1 = 12。我會盡力解釋它好一點: Couter:4 3 2 1'1'12 11 10 9 8 7 6 5 4 3 2 1' array:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3 有什麼方法可以表示這種情況嗎? –

+0

12是數組中1和3之間的零數(至少,它是如何計算的)。它也是長度(20)減去另外兩組零的長度,減去非零的數量。是的,請嘗試再次解釋您想要的內容(編輯問題 - 主要是添加信息),以及您如何確定答案,以及給定數據的預期答案。 –