ページ 11

プログラムの説明

Posted: 2009年5月11日(月) 18:36
by 研修生
問題自体が複雑になって理解しずらいのでご質問します

入力されたタブを次のタブ・ストップまでのスペースをうめる適当な数のブランク(空白)で置き換える
プログラムdetabを書け。タブ・ストップの位置は例えばn文字ごとというように固定して考えよ
nは変数にすべきか、記号パラメータにすべきか?


という問題なのですが意味がよくわかりません。何がわからないの?と質問出るかと思いますが
結局実行結果がどんな風になればいいのかがわかれば作りやすいので教えて下さい。
後タブとタブ・ストップの違いがわかりません・・

Re:プログラムの説明

Posted: 2009年5月11日(月) 19:10
by 御津凪
(ブラウザでのタブ表現が8文字なら、以下のテキストは希望通りの表示ができているはずです)

まず、タブ(Tab)とは、キーボードの左側にある Tab キーを押すことで入力される文字です。
タブ・ストップは、文字で指定文字分の間隔ごとに右にずらし、揃える機能です。
(タブは英訳で Tab stop と呼ぶので、実質的には同義のはずです)
←空白1字
  ←空白2字
    ←空白4字
        ←空白8字
	←タブ1字
		←タブ2字
上記部分をそれぞれ選択してみると、タブの部分だけまとまって選択されるのがわかると思います。

また、
1	10	100
200	300	400
のように、各文字の間にタブ文字を入れると、行の先頭から指定文字の間隔で右にずれ、
綺麗に並ぶようになります。

(これだけではちょっとわかりづらいかもしれません。図があるともっとわかりやすいのですが)
一応、http://ja.wikipedia.org/wiki/%E3%82%BF% ... D%E3%83%BC の解説へのリンクも張っておきますね。

ちなみに「指定文字の間隔」は、 2, 4, 8 文字が一般的で、メモ帳などは 8 文字です。


それで、プログラムの処理内容ですが、
このタブ文字で整形されたレイアウトを崩すことなく、空白文字に置き換える、
ということです。
・実行前(タブは8文字と仮定)

10	000	1	0
100		1	100
	1	10	1

・実行後(見た目は変わりませんが、選択してみると置き換えられているのがわかります)

10      000     1       0
100             1       100
        1       10      1
という感じです。
(単にタブ文字を指定文字数分の空白に置き換えると、レイアウトが崩れてしまうので注意してください)

Re:プログラムの説明

Posted: 2009年5月11日(月) 19:41
by lbfuvab
nを変更するなら変数で、しないなら定数扱いでいいでしょう。

Re:プログラムの説明

Posted: 2009年5月12日(火) 11:17
by 研修生
なんとなくわかりました。ありがとうございました。

Re:プログラムの説明

Posted: 2009年5月12日(火) 15:52
by 通りすがり
× 理解しずらい
○ 理解しづらい


よく見かけるまちがいです。
理解するのが「つらい」のです。
理解するのが「すらい」ということばは、ありません。