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

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

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

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

Q&A

2回答

1587閲覧

C言語 配列 中央値

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

0グッド

0クリップ

投稿2021/11/13 11:22

編集2021/11/14 18:53

7x7の数値列を,左上から右下に3x3の領域ごとに見ていき,その領域の中の中央値を,output imageの同じ3x3の領域の真ん中の値にするプログラムを作成したいです。

自分の中で精一杯アプローチしたのですが、全然歯が立ちませんでした。回答やアプローチの方法をお教えいただきたいです。

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

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

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

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

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

episteme

2021/11/13 11:41 編集

input を そのまま output するコードくらいは呈示しておくれよ。 そーじゃないと「丸投げ」でしかない。 ...それすらできない?
SaitoAtsushi

2021/11/13 13:02

極端な話をすれば、まるで何ひとつ書けないという人に対して解説するとなると入門書一冊分程度をまず説明してからということになってしまいます。 物量的に単純に無理です。 何をききたいのか具体的であるような質問にしてください。 Teratail は「質問をする前に自分で何がわからないのかを把握しましょう」という項目で質問を明確化するにはどのように取り組めばよいかまとめてくれていますので、一読することをお勧めします。 https://teratail.com/help/question-tips#questionTips2
退会済みユーザー

退会済みユーザー

2021/11/13 13:18 編集

コメントありがとうございます。 {{1,2,3,4,5,6,7}, {1,10,2,3,4,5,7} {1,4,5,3,10,2,3} {1,2,3,4,1,2,3} {1,3,10,2,2,3,1} {1,4,1,1,3,4,2} {1,5,2,3,2,5,1}} これでよろしいでしょうか。 列ではなく、3*3に表示されている数字の中央値を求める部分のプログラムをどのように組めばいいのかがよくわかりません。
SaitoAtsushi

2021/11/13 14:14

入力データをそのような形式で書けるということのみがわかるという意味ですか?
jimbe

2021/11/13 20:35 編集

>自分の中で精一杯アプローチした 例えどれだけ時間をかけられていたとしても、ダメだったからと何もご提示頂けなければ、回答しようとする側には何もしていないのと同じに映ります。 コンパイルエラーでも結果がめちゃくちゃでも、とにかく力量が見えなければ何が足りないのかも分かりません。 >3*3に表示されている数字の中央値を求める部分のプログラムをどのように組めばいいのか であれば、そこまでの部分は出来ていると思いますので、その状態のコードをご提示いただけませんでしょうか。 (ご提示頂く際はこのコメント欄にではなく、ご質問を編集してください。また、マークダウン記法をご利用ください。)
episteme

2021/11/13 23:03

> 3*3に表示されている数字の中央値を求める部分のプログラムをどのように組めばいいのかがよくわかりません。 「int data[9]; があって、その中の中央値を求める」はできますか? # これができるなら、3x3領域の値を data[] に転写すればいいわけで。
guest

回答2

0

画像処理における、メディアフィルタのような処理かと思われます。
「メディアンフィルタ、C言語」と検索するといろいろとヒントが出てくると思います。

何かの課題のようなので直接的な回答は避けますが、基本的には2次元配列の操作で実現します。
まずは①の部分の値を計算するコードに挑戦してみるのが良いと思います。

コード作成の流れは例えば以下ように作成してみてはどうでしょうか?

// 入力値を変数に格納 int input[][] = { {1,2,3,4,5,6,7}, {1,10,2,3,4,5,7}, {1,4,5,3,10,2,3}, {1,2,3,4,1,2,3}, {1,3,10,2,2,3,1}, {1,4,1,1,3,4,2}, {1,5,2,3,2,5,1} }; //3x3の部分(赤や緑)を格納する変数を作成 //inputの2次元配列から適切な部分の値を2重for文でコピーする処理を作成 //sub_inputの値が {{1,2,3}, {1,10,2}, {1,4,5}} になればOK int sub_input[3][3] = {0}; 自分のコードを作成 //sub_inputを1次元配列にする //sub_inputの2次元配列を順番に参照し値をコピーする処理を作成 //sub_input_one_array の値が {1,2,3,1,10,2,1,4,5} になればOK int sub_input_one_array[9] = {0}; 自分のコードを作成 //sub_intpu_one_arrayをソートする処理を作成 //バブルソートを行う処理を実装 //sub_input_one_array の値が {1,1,1,2,2,3,4,5,10} になればOK 自分のコードを作成 //中央値を取得 int value = sub_input_one_array[4] printf("%d\n", value); //valueの値が2ならOK

投稿2021/11/13 14:40

univ_esuty

総合スコア27

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

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

0

擬似コードなら理解できるでしょうか?

入力用の二次元配列イを定義する。 出力用の二次元配列ロを定義する。 イに入力を読み込む。 ロの、1行目と最終行の各要素に、添え字が同じイの要素から複写する。 ロの、1列目と最終列の各要素に、添え字が同じイの要素から複写する。 2から最終行番号-1までの各整数ハに対し、次の操作を繰り返す:  2から最終列番号-1までの各整数ニに対し、次の操作を繰り返す:   要素が9個の配列ホを定義する。   ホの1番目から3番目の要素に、行番号がハ-1、列番号がニ-1からニ+1までのイの各要素を複写する。   ホの4番目から6番目の要素に、行番号がハ、列番号がニ-1からニ+1までのイの各要素を複写する。   ホの7番目から9番目の要素に、行番号がハ+1、列番号がニ-1からニ+1までのイの各要素を複写する。   ホの要素を昇順に並び替える。   ホの5番目の要素を、行番号がハ、列番号がニの、ロの要素に複写する。

もし、分かりにくい箇所があれば、仰っていただけば、丁寧に英語で説明いたします。

投稿2021/11/13 14:36

majiponi

総合スコア1722

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問