2016-09-28 85 views
0

我一直有意編寫代碼來顯示suceceding元素大於前面元素的次數,但是我不認爲我有正確的邏輯。這是我的代碼。善良給我建議改進代碼以獲得所需的輸出。程序顯示後續元素大於前面元素的次數

int main(void) 
{ 
    int arr[10] = { '\0' }; 
    int i = 0, n = 0, count = 0, j = 0; 
    printf("\nEnter the number of elements in the array: "); 
    scanf("%d", &n); 
    printf("\nEnter the elements"); 
    for (i = 0; i < n; i++) 
    { 
     scanf("%d", &arr[i]); 
    } 
    printf("\nThe array elements are: "); 
    for (i = 0; i < n; i++) 
    { 
     printf("%d\t", arr[i]); 
    } 
    for (i = arr[0], j = arr[1]; i < arr[n], j = arr[n]; i++, j++) 
    { 
     if (i < j) 
      count++; 
    } 
    printf("\nThe count is: %d", count); 

    return 0; 
} 
+2

第一件事是第一件事。正確格式化您的代碼。第二。你爲什麼用引用常量初始化一個'int'數組?這不是一個錯誤,但很奇怪。 –

+0

你嘗試過甚至基本的調試嗎? –

+0

三。你對循環中的數組元素及其索引一無所知。你必須排除。在你做好之前,我建議你避免在'for'語句中使用複雜的結構。 –

回答

0

問題出現在最後一個循環中。你正在爲迭代做一件很奇怪的事情。

簡化:

for(i=0;i<n;i++){ 
     if(arr[i]<arr[i+1]) 
      count++; 
} 
+0

由於代碼訪問'arr [i + 1]',所以循環條件需要爲'i + 1

+0

感謝您的幫助 – StephenCurry30

1

你的最後一個for循環的路要走。將索引增加到數組中通常更容易。
例如,假設你有這樣的數組:

5 4 3 2 1 

您的代碼做到這一點:

  1. 您的循環分配:5i4j
  2. 那麼你應該比較ij(這是正確的現在
  3. 接下來遞增ij,所以現在他們分別爲65。這不是你想要的。

此外,您的循環中的條件是錯誤的。一旦你看到的值(例如第一個元素)大於最後一個元素,它就會跳出循環。在我的示例數組中,它會馬上斷開。 (i=5不低於arr[n]=1少。


相反,你應該增加索引到陣列中,打破了循環,當你到達最後一個索引。

for(i = 0, j = 1; j < n; i++, j++) { 
    if(arr[i]<arr[j]) 
     count++; 
} 

你也想確保n小於或等於10,否則您將寫入數組以外。
加上

if(n > 10) { 
    n = 10; 
} 

if(n > 10) { 
    printf("Max number of elements is 10.\n"); 
    return -1; 
} 

你以後得到n

+0

@KlasLindbäck哎呀。我打算把'j'。我修好了它。謝謝。 – Riley

+0

感謝您提供這樣的詳細解決方案。 – StephenCurry30

0

這應該爲你做這項工作。主要成分是環

for (i = 0; i < n-1; i++) 
    { 
     if (arr[i] < arr[i+1]) 
      count++; 
    } 

可以說你有5個元素。 i將評估從0到3。 在這種情況下,你是比較arr[i]arr[i+1]這意味着,循環會比較 arr[0]arr[1]arr[1]arr[2]arr[2]arr[3]最後arr[3]arr[4],這是你想要達到的目標。

#include <stdio.h> 

#define MAX_ELEMENTS 10 

int main(void) 
{ 
    int arr[MAX_ELEMENTS] = { '\0' }; 
    int i = 0, n = 0, count = 0; 
    printf("\nEnter the number of elements in the array: "); 
    scanf("%d", &n); 

    if (n > MAX_ELEMENTS) 
    { 
     printf("Only %d elements supported\n", MAX_ELEMENTS); 
     return -1; 
    } 

    printf("\nEnter the elements"); 
    for (i = 0; i < n; i++) 
    { 
     scanf("%d", &arr[i]); 
    } 

    printf("\nThe array elements are: "); 

    for (i = 0; i < n; i++) 
    { 
     printf("%d\t", arr[i]);   
    } 

    for (i = 0; i < n-1; i++) 
    { 
     if (arr[i] < arr[i+1]) 
      count++; 
    } 
    printf("\nThe count is: %d", count); 

    return 0; 
} 
+0

謝謝你的關注 – StephenCurry30