質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

解決済

C言語 配列で関数演算後の値を使いたいです。

pzzz_6
pzzz_6

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

2回答

0リアクション

0クリップ

275閲覧

投稿2022/09/23 10:22

前提

ソースコードでは1つのファイル、1つの関数からの呼び出しですが、

配列はヘッダファイルに記述したいです。
配列は複数の関数で使いたいです。

以上のことを踏まえてどのような実装が綺麗か教えていただきたいです。

実現したいこと

関数の演算結果を配列の値に用いたいです。どのような実装をすれば綺麗にまとまるか知りたいです。
配列のclacNum_20_25 の箇所にはcalcNum(20,25)の値を入れたいです。

今の状態だと配列を使う関数で毎回 clacNum_20_25 の値を求めなければいけません。新しい関数を作成して、この配列を使う時に気づけない可能性があるのでこれは避けたいです。

該当のソースコード

C

#include <stdio.h> #define ARRAY_X 2 #define ARRAY_Y 3 #define clacNum_20_25 0 #define clacNum_30_35 0 #define clacNum_40_45 0 int calcNum(int a , int b); struct NUM { int a; int b; }; struct NUM num[ARRAY_X][ARRAY_Y] = { { {35 , 40}, {45 , 50}, {55 , 60} }, { {clacNum_20_25,50},//clacNum(20,25) {clacNum_30_35,60},//clacNum(20,25) {clacNum_40_45,70} //clacNum(20,25) } }; int main (void){ num[1][0].a = calcNum(20,25); num[1][1].a = calcNum(30,35); num[1][2].a = calcNum(40,45); int i,j; for(i = 0; i < ARRAY_X; i++){ for(j = 0; j < ARRAY_Y; j++){ printf("%d\t%d\n",num[i][j].a,num[i][j].b); } } } int calcNum(int a , int b){ int c; c = a + b; return (c); }

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2022/09/23 10:28

配列、というのは struct NUM num[ARRAY_X][ARRAY_Y] のことでしょうか。 例としてかもしれませんが、各値は固定値に見えます。なぜ予め計算した結果を配列に入れないのでしょうか。
pzzz_6

2022/09/23 10:35

配列、というのは struct NUM num[ARRAY_X][ARRAY_Y] のことでしょうか。  そうです。 例としてかもしれませんが、各値は固定値に見えます。なぜ予め計算した結果を配列に入れないのでしょうか。  例を簡単にしすぎていますが、本来は複雑な計算をする関数の値を配列に代入したいです。 質問の本質としては、関数の計算結果を配列の値で使いたい場合、どのような実装がよいか。ということになります。 載せているソースコードでは必要ないですが、よろしければ教えていただければと思います。
maisumakun

2022/09/23 10:49

> 例を簡単にしすぎていますが、本来は複雑な計算をする関数の値を配列に代入したいです。 それを初期化で回してしまう、では何がよくないのでしょうか?
dodox86

2022/09/23 10:57

@質問者 pzzz_6さん ご質問に直接関係は無いですが、他者の文の引用をするときは行頭に">"、">"を付けると読んだ者に混乱が無くてよいです。これはEメールなどでも使われる一般的なマナーです。 例えば > 載せているソースコードでは必要ないですが、よろしければ教えていただければと思います。 >> 配列、というのは struct NUM num[ARRAY_X][ARRAY_Y] のことでしょうか。 >  そうです。 のように使います。
pzzz_6

2022/09/23 11:09

>> それを初期化で回してしまう、では何がよくないのでしょうか? > 私の知識不足で発想がありませんでした。ほかの方からの回答もあり解決しました。ありがとうございます。 dodox86さん、丁寧に教えていただきありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。