• ベストアンサー

フォートランで文字列の足し算をしたい

VISUAL FORTRAN でお絵かきプログラムを作成しています. 文字列の足し算をする場合にはどうしたらよいのでしょうか? 例えば,拡張子”.BMP”を固定しておいて,先頭部のファイル名を 順に変化させたい場合等です. ぜんぜんあっていませんが,次のようなことをしたいのです. DO 10 I=1,100 FILENAME = I+”.BMP” RESULT=SAVEIMAGE(FILENAME,0,0,MAXX,MAXY) 10 CONTINUE 上記のIを文字として認識させ,拡張子を連結させるということです. (つまり,1.BMP,2.BMP,・・・・・,100.BMPとしたい.) 素人的な質問で申し訳ありませんが,どなたかご教示いただければと思います.

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

  • ベストアンサー
  • selju
  • ベストアンサー率57% (100/173)
回答No.2

例えば、こんな感じ。 INTEGER NUM CHARACTER TEXT NUM = 1 WRITE(TEXT,'(I1)') NUM 過去の記憶なので、すこし自身がありませんが、 数字から文字列を作成します。

chicago27
質問者

お礼

ありがとうございます. 装置番号の変わりに文字列に書き込むという考え方ですね. 私がやりたいことは本件で解決いたしました. 本当にありがとうございました.

その他の回答 (1)

回答No.1

FORTRANを知らないので自信は皆無ですが... 文字列の結合は、「//」だそうです。 つまり、'ABC'//'DEF'は'ABCDEF'になるそうです。 ただ、数値を文字列としていきなり扱えるのか疑問ではあります。 参考URLは「Frotran90プログラミング」というサイトです。 いちど覗いてみられるとよろしいかもしれません。

参考URL:
http://www.media.kyoto-u.ac.jp/htomita/sec0.html
chicago27
質問者

補足

早速の回答ありがとうございます. そうなんです.//を使うことはわかっていたのですが, 数値を文字列に変換することがわからないのです. お分かりでしたら教えてください.

関連するQ&A

  • 文字列連結中の足し算

    JAVA初心者です。 表記の通り、文字列連結中の足し算はどの様にすれば良いのでしょうか。 System.out.println("現在のカウンター値は" + cnt + 1 + "です。"); 上記の様な場合、cntが0だと、 "現在のカウンター値は01です。" と表示されますよね。これを、 "現在のカウンター値は1です。" としたいのです。やはり一旦、別変数で計算後、出力するべきなのでしょうか。

    • ベストアンサー
    • Java
  • 画像のファイル名の末尾の文字4文字を削除したい

    一括で、画像のファイル名の末尾の文字を削除したいと思っています。 バッチで先頭の文字4文字を削除できたのですが、 末尾の文字4文字を削除にしたいのですが、 どうすれば良いのかを教えていただけませんか。 ご教授いただけますでしょうか。 @echo off setlocal enabledelayedexpansion for /f "delims=" %%F in ('dir /b /a-d *.jpg *.png *.gif *.bmp') do ( set filename=%%~nF set extension=%%~xF rem ファイル名が4文字以上の場合にのみ先頭4文字を削除 if "!filename:~4!" neq "" ( set "tempname=!filename:~4!!extension!" rem リネーム後のファイル名が存在しない場合のみリネーム if not exist "!tempname!" ( ren "%%F" "!tempname!" ) ) else ( echo ファイル名が短すぎて変更できません: "%%F" ) )

  • バッチファイルで画像ファイル名の頭文字を削除したい

    一括で、画像のファイル名の頭4文字を削除したいと思っています。 拡張子はJPGで、バッチで作成しています。 ほぼ、うまく動いているのですが、 1つ目の画像ファイルだけが、8文字削除されてしまいます。 どこが間違えているのかが分からなくて、 ご教授いただけますでしょうか。 よろしくお願いいたします。 @echo off setlocal enabledelayedexpansion for %%F in (*.jpg *.png *.gif *.bmp) do ( set "filename=%%~nF" set "extension=%%~xF" rem ファイル名が4文字以上の場合にのみ先頭4文字を削除 if "!filename:~4!" neq "" ( set "tempname=!filename:~4!!extension!" rem ファイル名が元の名前と異なる場合のみリネーム if not "!tempname!"=="%%F" ( ren "%%F" "!tempname!" ) ) else ( echo ファイル名が短すぎて変更できません: "%%F" ) ) endlocal

  • 行単位の文字列処理

    JAVA初心者です。 以下のようなファイル形式があります。 ファイル名(TEXT.TXT) //////////////////////////////////// Aa BFUNC1,abc,def Ab BFUNC2,ghi BFUNC3 /////////////////////////////////// ファイル行単位の先頭(1文字目)に処理の判定識別子が付きます。 A:2文字目の文字を既存の設定してある文字と置き換える。 B:,で区切り最初が関数名次からが引数になります。(例FUNC1(abc,def)) 上記をJAVAで記述したい場合どのようにしたらいいでしょうか? FileReader in = new FileReader("TEST.TXT"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { /*行単位の先頭一文字をチェック*/ switch(){  ←行単位の先頭一文字を判定するには記述するには?  CASE: "A": /*文字列置換*/ br.replace(str ,br); break; CASE:"B": /*方法(1)","で分解して連結する。最初はNextTokenで文字列を連結 させ、次に"("をつけ、次からNextTokenで","をつけていく。","がな くなったら")"をつけるようにするには? */   /*方法(2)","の最初は関数名なのでNextTokenで(1)と同様に"("をつけ    る。次からは行末尾までを一度に連結させ、最後に")"をつけるように   するには?*/ break; } }   ?の個所を教えてください。 ほかに簡単な記述などあればそちらも教えてください。

  • 文字列のある行数を表示する

     お世話になっています。  前回、文字列の検索の質問をしたものです。  このプログラムは文字列を入力して、ファイルから文字列を検索する。  そして、検索した文字列の総数と、存在する行数目を出すというものです。    現状の問題は、検索した文字列の総数は出るようになりました。      しかし、存在する行だけを出したいのに、全ての行数目を      出してしまいます。           どのようにすれば検索した文字列のある行数目だけを表示できるようになるのでしょうか。  以下、現在のソースの状態です。 #include <stdio.h> #include <fstream> #include <iostream> #include <stdlib.h> #include <string.h> #define FALSE 0 #define TRUE 1 using namespace std; int main( ) { FILE *fp;//ファイルポインタ char filename[256];//ファイル名 char key[128];//検索文字列 char key2[128];//見つけた文字列の保存 int iCnt[128];//見つけた文字 char c;    int keylen;//検索文字列の長さ int i = 0;//検索文字列の位置 int search = FALSE;//検索中フラグ int count = 0;//検索文字列出現回数 int j = 0; //検索対象ファイル名と検索文字列をコンソール入力 cout << "ファイル名を入力してください⇒  "; cin >> filename ; cout << "検索文字列を入力してください⇒  "; cin >> key; keylen = strlen(key); if((fp = fopen(filename,"r")) == NULL)     { cout << "ファイルオープンエラー\n" ; exit(1); } //ファイル読み込み while((c = fgetc(fp)) != EOF) { if(search) {//検索中       //検索文字列に一致しない文字が現れた    if(c != key[i]) { search = FALSE; i = 0; } else{  i++; } }   else{ //検索中ではない if(c == key[i]) { search = TRUE; i++; } }     //検索文字列と全て一致した場合 if(keylen == i) { count++; i = 0; iCnt[i] = 1; search = FALSE; } } fclose(fp); cout << "出現回数は " << count << '\n'; //ファイル(filename)からの読み込み        ifstream ifs(filename); string buf; while(getline(ifs, buf) && ifs ) { // ここで行目数の処理を行っています。 j++; if((count++ && search = FALSE) == TRUE) { cout << j << "行目" << endl; } } return 0; }

  • 文字列の取り出し方

    今、Visual Basic 2008を使用しています。 textbox2とtextbox3があり、textbox2に複数行にまたがる文字列があります。 この文字列の中で、listbox1の中にある項目の文字列が入ってる場合はカンマ区切りで文字列の後ろにつなげたいのですが、うまくいきません。 具体的には あいうえお あかさたな いろはにほ というtextbox2の内容について、listbox1内に あ い という2つの項目があった場合、 あいうえお,あ,い あかさたな,あ いろはにほ,い という結果をtextbox3に書き出すという内容です。 Dim addtag As String = "" Dim i As Integer For Each part As String In TextBox2.Text.Split(vbCrLf) If part <> "" Then For i = ListBox1.Items.Count - 1 To 0 Step -1 If part.Contains(ListBox1.Items(i)) = True Then addtag = addtag & "," & ListBox1.Items(i) End If Next part = part & addtag TextBox3.Text = TextBox3.Text & part & ControlChars.NewLine part = "" addtag = "" End If Next というプログラムを組んでいますが、どこが間違っているのかわからず、煮詰まってしまいました。 プログラムは初心者で、根本から違っていたら恥ずかしい限りですが、どうかよろしくお願いします。

  • 配列が定義されていない??

    今日1日を費やして、fortranの勉強をしました。 まだまだ勉強始めたばかりで、何かと苦労しています。 理解しようと、本にPCとにらめっこしています。 本日の問題は・・以下です。 問題と思われる箇所載せておきます。 subroutine Uno(ya,Mc,nablaMc, & maxX,maxY,numX,numY,dt,dx,dy, & v,v_P,nablaya) implicit real*8 (a-h,o-z) * real*8 v(0:maxX,0:maxY),v_P(0:maxX,0:maxY) * CDK write(6,1000) dx,dy,dt * ic=0 1 continue ic=ic+1 * do ix=1,numX-1 do iy=1,numY-1 C---- nablayaを定義------------------------------------ ★ nablaya=v(ix,iy+1)-v(ix,iy-1))/*dy C ------------------------------------------------------ A=v(ix,iy)*ya+nablaya*v(ix,iy) B=v(ix,iy)*ya C------------------------------------------------------- if (iy.eq.1) then ai=2.0d0*dt*B*(1.0d0/(dx*dx)+1.0d0/(dy*dy) bi=dt*(A/(4.0d0*dy)+B/(2.0d0*dy*dy)) else ai=2.0d0*dt*B+A/(dy*dy) bi=A/(4.0d0*dy)+B/(2.0d0*dy*dy) ・・ といった感じのルーチンを書きました。 そしたら、 『Error: The shapes of the array expressions do not conform. [NABLAYA]』と指摘され、その場所が上記★の行でした。 何がいけないのでしょうか!? 教えて下さい。

  • プログラミング言語なでしこでの質問です。

    プログラミング言語なでしこでの質問です。 画像(BMPでも、JPEGでも)をメモ帳で開く(右クリック→プログラムから開く)と、 だいたい変な文字がいっぱい出てきます。(先頭は拡張子で決まってますが。) なでしこでこれらの画像を開くと、先頭の数文字しか読み込めません。 ↓がコードの例です。 「{デスクトップ}sample.jpeg」を開いてメモ記入。 ↓結果 ?リ?・?Exif どうすれば全部読みこめるでしょうか。

  • C#でピクチャーボックスに文字を描画、出力する方法

    以下のことをやりたいのですが、できなくて困っています。 Microsoft Visual Studio 2010 Expressを使っています。 1、ピクチャーボックスに色画像を表示 2、ピクチャーボックスに文字(説明)も表示 3、その画像を出力 2まではできたのですが、2までできたあとに、プログラムのウインドウ上に他のウインドウ(マイコンピュータやマイドキュメントなど)が表示されたり、プログラムのウインドウを最小化したりして、一度隠れてしまうと文字が消えてしまうようで、画像のみの出力になってしまいました。(画像のみの出力には成功しています) なんとかして出力する方法はないでしょうか。 以下がソースです。よろしくお願いします。 ボタン1 Bitmap bmp6 = new Bitmap(800, 600); int sr, sg, sb, i, j; sr = 100; sg = 100; sb = 100; for (i = 0; i < 40; i++) { for (j = 0; j < 40; j++) { bmp6.SetPixel(i, j, Color.FromArgb(sr, sg, sb)); } pictureBox1.Image = bmp6; } ボタン2 string s1 = "文字"; Font newfont = new Font("MS明朝", 10); pictureBox1.CreateGraphics().DrawString(s1, newfont, Brushes.Blue, 50, 200); ボタン3 pictureBox1.DrawToBitmap(bmp, new Rectangle(0, 0, 800, 600)); bmp.Save(c:\\a.png);

  • Powershell 先頭文字置換

    Powershellについて質問があります。 ■やりたい事 先頭文字を抽出して大文字に置換したい。 例:hogehoge → Hogehoge ■考えている方法 $i = hogehoge $a = $i.substring(0,1) $b = $i.substring(0,1).ToUpper() $c = $i.Replace($a,$b) この場合”HogeHoge”となるような気がしますが、先頭の"h"のみ大文字に変換したいです。 どのような書き方が良いかご教授ください。 宜しくお願いします。 ■環境 PS C:> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1

専門家に質問してみよう