2017-03-25 16 views
0

sumという関数を呼び出すことによって、1次元の2次元配列の合計を求めるプログラムを作成しようとしています。しかし、私は欠けているエラーに走っている{しかし、私はこれがどこに行くのか分からない?関数を呼び出す2次元配列の合計

#include <stdio.h> 

int sum(int s[3][4]) 
int main(int argc, char *argv[]) 
{ 
int s[3][4], c, r, sum = 0; 

for (r = 0; r <= 2; r++) 
{ 
    for (c = 0; c <= 3; c++) 
    { 
     printf("Enter value for s[%d][%d]: ", r, c); 
     scanf("%d", &s[r][c]); 
    } 
} 
printf("The sum is: %d\n", sum(s[3][4]); 
return 0; 
} 

int sum (int s[3][4]) 
{ 
for (r = 0; r <= 2; r++) 
{ 
    for (c = 0; c <= 3; c++) 
    { 
     sum = s[r][c] + sum; 
    } 
} 
} 
+0

関数の宣言と 'main()'の定義の間にはセミコロンがありません。 –

+0

コンパイラが問題のある場所の近くにあなたを指摘してください。メッセージを注意深く読んで、コードを確認してください。 – Olaf

+1

@JonathanLefflerさらに多くのエラーがあり、すべてのエラーをリストした回答を作成しました。あなたが再び開くことができれば、私はそれを投稿することができます。 –

答えて

0

最初のものは、あなたが関数名としてsumを使用することはできません。そしてあなたのコードには文法上の間違いがあります。ここにいくつかの固定コードがあります。

#include <stdio.h> 

int sumx(int s[3][4]); 

int main(void) 
{ 
    int c, r, sum = 0; 
    int s[3][4]; //declared inside the main 
    for (r = 0; r <= 2; r++) 
    { 
     for (c = 0; c <= 3; c++) 
     { 
      printf("Enter value for s[%d][%d]: ", r, c); 
      scanf("%d", &s[r][c]); 
     } 
    } 
    printf("The sum is: %d\n", sumx(s)); //pass to the function because now it is not global; 
    return 0; 
} 

int sumx(int s[3][4]) 
{ 
    int sum = 0; //sum is initialized to zero otherwise it will take garbage value 
    for (int r = 0; r <= 2; r++) 
    { 
     for (int c = 0; c <= 3; c++) 
     { 
      sum = s[r][c] + sum; 
     } 
    } 
    return sum; 
} 
+0

どの標準が 'sum()'関数をあらかじめ定義していますか?それはC標準でもPOSIXでもないAFAIKです。 –

+2

@jonathanLefflerコードにはセミコロンだけでなく多くの問題がありました。 –

+0

@MohitYadavとあなたの答えはすべてそれをカバーしていません –

0

あなたはここに末尾の;が欠落している:それは事前に定義された機能であるため、

int sum(int s[3][4]) 
+0

「タイプミス」の理由はありませんか? ? – Olaf

+0

@Olaf:ちょっと、十分にある!!私はそれを閉じようと投票しましたが、実際にOPを助けるかもしれないので、この回答を残しています。 –

+0

問題は質問されません。 ://stackoverflow.com/help/roomba)に特定の状況下で答える。手動削除の投票を削除することはまれです。コメントはここでうまくいったでしょう。 – Olaf

関連する問題