teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

質問内容の変更

2020/08/28 02:53

投稿

MYJ
MYJ

スコア6

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  4,5
7
7
  6,7,8
8
8
 
9
- のような文字と数列が混じっている配列をcsvファイルに出力したいのですがうまくいきません。
9
+ のような配列を1行ずつ読み込みたいのですがうまくいきません。
10
10
  行数のカウントはうまくいくのですが、数値を読み込みません、どのようにしたらいいのでしょうか?
11
11
 
12
12
  ### 実行結果

3

実行結果を変更しました。

2020/08/28 02:53

投稿

MYJ
MYJ

スコア6

title CHANGED
File without changes
body CHANGED
@@ -12,9 +12,22 @@
12
12
  ### 実行結果
13
13
 
14
14
  ```
15
- n= 3
15
+ n= 4
16
16
  test
17
+ 0.00000000
18
+ At line 27 of file p2.f90
19
+ Fortran runtime error: Attempting to allocate already allocated variable 'a'
17
20
 
21
+ Error termination. Backtrace:
22
+ #0 0xffffffffffffffff in ???
23
+ #1 0xffffffffffffffff in ???
24
+ #2 0xffffffffffffffff in ???
25
+ #3 0xffffffffffffffff in ???
26
+ #4 0xffffffffffffffff in ???
27
+ #5 0xffffffffffffffff in ???
28
+ #6 0xffffffffffffffff in ???
29
+ #7 0xffffffffffffffff in ???
30
+ #8 0xffffffffffffffff in ???
18
31
  ```
19
32
 
20
33
  ### 該当のソースコード
@@ -29,30 +42,25 @@
29
42
 
30
43
  open(20,file='p2.txt',status='old')
31
44
  read(20,*) str1
32
- n=1
45
+ n=0
33
-
34
46
  do
35
- allocate(a(100))
36
47
  read(20,*,end=99) a
37
48
  n=n+1
38
49
  end do
39
50
 
40
51
  99 print *,('n='),n
41
-
42
52
  print *,str1
43
-
44
53
  do i=2,n
54
+ allocate(a(100))
45
55
  print *,a(i)
46
56
  end do
47
57
 
48
58
  close(20)
49
59
 
50
60
  !open(21,file='p2.csv',status='replace')
51
-
52
61
  !do i=1,n
53
62
  ! write(21,*) a
54
63
  !end do
55
-
56
64
  !close(21)
57
65
 
58
66
  end program p2

2

実行結果を変更しました。

2020/08/28 02:45

投稿

MYJ
MYJ

スコア6

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,6 @@
14
14
  ```
15
15
  n= 3
16
16
  test
17
- 3.00000000
18
17
 
19
18
  ```
20
19
 

1

ソースコードと実行結果を変更しました。

2020/08/28 02:36

投稿

MYJ
MYJ

スコア6

title CHANGED
File without changes
body CHANGED
@@ -6,36 +6,16 @@
6
6
  4,5
7
7
  6,7,8
8
8
 
9
- のような文字と数列が混じっている配列をcsvファイルに出力したいのですが、うまくいきません。行数のカウントはうまくいくのですが、配列を読み込みません、どのようにしたらいいのでしょうか?
9
+ のような文字と数列が混じっている配列をcsvファイルに出力したいのですが、うまくいきません。
10
+ 行数のカウントはうまくいくのですが、数値を読み込みません、どのようにしたらいいのでしょうか?
10
11
 
11
- ### 発生している問題・エラーメッセージ
12
+ ### 実行結果
12
13
 
13
14
  ```
15
+ n= 3
16
+ test
14
- Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
17
+ 3.00000000
15
18
 
16
- Backtrace for this error:
17
- #0 0xffffffffffffffff in ???
18
- #1 0xffffffffffffffff in ???
19
- #2 0xffffffffffffffff in ???
20
- #3 0xffffffffffffffff in ???
21
- #4 0xffffffffffffffff in ???
22
- #5 0xffffffffffffffff in ???
23
- #6 0xffffffffffffffff in ???
24
- #7 0xffffffffffffffff in ???
25
- #8 0xffffffffffffffff in ???
26
- #9 0xffffffffffffffff in ???
27
- #10 0xffffffffffffffff in ???
28
- #11 0xffffffffffffffff in ???
29
- #12 0xffffffffffffffff in ???
30
- #13 0xffffffffffffffff in ???
31
- #14 0xffffffffffffffff in ???
32
- #15 0xffffffffffffffff in ???
33
- #16 0xffffffffffffffff in ???
34
- #17 0xffffffffffffffff in ???
35
- #18 0xffffffffffffffff in ???
36
- #19 0xffffffffffffffff in ???
37
- Segmentation fault (コアダンプ)
38
-
39
19
  ```
40
20
 
41
21
  ### 該当のソースコード
@@ -43,24 +23,31 @@
43
23
  ```fortran
44
24
  program p2
45
25
  implicit none
46
- real,allocatable,dimension(:) :: a
26
+ real,allocatable :: a(:)
47
27
  integer i
48
28
  integer n
49
-
29
+ character(len=50) :: str1
30
+
50
31
  open(20,file='p2.txt',status='old')
32
+ read(20,*) str1
51
- n=0
33
+ n=1
34
+
52
35
  do
36
+ allocate(a(100))
53
- read(20,*,end=100) a
37
+ read(20,*,end=99) a
54
38
  n=n+1
55
39
  end do
56
40
 
41
+ 99 print *,('n='),n
42
+
57
- 100 print *,n
43
+ print *,str1
58
44
 
59
- do i=1,n
45
+ do i=2,n
60
- print *,a
46
+ print *,a(i)
61
47
  end do
62
48
 
63
49
  close(20)
50
+
64
51
  !open(21,file='p2.csv',status='replace')
65
52
 
66
53
  !do i=1,n
@@ -70,11 +57,10 @@
70
57
  !close(21)
71
58
 
72
59
  end program p2
73
-
74
60
  ```
75
61
 
76
62
  ### 試したこと
77
- 行数がわかっていないとして、nを行数の変数としてカウントしたのちその分だけ出力しようとしました。
63
+
78
64
  ### 補足情報(FW/ツールのバージョンなど)
79
65
 
80
66
  ここにより詳細な情報を記載してください。