- ベストアンサー
Pascalのinsert関数の使い方
- 整数を入力して、金額表示のように3桁ごとにコンマを打って文字列として表示するプログラムを作成したが、insert関数が正しく実行されない
- プログラムで使用しているinsert関数の引数の位置が誤っている可能性がある
- 正しい位置にinsert関数の引数を配置することで問題を解決できる
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
使っているPascalはTurbo-Pascal(or Delphi) ですか? insert という関数の引数の意味と戻り値の型がわかりませんが、 repeat x:=n-3*i; u:=insert(con,st,x); until x:<3; writeln(u); insertは st の x番目に con を挿入するんだろうなという 気はしますが、 もし挿入結果の文字列が返されるのなら ループの二周目以降はstに対してinsertを 適用しちゃまずくないですか? それを考慮した上で u:=insert(con,st,x); の直後に writeln(u); を追加してみて、どのように文字列が変化していくのか 追いかけてみてはどうですか?
その他の回答 (2)
- gyrocompas
- ベストアンサー率23% (24/104)
insertの使い方の練習だと思いますが 3桁毎に数字を区切った文字列にする関数がパスカルには存在します Delphiならば var st :string; n,i,x:integer; begin writeln('数を入力してください。'); readln(st); x := StrToInt(st); writeln(FormatCurr(',#', x)); // end. Free Pascalならば 上の最後の行が、 writeln(FormatCurr('###,###,###,###', x)); となります。 ご存じであれば、悪しからず。
お礼
初心者すぎなので、全然ゎからなぃですね;;ww 授業でならってなぃことゎ使っちゃダメみたぃなので、 つかえなぃんですね(><… でも、参考になりました♪そぉゆうのがぁるんですね♪ ありがとぉございました♪
- sakusaker7
- ベストアンサー率62% (800/1280)
insertが ゼロから始めるDelphi講座 18 http://oto.chu.jp/kujira/text/delphi/zero/18.htm#3 ここで説明されているものだとすると、 関数じゃなくて手続きなので戻り値は取れませんね。 手元にあったGNU Pascalでちといじってみましたが begin i := 1; con := ','; writeln('start : ', st); repeat x := n-3*i; {u := insert(con, st, x);} insert(con, st, x); writeln(i, ' : ', st); i := i+1; until i > 3; {x<3;} writeln(st); end; のようにして確かめると (元の条件では無限ループになりました) please input number: 12345678 start : 12345678 1 : 1234,5678 2 : 1,234,5678 3 : 1,234,5678 1,234,5678 カンマを挿入する場所の判定が間違ってますね。 ヒント 文字列を配列と見なして逆から操作すると楽できますよ。 #処理完了後にもう一回ひっくり返す必要あり
お礼
すみません;; 初心者すぎて全然ゎからなぃんです;; 逆からとゎどぉゆう??ww でも、無事出来たので、ょかったです♪ 答えてくださってぁりがとぉございました♪
お礼
無事できました!! 先生にみてもらぃながらになってしまぃましたが. ww sakusaker7さんのぃってることがわかりましたぁぁ♪ 先生もstにたいしてinsertを適用しなきゃと、ぉなじようなことを言ってまして★ できなかったときゎ、こんどから追いかけてみてみます♪ ぁりがとぉございました★