- ベストアンサー
プログラムを紙に書いていろいろやっているのですがで分からないところがあります・・・・・・・・・・・・・・
/*printfとscanfを使用するためにインクルードする*/ #include<stdio.h> /*ビットマップ画像を扱うためのヘッダ*/ #include<Dll_BMP_C.h> //画像ファイル名最大長(バイト) #define NAME_SIZE 101 int main(void) { int j,k; /* nWidth:画像の幅、nHeight:画像の高さ、nVal:輝度値*/ int nWidth,nHeight; /*pcFileName:画像ファイル名を保存する配列*/ char pcFileName[NAME_SIZE]; /*pBmpOrig:読み込んだ画像へのポインタ pBmpCopy:複製した画像へのポインタ*/ DllBmp*pBmpOrig,*pBmpCopy; /*読み込む画像のファイル名を指定する*/ printf(“読み込む画像”); scanf(“%s”,pcFileName); /*画像を読み込みメモリに保存する 読み込みに失敗したら実行を中止する*/ pBmpOrig=DllBmpReadImage(pcFileName); if(pBmpOrig==NULL) { printf(“画像の読み込みに失敗! 実行を中止します\n”); exit(1); } /*読み込んだ画像のヘッダ情報を表示する*/ DllBmpShowHeader(pBmpOrig); /*読み込んだ画像の大きさを得る*/ nWidth=DllBmpGetWidth(pBmpOrig); nHeight= DllBmpGetHeight (pBmpOrig); /* x座標とy座標の値を足すと奇数になるすべてのピクセルを白(RGB成分の輝度値が255)にする画像を生成する */ for(j = 0; j < nHeight; j++) for(k = 0; k < nWidth; k++) if(j+k%2==1) { DllBmpSetPixelValueR(pBmpOrig, j, k, 255); DllBmpSetPixelValueG(pBmpOrig, j, k, 255); DllBmpSetPixelValueB(pBmpOrig, j, k, 255); } /*保存する画像のファイル名を指定する*/ printf(“保存する画像”); scanf(“%s”,pcFileName); /*画像を保存する 保存に失敗したら実行を中止する*/ if(!DllBmpWriteImage(pcFileName,pBmpOrig)); { printf(“画像の保存に失敗! 実行に中止します”); exit(1); } /*画像をメモリから消去する*/ DllBmpDleteImage(pBmpOrig); return 0; } 画像の輝度値を操作するプログラムをやっているのですが、x座標とy座標の値を足すと奇数になるすべてのピクセルを白(RGB成分の輝度値が255)にする画像を生成したいのですが、こんな感じで作ってみたんですが、条件式はif(j+k%2==1) で作ってみたんですが、これだとj+kよりk%2の方がやっぱり先に行いますでしょうか??他に何かいい奇数の判断ってあるでしょうか??ルーズリーフにいろいろ試行錯誤して書いてるのですが、他に何かヒントがあればよろしくお願いします。。。。。 すみませんがお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私なら奇数を条件式では見ないです。 for(x=1; x<=xの最大数; x=x+2){ for(y=0; y<=yの最大数; y=y+2){ } } for(x=0; x<=xの最大数; x=x+2){ for(y=1; y<=yの最大数; y=y+2){ } } 少し長くなりますが、こちらで行きたいですね。 理由は次です。 半分の繰り返し数で済む。条件式が無い。 従って処理速度が速い、です。 余計なことですが、紙の上でプログラムを書く 昔ながらのコーディングは何か、そのような指導 があるのでしょうか?
その他の回答 (1)
- mizpy0926
- ベストアンサー率66% (2/3)
>条件式はif(j+k%2==1) で作ってみたんですが、 >これだとj+kよりk%2の方がやっぱり先に行いますでしょうか?? そうですね。 ANSI Cにおいては、%は、*、/ と同じ優先度で、 +、- の演算よりも先に行われてしまいます。 ですので、奇数を判定したいのであれば if( (j + k) % 2 == 1 ) と、優先して計算したい部分に括弧をつけてやればOKです。 偶数奇数の判定方法については、特にそれで問題無いです。
お礼
本当にありがとうございました!!!!!!!
お礼
本当にありがとうございました!!!!!!!