KN Kingsの「Cプログラミング:最新のアプローチ」の第10章の演習7では、次のように、ASCIIアートで通常の数字から7セグメント数字への数字変換を行うことがタスクです。
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| | |_|
オンとオフを切り替える各桁のシーケンスを取得しました
サンプル:
int digit_sequence[10][7] = {
// A,B,C,D,E,F,G
/* 0 */ {1,1,1,1,1,1,0}
}
ここで、1 =オン、0=オフ
process_digit(int digit, int position)
しかし、私はその機能を動作させるのに苦労しています。
頭の中でからsequence[10][7]
に翻訳するのに苦労していますdigits[4][MAX_DIGITS*4]
優しい魂が私を助けてくれませんか?
私はゴルフコードの7セグメントチャレンジを読んでいますが、その理論を理解していても、複数のアレイでやりたいことを実行するように脳を説得するのはまだ難しいです。
アスキーアートを無視すると、質問は次のようになります。
ユーザーに数字の入力を求め、文字を使用して数字を表示し、7セグメントディスプレイの効果をシミュレートするプログラムを作成します。
..。
数字以外の文字は無視してください。最大桁数が値10のMAX_DIGITSという名前のマクロによって制御されるようにプログラムを作成します。数値にこの桁数を超える場合、余分な桁は無視されます。 ヒント: 2つの外部アレイを使用してください。1つは、
segments
数字とセグメント間の対応を表すデータを格納する配列[...]です。もう1つの配列、digits
は、4行(各セグメント化された数字は4文字の高さであるため)およびMAX_DIGITS * 4
列(数字は3文字の幅ですが、読みやすくするために数字の間にスペースが必要です)の文字の配列になります。プログラムを4つの関数として記述します:main
、[...]void clear_digits_array(void); void process_figit(int digit, int position); void print_digits_array(void);
clear_digits_array
数字配列のすべての要素に空白文字を格納します。process_digit
の7セグメント表現を配列digit
内の指定された位置に格納します(位置の範囲はから)。数字配列の行をそれぞれ1行に表示します[...]。digits
0
MAX_DIGITS - 1
print_digits_array