質問編集履歴

4

質問内容の変更

2020/08/28 02:53

投稿

MYJ
MYJ

スコア6

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- のような文字と数列が混じっている配列をcsvファイルに出力したいのですがうまくいきません。
17
+ のような配列を1行ずつ読み込みたいのですがうまくいきません。
18
18
 
19
19
  行数のカウントはうまくいくのですが、数値を読み込みません、どのようにしたらいいのでしょうか?
20
20
 

3

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

2020/08/28 02:53

投稿

MYJ
MYJ

スコア6

test CHANGED
File without changes
test CHANGED
@@ -26,11 +26,37 @@
26
26
 
27
27
  ```
28
28
 
29
- n= 3
29
+ n= 4
30
30
 
31
31
  test
32
32
 
33
+ 0.00000000
33
34
 
35
+ At line 27 of file p2.f90
36
+
37
+ Fortran runtime error: Attempting to allocate already allocated variable 'a'
38
+
39
+
40
+
41
+ Error termination. Backtrace:
42
+
43
+ #0 0xffffffffffffffff in ???
44
+
45
+ #1 0xffffffffffffffff in ???
46
+
47
+ #2 0xffffffffffffffff in ???
48
+
49
+ #3 0xffffffffffffffff in ???
50
+
51
+ #4 0xffffffffffffffff in ???
52
+
53
+ #5 0xffffffffffffffff in ???
54
+
55
+ #6 0xffffffffffffffff in ???
56
+
57
+ #7 0xffffffffffffffff in ???
58
+
59
+ #8 0xffffffffffffffff in ???
34
60
 
35
61
  ```
36
62
 
@@ -60,13 +86,9 @@
60
86
 
61
87
  read(20,*) str1
62
88
 
63
- n=1
89
+ n=0
64
-
65
-
66
90
 
67
91
  do
68
-
69
- allocate(a(100))
70
92
 
71
93
  read(20,*,end=99) a
72
94
 
@@ -78,13 +100,11 @@
78
100
 
79
101
  99 print *,('n='),n
80
102
 
81
-
82
-
83
103
  print *,str1
84
104
 
105
+ do i=2,n
85
106
 
86
-
87
- do i=2,n
107
+ allocate(a(100))
88
108
 
89
109
  print *,a(i)
90
110
 
@@ -98,15 +118,11 @@
98
118
 
99
119
  !open(21,file='p2.csv',status='replace')
100
120
 
101
-
102
-
103
121
  !do i=1,n
104
122
 
105
123
  ! write(21,*) a
106
124
 
107
125
  !end do
108
-
109
-
110
126
 
111
127
  !close(21)
112
128
 

2

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

2020/08/28 02:45

投稿

MYJ
MYJ

スコア6

test CHANGED
File without changes
test CHANGED
@@ -29,8 +29,6 @@
29
29
  n= 3
30
30
 
31
31
  test
32
-
33
- 3.00000000
34
32
 
35
33
 
36
34
 

1

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

2020/08/28 02:36

投稿

MYJ
MYJ

スコア6

test CHANGED
File without changes
test CHANGED
@@ -14,63 +14,23 @@
14
14
 
15
15
 
16
16
 
17
- のような文字と数列が混じっている配列をcsvファイルに出力したいのですが、うまくいきません。行数のカウントはうまくいくのですが、配列を読み込みません、どのようにしたらいいのでしょうか?
17
+ のような文字と数列が混じっている配列をcsvファイルに出力したいのですが、うまくいきません。
18
+
19
+ 行数のカウントはうまくいくのですが、数値を読み込みません、どのようにしたらいいのでしょうか?
18
20
 
19
21
 
20
22
 
21
- ### 発生している問題・エラーメッセージ
23
+ ### 実行結果
22
24
 
23
25
 
24
26
 
25
27
  ```
26
28
 
27
- Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
29
+ n= 3
28
30
 
31
+ test
29
32
 
30
-
31
- Backtrace for this error:
32
-
33
- #0 0xffffffffffffffff in ???
34
-
35
- #1 0xffffffffffffffff in ???
36
-
37
- #2 0xffffffffffffffff in ???
38
-
39
- #3 0xffffffffffffffff in ???
33
+ 3.00000000
40
-
41
- #4 0xffffffffffffffff in ???
42
-
43
- #5 0xffffffffffffffff in ???
44
-
45
- #6 0xffffffffffffffff in ???
46
-
47
- #7 0xffffffffffffffff in ???
48
-
49
- #8 0xffffffffffffffff in ???
50
-
51
- #9 0xffffffffffffffff in ???
52
-
53
- #10 0xffffffffffffffff in ???
54
-
55
- #11 0xffffffffffffffff in ???
56
-
57
- #12 0xffffffffffffffff in ???
58
-
59
- #13 0xffffffffffffffff in ???
60
-
61
- #14 0xffffffffffffffff in ???
62
-
63
- #15 0xffffffffffffffff in ???
64
-
65
- #16 0xffffffffffffffff in ???
66
-
67
- #17 0xffffffffffffffff in ???
68
-
69
- #18 0xffffffffffffffff in ???
70
-
71
- #19 0xffffffffffffffff in ???
72
-
73
- Segmentation fault (コアダンプ)
74
34
 
75
35
 
76
36
 
@@ -88,21 +48,29 @@
88
48
 
89
49
  implicit none
90
50
 
91
- real,allocatable,dimension(:) :: a
51
+ real,allocatable :: a(:)
92
52
 
93
53
  integer i
94
54
 
95
55
  integer n
96
56
 
97
-
57
+ character(len=50) :: str1
58
+
59
+
98
60
 
99
61
  open(20,file='p2.txt',status='old')
100
62
 
63
+ read(20,*) str1
64
+
101
- n=0
65
+ n=1
66
+
67
+
102
68
 
103
69
  do
104
70
 
71
+ allocate(a(100))
72
+
105
- read(20,*,end=100) a
73
+ read(20,*,end=99) a
106
74
 
107
75
  n=n+1
108
76
 
@@ -110,19 +78,25 @@
110
78
 
111
79
 
112
80
 
81
+ 99 print *,('n='),n
82
+
83
+
84
+
113
- 100 print *,n
85
+ print *,str1
114
86
 
115
87
 
116
88
 
117
- do i=1,n
89
+ do i=2,n
118
90
 
119
- print *,a
91
+ print *,a(i)
120
92
 
121
93
  end do
122
94
 
123
95
 
124
96
 
125
97
  close(20)
98
+
99
+
126
100
 
127
101
  !open(21,file='p2.csv',status='replace')
128
102
 
@@ -142,15 +116,13 @@
142
116
 
143
117
  end program p2
144
118
 
145
-
146
-
147
119
  ```
148
120
 
149
121
 
150
122
 
151
123
  ### 試したこと
152
124
 
153
- 行数がわかっていないとして、nを行数の変数としてカウントしたのちその分だけ出力しようとしました。
125
+
154
126
 
155
127
  ### 補足情報(FW/ツールのバージョンなど)
156
128