ここから本文です

c言語にて以下のようなプログラムをを簡潔に表現したいと考えています。

a_w********さん

2019/6/223:06:22

c言語にて以下のようなプログラムをを簡潔に表現したいと考えています。

>配列[500]に格納されている値の内,[0]~[100]の値がすべてプラスの場合、処理を実行



if文の条件式を愚直に書こうとすると101回同じことを書かないといけないと思いますが、配列のインデックスを一つずつ変更し、条件式を簡潔に書く方法はありますでしょうか?

閲覧数:
51
回答数:
5

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

2019/6/300:01:08

int a[] = { ... };
int i;
for ( i=0; i<101 && a[i] > 0; i++ ){
}
if ( i==101 ){
  (処理)
}

だとどうなんでしょう。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/6/5 00:21:57

勉強になりました。ありがとうございます。

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

kon********さん

2019/6/314:52:37

for(i=0;array[i]>=0;i++){
if(i>100){
処理;
break;
}}
が単純そうですが...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

ikt********さん

2019/6/312:50:58

1.
言語本体の構文に、そんなものは、ありません。

2.
問題分割、小さな別関数を作る。

// values[] の範囲 [first, last) がすべて正のときtrue
bool is_all_positive(int values[], int first, int last);

そうすれば、シンプルに書きたいドメインコード側は、
シンプルに書けます。
int data[500] = ...;
if (is_all_positive(data, 0, 100+1))
___ 処理続行;
else
___ やーめた;

Cが提供してくれる抽象化手段は、基本的に
・データ:ユーザ定義型
・手続き:関数
です。

プロフィール画像

カテゴリマスター

n2q********さん

2019/6/309:05:50

『配列のインデックスを一つずつ変更し、条件式を簡潔に書く方法』


~例~

int i = 0;
for (;;) {
if (配列[i] > 0) {
//[0]~[i]の値がすべてプラス
if (i < 100)
++i;
else {
処理を実行
break;
}
} else
break;
}



《解説》

2段構えで処理すると良いと考えます。

(1)[0]~[i]の値がすべてプラス
(2)i < 100 なら次へ


まず、(1)の条件が偽の場合は「処理を実行」せずに終わりとなります。真の場合は(2)の判断に入ります。ここで i < 100 が偽となると i は 100 ですから「処理を実行」し、そこで終わりというわけ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

kur********さん

2019/6/223:12:34

for(iが0~100){
if(配列[i]<0) flag = false;
}
if(flag){
//処理;
}

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる