2014-10-04 28 views
-1

我正在編寫一個軟件,遇到問題。 我試圖做的是通過一個數組,其元素可以只有1或0,並寫出數組中某個給定點可以執行的最大步數。 規則是人們只有在相同的數字時纔可以執行一個或多個步驟。假設我的數組看起來像這樣: 1,0,0,0,0,1,1,1,0 我從頭開始,我應該只能夠一次,因爲1之後是0,而我只有在輪到我時,才能改變數字。所以如果我從第二個元素開始,我可以步驟1或4個步驟。現在,我想寫出當前玩家可以步進的最大步數,但由於某種原因,它會顯示最大步數+ 1.C編程 - 數組中的最大步數顯示超過最大值

每個變量都是int類型的。 墓=陣列,J,max_lepes 0

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int tomb[200]={1,0,1,1,1,0,0,1,1,0,1}; // Fo tomb 
    int max_lepes,akt_pos,j,i,game_type=0; 

    printf("Valasszon jatek tipust (1 Ember vs Szamitogep, 2 Ember vs Ember): "); 
    scanf("%d", &game_type); 


    if (game_type==1) { 


    } else if (game_type==2) { 
     // Aktualis tomb kiirasa 
     printf("\nAz aktualis szin tomb: "); 
     for (i=0; i<11; ++i) { 
      printf("%d ", tomb[i]); 
     } 
     i==0; 
     // Max lepesek kiirasa 
     max_lepes == 0; 
     akt_pos == 0; 
     for (j=0; j<11; ++j) { 
      if (tomb[j]==tomb[j+1]) { 
       max_lepes=max_lepes+1; 
      } else { 
       printf("\nMaximum lepesek szama= %d", max_lepes); 
       break; 
      } 
     } 

    } else { 
     printf("Rosz szamot irt be, kerem irjon be 1-et vagy 2-et."); 
    } 


    return 0; 
} 
+0

您的代碼將打印0然後停止。 – 2014-10-04 09:58:54

+0

實際上由於某種原因寫出2。 – Maniak 2014-10-04 09:59:42

+1

不是您給我們的代碼...如果您的數組以1和0開頭,則不是。您需要發佈您正在運行的實際程序。 – 2014-10-04 10:00:48

回答

1
max_lepes == 0; 
akt_pos == 0; 

初始化應該是

max_lepes = 0; 
akt_pos = 0; 
+0

謝謝,這解決了這個問題。 – Maniak 2014-10-04 10:11:23

+0

@Maniak您還有其他錯誤...您打印的值將太小,您只會打印第一個位置的值。 – 2014-10-04 10:13:36

+0

我知道,它只是用於測試,我現在用1初始化並且創建了一個實際位置變量來保存實際位置並從該值開始forloop。 – Maniak 2014-10-04 10:34:08

1
 i==0; 
     max_lepes == 0; 
     akt_pos == 0; 

這些不分配變量爲0。==是用於比較並=爲分配。所以將它們改爲

 i=0; 
     max_lepes = 1;// because max can be at least 1 
     akt_pos = 0;