• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Pascal  insertの使い方)

Pascalのinsert関数の使い方

このQ&Aのポイント
  • 整数を入力して、金額表示のように3桁ごとにコンマを打って文字列として表示するプログラムを作成したが、insert関数が正しく実行されない
  • プログラムで使用しているinsert関数の引数の位置が誤っている可能性がある
  • 正しい位置にinsert関数の引数を配置することで問題を解決できる

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

使っている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); を追加してみて、どのように文字列が変化していくのか 追いかけてみてはどうですか?

asiuzu
質問者

お礼

無事できました!! 先生にみてもらぃながらになってしまぃましたが. ww sakusaker7さんのぃってることがわかりましたぁぁ♪ 先生もstにたいしてinsertを適用しなきゃと、ぉなじようなことを言ってまして★ できなかったときゎ、こんどから追いかけてみてみます♪ ぁりがとぉございました★

その他の回答 (2)

回答No.3

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)); となります。 ご存じであれば、悪しからず。

asiuzu
質問者

お礼

初心者すぎなので、全然ゎからなぃですね;;ww 授業でならってなぃことゎ使っちゃダメみたぃなので、 つかえなぃんですね(><… でも、参考になりました♪そぉゆうのがぁるんですね♪ ありがとぉございました♪

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

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 カンマを挿入する場所の判定が間違ってますね。 ヒント 文字列を配列と見なして逆から操作すると楽できますよ。 #処理完了後にもう一回ひっくり返す必要あり

asiuzu
質問者

お礼

すみません;; 初心者すぎて全然ゎからなぃんです;; 逆からとゎどぉゆう??ww でも、無事出来たので、ょかったです♪ 答えてくださってぁりがとぉございました♪

関連するQ&A