C言語なら、俺に聞け! <11>
■ このスレッドは過去ログ倉庫に格納されています
0705デフォルトの名無しさん
NGNG現在for文の例題をやっているのですが、もなかなか綺麗に書けません。
諸兄方に添削をお願いできますと有難いです。
内容:
dataというint型配列に、正数のデータがあり、エラー(-1)が混ざっています。
それを除外対象として、s番目の値を出力するプログラムを書いています。
(s=0 結果=1, s=1 結果=2, s=5 結果=6, s=7 結果=8)
----------------------私の書いたプログラム----------------------
#include <stdio.h>
int data[] = {-1, 1, 2, 3, 4, -1, 5, -1, -1, 6, 7, 8, 9};
int s=7; /*簡単に考えるため、dataの添え字が無効にならない範囲と仮定*/
main()
{
int i, j;
for (i=j=0; i<=s; ++i, ++j) {
while (data[j] == -1) {
j++;
}
}
j--;
printf("result = %d\n", data[j]);
}
--------------------------------------------------------------
無い知恵絞ったのですが、ループ内で完結せずに j-- が外に出ています。
ソートなどの難しい問題をやる場合には、ループ内での比較処理はよく使われると
思うのですが、このプログラムももっとシンプルになりませんでしょうか?
定石のような書き方がありましたら、教えて下さい。よろしくお願い致します。
■ このスレッドは過去ログ倉庫に格納されています