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

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

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

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

2回答

337閲覧

[C言語]If文のコード改善

kazu0525

総合スコア1

C

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

1グッド

0クリップ

投稿2024/02/14 23:42

以下のようにAの値を条件に、
各変数(test1-4)の入力値を変えていきたいのですが、Aの条件が多く、他にも方法がないかと悩んでいます。これ以外に簡潔に処理を行える方法はあるでしょうか?

if(A ==1) {
test1 = 1;
test2 = 0;
test3 = 1;
test4 = 1;
}
else if (A ==2) {
test1 = 1;
test2 = 1;
test3 = 1;
test4 = 1;
}




else if (A ==X) {
test1 = 1;
test2 = 1;
test3 = 0;
test4 = 0;
}

tatsu99👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2024/02/14 23:57

> Aの条件が多く 全部で何パターンありますか?
tatsu99

2024/02/15 00:05 編集

Aは1からの連番になりますか。(例 Aは1~15の値) もし、そうであれば、その範囲の値を添え字にする配列を作っておけば、良いでしょう。 int t1[] = {1,1,1,1}; int t2[] = {0,1,1,1}; int t3[] = {1,1,1,0}; int t4[] = {1,1,1,0}; int ix; のようにt1,t2,t3,t4を確保しておき ix = A -1; test1 = t1[ix]; test2 = t2[ix]; test3 = t3[ix]; test4 = t4[ix]; とすれば、良いです。 上記の場合、Aは1~4の値であることが前提です。(1~4以外の値の場合、暴走します)
fana

2024/02/15 01:33 編集

A の値と個々の変数(test1 ~ test4)の値との間に,何かしらの法則性は無いのですか? あるならばその法則性からの計算によって変数値を求めるという方向が考えられるかもしれません. もしも全く法則性が無いならば,どんな方法であれ全てのパターンをどうにかして実装するしかない,ということになるので,その場合,「他の方法」に何を求めるのか?(提示している if でやる方法と比較してどうあって欲しいのか?)という点を述べると良い気がします.
kazu0525

2024/02/15 01:32

maisumakun 様 全部で50パターン程です
kazu0525

2024/02/15 01:36

tatsu99 様 ありがとうございます。 Aは連番になります。 配列のイメージはあったのですが、具体的なやり方がわからず悩んでいました。 この方法で試してみたいと思います!
fana

2024/02/15 01:50

> 簡潔に処理を行える方法 なる文言の意図するところを問うたつもりだったのですが,「配列にすればおk」という話なのであれば不要ですね.
jimbe

2024/02/15 04:34 編集

まあ、 2 次元配列といったところですかね。 というか test1~4 てビットパターン?
kazu0525

2024/02/15 14:33

皆様コメントありがとうございました。 配列で解決しました。 勉強になりました。
guest

回答2

0

自己解決

コメントでいただいた配列にすることで解決しました。

投稿2024/02/15 14:35

kazu0525

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これ以外に簡潔に処理を行える方法はあるでしょうか?

if ではなくて、switch つかえばどうでしょう

投稿2024/02/15 01:36

y_waiwai

総合スコア87778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問