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

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

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

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

Q&A

1回答

412閲覧

c言語で白黒画像処理の仕方がわかりません。

chihiro_0701

総合スコア10

C

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

0グッド

1クリップ

投稿2018/11/24 16:08

編集2018/11/25 03:04

###課題
プログラミング初心者です。
C言語で下のような白黒画像を表示させるにはどうすればいいか教えてください。
下に実際に作成したプログラムがあるのですが、よくわかりません。
よろしくお願いします!

###出題
画像データ
□□□□□□□■■■■■
□□■■□□□□□□□■
□■■□■■■■■■■■
□□□□□■□■□□□■
□■■■□■■■□■■■
□■□□□■■□□■■■
□□□□□□□□□■□■
□□■■■■■■□■□■
□■■□□□■□■□□■
□■□□□□■□■□□■
□■■■■■■■■□□■
■□□□□□□□□■■■

###試したこと(上の補足に書かれてる画像がinput部分?)
#include <stdio.h>
int fill(int x, int y);
int input[12][12] = {
{0,0,0,0,0,0,0,1,1,1,1,1},
{0,0,1,1,0,0,0,0,0,0,0,1},
{0,1,0,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,1,0,1,0,0,0,1},
{0,1,1,1,0,1,1,1,0,1,1,1},
{0,1,0,0,0,1,1,0,0,1,1,1},
{0,0,0,0,0,0,0,0,0,1,0,1},
{0,0,1,1,1,1,1,1,0,1,0,1},
{0,1,1,0,0,0,1,0,1,0,0,1},
{0,1,0,0,0,0,1,0,1,0,0,1},
{0,0,1,1,1,1,1,1,1,1,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1},
};

int output[12][12] = {
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
};

int main(void)
{
int x,n;
scanf("%d", &x); //xをキーボードから入力
n = fill(x, x); //座標x,xから塗りつぶすことにする
printf("%d\n",n);
return 0;
}

int fill(int x, int y)
{
int left,right,up,down;
座標(x,y)がinputの範囲外であればダメ(0を返す)
inputの座標(x,y)を調べる.黒(1)でなければダメ(0を返す)
outputの座標(x,y)を調べる.すでに出力があれば(1ならば)ダメ(0を返す)
そうでないなら
outputの(x,y)を黒(1)に置き換える.
自分の上下左右を調べる.
つまり,left = fill(x-1, y);
right = fill(x+1,y);
up = fill(x,y-1);
down = fill(x,y+1);
返値は,left+right+up+down+1; //+1は自分自身の1画素分
}

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

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

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

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

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

Zuishin

2018/11/24 23:09

宿題は自分でしてください。わからないところは先生に聞いてください。せめて友達に尋ねてください。尋ねる時は至急のような上からの態度は控えてください。また丸投げするのではなく要点をまとめて一つずつ聞いてください。
guest

回答1

0

C言語で下のような白黒画像を表示させるにはどうすればいいか教えてください。

一つの例としてこのようにするとできます

C

1#include <stdio.h> 2 3#define SIDE 12 4 5int main(void){ 6 int input[SIDE][SIDE] = { 7 {0,0,0,0,0,0,0,1,1,1,1,1}, 8 {0,0,1,1,0,0,0,0,0,0,0,1}, 9 {0,1,0,1,1,1,1,1,1,1,1,1}, 10 {0,0,0,0,0,1,0,1,0,0,0,1}, 11 {0,1,1,1,0,1,1,1,0,1,1,1}, 12 {0,1,0,0,0,1,1,0,0,1,1,1}, 13 {0,0,0,0,0,0,0,0,0,1,0,1}, 14 {0,0,1,1,1,1,1,1,0,1,0,1}, 15 {0,1,1,0,0,0,1,0,1,0,0,1}, 16 {0,1,0,0,0,0,1,0,1,0,0,1}, 17 {0,0,1,1,1,1,1,1,1,1,0,1}, 18 {1,0,0,0,0,0,0,0,0,1,1,1}, 19 }; 20 int i,j; 21 22 for(i = 0; i < SIDE; i++){ 23 for(j = 0; j < SIDE; j++){ 24 if(input[i][j] == 0){ 25 printf("□"); 26 } 27 else{ 28 printf("■"); 29 } 30 } 31 printf("\n"); 32 } 33 return 0; 34}

投稿2018/11/25 08:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問