二次元配列にデータを書き込む関数について
Posted: 2020年11月18日(水) 00:17
こんにちは、
今学校の課題で、二次元配列に0か1かを表示させ、eを入力すると繰り返しが終了するプログラムを作っています。以下のプログラムは、それぞれ数字0のデータ、数字1のデータを二次元配列に書き込む関数を作るところまで完成させている状態です。そこで質問です。ここから、数字0,数字1のデータを書き込む関数それぞれの中に、二次元配列にデータを書き込む関数を作りたいのですが、ここから手が動きません。考え方としては、数字を描くデータを書き込む二次元配列、データを書き込む向きが横か縦かを設定する変数、データを書き込む範囲を決める変数3つを関数に渡したいです。関数の中で関数を呼び出す理論がまだあまり理解できていないため、どなたかご教授いただけると幸いです。ちなみにコンパイルして表示したい画面は
@@@
@ @
@ @
@ @
@@@
@@
@
@
@
@@@
のような表示です。
#include <stdio.h>
void Zero(char num[5][7]);
void One (char num[5][7]);
int main(void)
{
char num[5][7], str[2];
int i, j;
while(1) {
for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
num[j] = ' ';
}
printf("0 か 1 か e を入力(e で終了):");
scanf("%s", str);
if (str[0] == 'e' && str[1] == 0) break;
if (str[0] >= '0' && str[0] <= '1' && str[1] == 0) {
if (str[0] == '0') {
Zero(num);
}
else if (str[0] == '1') {
One(num);
}
for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
printf("%c", num[j]);
printf("\n");
}
}
else
printf("\n>>> 該当するものがありません <<<\n\n");
}
return 0;
}
void Zero(char num[5][7])
{
int i, j;
for (i = 1; i < 4; i++) {
num[0] = '@';
num[6] = '@';
}
for (j = 1; j < 6; j++) {
num[0][j] = '@';
num[4][j] = '@';
}
}
void One(char num[5][7])
{
int i, j;
for (j = 0; j < 7; j++) {
num[2][j] = '@';
}
num[1][0] = '@'; num[1][6] = '@'; num[3][6] = '@';
}
今学校の課題で、二次元配列に0か1かを表示させ、eを入力すると繰り返しが終了するプログラムを作っています。以下のプログラムは、それぞれ数字0のデータ、数字1のデータを二次元配列に書き込む関数を作るところまで完成させている状態です。そこで質問です。ここから、数字0,数字1のデータを書き込む関数それぞれの中に、二次元配列にデータを書き込む関数を作りたいのですが、ここから手が動きません。考え方としては、数字を描くデータを書き込む二次元配列、データを書き込む向きが横か縦かを設定する変数、データを書き込む範囲を決める変数3つを関数に渡したいです。関数の中で関数を呼び出す理論がまだあまり理解できていないため、どなたかご教授いただけると幸いです。ちなみにコンパイルして表示したい画面は
@@@
@ @
@ @
@ @
@@@
@@
@
@
@
@@@
のような表示です。
#include <stdio.h>
void Zero(char num[5][7]);
void One (char num[5][7]);
int main(void)
{
char num[5][7], str[2];
int i, j;
while(1) {
for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
num[j] = ' ';
}
printf("0 か 1 か e を入力(e で終了):");
scanf("%s", str);
if (str[0] == 'e' && str[1] == 0) break;
if (str[0] >= '0' && str[0] <= '1' && str[1] == 0) {
if (str[0] == '0') {
Zero(num);
}
else if (str[0] == '1') {
One(num);
}
for (j = 0; j < 7; j++) {
for (i = 0; i < 5; i++)
printf("%c", num[j]);
printf("\n");
}
}
else
printf("\n>>> 該当するものがありません <<<\n\n");
}
return 0;
}
void Zero(char num[5][7])
{
int i, j;
for (i = 1; i < 4; i++) {
num[0] = '@';
num[6] = '@';
}
for (j = 1; j < 6; j++) {
num[0][j] = '@';
num[4][j] = '@';
}
}
void One(char num[5][7])
{
int i, j;
for (j = 0; j < 7; j++) {
num[2][j] = '@';
}
num[1][0] = '@'; num[1][6] = '@'; num[3][6] = '@';
}