プチコン3号 SmileBASIC コミュニティトピックしんしん manashi32017/01/06 21:24:09質問文字列に文字を挿入文字列に文字を挿入するプログラムを作ったのですが、もう少し効率化できそうな気がするので皆さんの意見が欲しいです。何か案があったら教えてください。2そうだね 12返信プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿あまさと しおん ShionAmasato2017/1/6 21:34文字列を配列扱いでなんとやら…4そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿ネタバレしょぼーん sin52382017/1/6 21:39たぶんMID$は PUSHTXT$+TEXT$[PUSHNUM-1] で出来そうです。 RIGHT$()とLEFT$()を強引に使うとか。(無茶)1そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿ネタバレツララ LongIceSword2017/1/7 0:56置き換えじゃなくて挿入なら、しょぼーんさんのRIGHT$()とLEFT$()を使う方法が一番簡単なんじゃないです? TEXT$="ABCEF" PUSH_TEXT$="D" PUSH_NUM=3 ?LEFT$(TEXT$,PUSH_NUM)+PUSH_TEXT$+RIGHT$(TEXT$,LEN(TEXT$)-PUSH_NUM) こんな感じで。2そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿おちゃめ ochame_nako2017/1/7 1:53プチコン3号の文字列は内部では配列で処理されているため実は難しいことをせずにその書いている通りのことが簡単にできます。 A$="ABCEF"の場合は、A$[3]="D"+A$[3]とするだけです。 これでA$の3番目(0が起点なので4文字目)の前に"D"という1文字を追加できます。 3そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿ネタバレツララ LongIceSword2017/1/7 5:36おちゃめさんの方法ってUNDOが出来ないデメリットありますけど便利ですね。 途中削除のSUBST$()の対の途中挿入でINST$()みたいな自作関数を作ったらいいかも。 多次元の文字列配列でも問題無く同じ様なこと出来るので、遺伝的プログラムに応用出来そうですね。1そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿ネタバレおおみの Omi-no-mino-3982017/1/7 5:42SUBST$() の文字数を0にすると開始位置のところに挿入されます。 SUBST$("ABCEF",3,0,"D") →結果 ABCDEF SUBST$("ABCEF",3,0,"D777") →結果 ABCD777EF 3そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿ネタバレおおみの Omi-no-mino-3982017/1/7 5:51文字列を削除も同じようにできます。 SUBST$("ABCDEFGHIJ",3,3,"") →結果 ABCGHIJ 2そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿しんしん manashi32017/1/7 11:30皆さんありがとうございます! 皆さんの投稿を基に新しくプログラムを組んでみましたが、新たな問題です。 おちゃめさんとツララさんの投稿を参考に挿入するプログラムを関数化したのですが、Type mismatchエラーでうまく動作しませんでした。関数だと配列扱いできない仕様?0そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿おちゃめ ochame_nako2017/1/7 12:22関数の引数に使っている文字列を配列のように使用する場合は読み出しはできますが書き込みができないため一旦別の変数に代入して使ってください。 DEF INST$(TXT$,PTXT$,NUM) VAR T$=TXT$ T$[NUM]=PTXT$+T$[NUM} RETURN T$ END とすれば問題なく使えます。 ちなみにT$[NUM]=""とすれば1文字削除ができます。(わざわざ1文字削除の関数を作らなくても短いためそのまま記述してもいいくらいだけど) あと"ABCEF"[4]のように変数ではなく定数でも配列的な使用は可能(当然、ながら読み出し専用)1そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿しんしん manashi32017/1/7 15:51出来ました! 一応範囲外の数字は対策済です。0そうだね プレイ済み2017/11/03 17:35:42に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿しんしん manashi32017/1/8 10:10閉め忘れていたので閉じます。0そうだね プレイ済み2017/11/03 17:35:42に取得