質問編集履歴

6

確認

2022/05/11 06:35

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  連番ファイルを作成してgnuplotでgifを作ろうと思っています。
2
2
  その為にファイル名out.xxxx.datから例えばz,Reを抜き出してxx.datとしたいのですが自分の書いたプログラムでは1桁番号のとき_0.datのように数字の前にスペースが入ってしまい都合が悪いです。自分のプログラムをどのように修正すれば良いですか?
3
+
4
+ また本質とは関係ないのですがgnuplotで 「do for[i=0:21] {plot sprintf("%d.dat",i)}」と入力するとi=0では弾かれてi=1では弾かれないといった現象が起きているのですがこの原因も知っている方がいれば教えてほしいです。
3
5
 
4
6
  program replot
5
7
  implicit none

5

質問変更

2022/05/11 03:25

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
@@ -1 +1 @@
1
- 【初心者】fortran素因数分解
1
+ 連番ファイルを作りたい(fortran)
test CHANGED
@@ -1,36 +1,21 @@
1
- 入力した自然数n(10000以下)素因数分解をして積の形で表示する(例えばn=12ならばn=2×2×3と表示したい)コードを書いているのすがどのようにすれば上手くいくのかわかりません。連結(//)用いる時に通常は文字数を指定するよなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因っている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
2
- またwrite,read数のタリクは何故かプレビューに表示されていだけコードは書か
1
+ 連番ファイル作成してgnuplotgif作ろうとっています。
2
+ その為にファイル名out.xxxx.datから例えばz,Reを抜き出してxx.datとしたいのですが自分の書いたプログラムでは1桁番号のとき_0.datのように前にペーが入っしま都合が悪いです。自分プログラムをどのよう修正すば良か?
3
3
 
4
- program sosu
4
+ program replot
5
5
  implicit none
6
- integer n,m,i,a
6
+ integer::i,j
7
+ real(8)::x,y,z,Re,Im
8
+ character(len=12) :: filename,outname
9
+ do j=0,99
7
- write(*,*)"input n(n is natural number,n is smaller than 10000)"
10
+ write(filename,'("out.00",i2.2,".dat")')j
11
+ write(outname,'(i2,".dat")')j
12
+ open(1,file=filename)
13
+ open(2,file=outname)
14
+ do i=1,1000
15
+ read(1,*)x,y,z,Re,Im
8
- read(*,*)n
16
+ write(2,*)z,Re
9
- if(n<=0) then
10
- write(*,*)"It isn't natural number"
11
- else if(n>10000) then
12
- write(*,*)"It is too large number"
13
- endif
17
+ enddo
14
- m=int(sqrt(dble(n)))
15
- do
16
- i=2
17
- a=1
18
- if(m==1) then
19
- exit
20
- else if (mod(m,i)==0) then
21
- a=a//"×"//i
22
- m=m/i
23
- cycle
24
- else
18
+ close(1)
25
- i=i+1
26
- cycle
19
+ close(2)
27
- endif
28
20
  enddo
29
- write(*,*)a
30
- end program sosu
21
+ end program replot
31
-
32
- 18 | a=a//"×"//i
33
- | 1
34
- Error: Operands of string concatenation operator at (1) are INTEGER(4)/CHARACTER(1)
35
-
36
-

4

補足

2022/04/25 04:53

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,5 @@
1
1
  入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2×2×3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
2
+ またwrite,read関数のアスタリスクは何故かプレビューに表示されていないだけで元のコードには書かれています。
2
3
 
3
4
  program sosu
4
5
  implicit none
@@ -17,7 +18,7 @@
17
18
  if(m==1) then
18
19
  exit
19
20
  else if (mod(m,i)==0) then
20
- a=a//"*"//i
21
+ a=a//"×"//i
21
22
  m=m/i
22
23
  cycle
23
24
  else
@@ -28,7 +29,7 @@
28
29
  write(*,*)a
29
30
  end program sosu
30
31
 
31
- 18 | a=a//"*"//i
32
+ 18 | a=a//"×"//i
32
33
  | 1
33
34
  Error: Operands of string concatenation operator at (1) are INTEGER(4)/CHARACTER(1)
34
35
 

3

微修正

2022/04/25 04:51

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2"*"2"*"3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
1
+ 入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2×2×3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
2
2
 
3
3
  program sosu
4
4
  implicit none

2

微修正

2022/04/25 04:50

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2*2*3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
1
+ 入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2"*"2"*"3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
2
2
 
3
3
  program sosu
4
4
  implicit none

1

入出力の目的の記載

2022/04/25 04:40

投稿

bluegarnets
bluegarnets

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 入力した自然数(10000以下)を素因数分解をして積の形で表示する目的のコードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
1
+ 入力した自然数n(10000以下)を素因数分解をして積の形で表示する(例えばn=12ならばn=2*2*3と表示したい)コードを書いているのですがどのようにすれば上手くいくのかわかりません。連結(//)を用いる時に通常は文字数を指定するようなのですが、素因数分解の場合は文字数の指定が出来なくてそれがエラーの原因となっている気がします。どのように書き換えれば上手くいくのでしょうか?よろしくお願いします。
2
2
 
3
3
  program sosu
4
4
  implicit none