2016-10-25 6 views
0

配列の修正間隔で数値を増やす方法を考えています。入力した数字が3で、次に配列の最初の行に(3,3,3,3)があり、次に2番目の行に(3,4,5,6)、3番目の行(3,5 、7,9)など。私のコードからは、最初の行に対して(3,4,5,6,7)しか得られません。私は助けが必要です。修正間隔の数字を増やす

#include <stdio.h> 

    #define NROW 4 
    #define NCOL 5 

void initialize(int a[4][5]) { 
    int x, y; 

    for (x = 0; x < 4; x++) { 
     for (y = 0; y < 5; y++) 
      a[x][y] = 0; 
    } 
} 

void disp_arr(int a[4][5]) { 
    int x, y; 

    for (x = 0; x < 4; x++) { 
     for (y = 0; y < 5; y++) { 
      printf("%i ", a[x][y]); 
     } 
     printf("\n"); 
    } 

} 

int assign(int a[4][5], int starting_no) { 
    int x, y; 

    for (x = 0; x < 1; x++) { 
     for (y = 0; y < 5; y++) { 
      a[0][y] = starting_no; 
      starting_no++; 
     } 
    } 

    return a[3][4]; 
} 

int main(void) { 

    int a[4][5], b; 

    initialize(a); 
    disp_arr(a); 

    printf("Please select a starting number :\n"); 
    scanf("%i", & b); 

    assign(a, b); 
    disp_arr(a); 

    printf("The biggest number in the array is : %i \n"); 


    return 0; 
} 

答えて

0

あなたのアサイン機能は次のようになりなければならない。他のすべてのコードでは、あなたの定義(NROW、NCOL)を使用する

int assign(int a[NROW][NCOL], int starting_no) 
{ 
    int x, y, old_starting_no; 

    old_starting_no = starting_no; 

    for (x = 0; x<NROW; x++) 
    { 
     starting_no = old_starting_no; 

     for (y = 0; y<NCOL; y++) 
     { 
      a[x][y] = starting_no; 
      starting_no += x; 
     } 
    } 

    return a[NROW-1][NCOL-1]; 
} 

てみてください、それは:)

+0

何かを定義するには、noローミングサービスを行うものではありませんNROW-1とNCOL-1の使用について説明できますか? – WLL

+0

見てください:https://msdn.microsoft.com/library/teas0593.aspx。 #defineは、識別子またはパラメータ化された識別子とトークン文字列との関連付けであるマクロを作成します。だから、あなたがそれを使用する多くの場所ではなく、あなたが定義する場所を1つだけ変更する必要があります。 – duDE

+1

申し訳ありません:) – WLL

関連する問題