大学の夏休みの課題で、自分一人で解決できなくなってしまいました。もし分かる方がいらっしゃれば教えて下さい。
freepascal データの挿入探索削除列挙のプログラム(実行文部)
freepascal
1 2begin 3 root:=nil; 4 mark:=' '; 5 while mark<>'q' do 6 begin 7 writeln('[r]:登録,[d]:削除,[s]:探索,[e]:データ列挙,[q]:終了'); 8 write('選択キー:'); read(mark); 9 if mark='r' then 10 begin write('登録データ入力:'); read(m); register(m,root) end 11 else if mark='d' then 12 begin write('削除データ入力:'); read(m); delete(m,root) end 13 else if mark='s' then 14 begin write('探索データ入力:'); read(m); search(m,root) end 15 else if mark='e' then 16 begin write('データ一覧:'); enumerate(root); writeln end; 17 writeln; 18 end; 19 writeln('終了'); 20end. 21
自分で文字型markを読みこみ、そのマークの値によって、条件分岐で整数値mの登録、削除、探索、データの列挙、もしくは終了を行う2分木構造プログラムです。
register,delete,search,enumerateは各操作を2分木に行う関数です。
これを実行した時に、
r:登録,[d]:削除,[s]:探索,[e]:データ列挙,[q]:終了
選択キー:r
登録データ入力:7 (①)
選択キー:
r:登録,[d]:削除,[s]:探索,[e]:データ列挙,[q]:終了
選択キー:r (②)
登録データ入力:8
選択キー:
r:登録,[d]:削除,[s]:探索,[e]:データ列挙,[q]:終了
選択キー:e
データ一覧:7,8,
選択キー:
r:登録,[d]:削除,[s]:探索,[e]:データ列挙,[q]:終了
選択キー:q
終了
このように、毎回のループで選択キーが登録されない?(空白になる)ループが一回起きてしまいます。上で言えば、①を打ち込んだあと、すぐに②の行に移るという感じです。
色々自分で試行錯誤したのですが、解決できなかったので、よろしくお願い致します。