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

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

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

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1321閲覧

forループ 初期化

toyadai056

総合スコア34

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/03/29 16:12

編集2017/03/29 17:26
コードfor(j=119;j<205;j+=10){ for(i=135;i<220;i+=10){ int sum10=0,ave=0,sumave=0,sumave2=0; for(int n=j;n<j+10;n++){ int sum1=0; for(int m=i;m<i+10;m++){ sum1 = sum1 + ((unsigned char*)(imgDst->imageData+imgDst->widthStep*n))[m]; }sumave=sum1/(100); printf("%d\n",sumave); sumave2=sumave2+sumave; ave=sumave2/(81); } //printf("%d\n",ave); ave1=ave1+ave; }

修正してみましたが、まだうまく動きません。
(135,119)(135,205)(220,119)(220,205)を頂点に持つ四角を
(縦10*横10)のマスの大きさに分けて、その1マスごとの平均輝度値をもとめたいです。
初期化の位置か足していく位置がどこでするのかが分かりません。
実行すると平均の値も大きくどんどん大きな数になってしまいます。

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

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

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

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

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

guest

回答2

0

見づらかったので提示してもらったコード部分をインデント整形してみました。

C

1for(j=119;j<205;j+=10) 2{ 3 for(i=135;i<220;i+=10) 4 { 5 int sum10=0,ave=0; 6 for(int n=j;n<j+10;n++) 7 { 8 for(int m=i;m<i+10;m++) 9 { 10 sum1 = sum1 + ((unsigned char*)(imgDst->imageData+imgDst->widthStep*n))[m]; 11 } 12 sum10=sum10+sum1; 13 ave=sum10/(100); 14 } 15 printf("%d\n",ave);

それで気になったのですが

C

1sum1 = sum1 + ((unsigned char*)(imgDst->imageData+imgDst->widthStep*n))[m];

で sum1 の位置的に100回分足されていると思われるのと。

C

1ave=sum10/(100);

が j のループの中にあるので目的の処理になっていなさそうな気がします。

投稿2017/03/29 17:08

CerealRusk

総合スコア43

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

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

0

ベストアンサー

質問の日本語が変なので望む答えではない可能性もありますが、sum1変数を初期化するコードが存在しないことが、平均の値がどんどん大きな数になってしまう原因です。
sum1 = 0;というコードを、sum1 = sum1 + ...を行っているループの前に入れるべきでしょう。

投稿2017/03/29 17:13

ku__ra__ge

総合スコア4524

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問