質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

1回答

691閲覧

Fortranにおけるデータ解析

退会済みユーザー

退会済みユーザー

総合スコア0

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

0クリップ

投稿2022/12/15 07:49

編集2022/12/19 07:17

試したこと

正しく表示されているかを確認しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2022/12/15 08:19

何故にうまくいかんのか、コード見せてくれんと誤りの指摘ができません。 データ列を1秒ごとのまとまりに区切ることはできているのかしら?
otn

2022/12/15 09:48

質問は編集できますので、コードは質問本文に書きましょう。コメントのコードは削除。 > エラーになってしまいます。 エラーメッセージも本文に載せましょう。
退会済みユーザー

退会済みユーザー

2022/12/15 10:16

otn 様、コメントありがとうございます。 コメントの内容は質問本文のほうに追記いたしました。 また、コメント内容の方は削除申請しました。 teratailの操作がまだ不慣れのため、ご迷惑をおかけしました。
jimbe

2022/12/15 10:18

c のタグは何の関係があるのでしょうか。
退会済みユーザー

退会済みユーザー

2022/12/15 10:24 編集

jimbe 様、コメントありがとうございます。 FortranとCは相互運用性があるため、一応Cのタグを付けさせていただきました。
otn

2022/12/15 10:25

コメントごと削除依頼しなくても、コメント編集してコードだけ消せば良いのに。 エラーになるというのは間違いで、出力結果がおかしいだけと言うことでしょうか?
退会済みユーザー

退会済みユーザー

2022/12/15 10:40 編集

otn様 >エラーになるというのは間違いで、出力結果がおかしいだけと言うことでしょうか? そうです。エラーではなく出力結果がおかしいです。(コメント編集しました。教えてくださりありがとうございます。)
jimbe

2022/12/15 12:59

> FortranとCは相互運用性があるため タグが意味するのは、どの知識を持っている人に見て欲しいか、どのような知識を持っている人ならこの質問の回答を知っているだろうかということです。 この質問の回答として c のコード出されても OK ということでは無いように思うのですが。
退会済みユーザー

退会済みユーザー

2022/12/15 13:32

jimbe様 失礼いたしました。 タグは外しました。
guest

回答1

0

入出力の書式が実際の入力データ、希望の出力形式と合ってないですね。
よく見て書式を指定しましょう。

上記は、書き換え前の、「表示内容が期待通りで無い」という質問の回答です。

現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムは完成しました。

ということで、良かったです。

datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、それらを上手くコードに書けません。

それよりも、
・今何時何分何秒目の処理をしているかを保持
・その時間内の始値・高値・安値・終値をifを使って更新
・保持している時刻と異なる時刻のデータが来たら、保存してある値を出力して、各変数を初期化
という方針が良いです。配列不要。

入力データで、時刻の逆転が生じないという前提ですが。

投稿2022/12/15 10:44

編集2022/12/16 00:25
otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/12/16 06:16 編集

回答、ありがとうございます。 質問本文を編集しました。
otn

2022/12/16 08:49

> if (ss > ss0) then は駄目ですね。考えるまでも無く、9:00:59から9:01:00の時に成立しません。 そもそも 090059 と6桁の数値として扱えば良いので、09と00と59と3つに分解する意味が無いです。
otn

2022/12/16 08:51

終値は、時刻が切り替わった1つ前の行の price なので、ss0 と ss の関係のように1つ前の値を覚えておけば良い。
otn

2022/12/16 12:56

指摘し忘れてましたが、最後に出力するコードが無いですね。end=99の飛んだ先に入れないと。
退会済みユーザー

退会済みユーザー

2022/12/16 14:04

>最後に出力するコードが無いですね。 完全に見落としていました。ありがとうございます。 後は、どうにか終値を求めたいのですが中々正しく求めることができません。(他と同様に、IF文で終値を求めようとしています。)
otn

2022/12/16 14:13

終値は、時刻が切り替わった1つ前の行の price なので、ss0 と ss の関係のように1つ前の値を覚えておけば良い。
退会済みユーザー

退会済みユーザー

2022/12/17 02:51 編集

ありがとうございます。 もしかしたら、終値を正しく出力できたかもしれません。一応、そのコードを質問本文のほうにも記載します。
otn

2022/12/17 04:55

終値は良いと思いますが、99番以降が駄目ですね。というかテストしてない?
退会済みユーザー

退会済みユーザー

2022/12/17 10:10 編集

テストは毎回しています。 このデータは、時刻が11:30:00:000000(11時30分ジャスト)までのデータが書かれています。(この部分が説明不足でした。) 従って、時刻が最後の行になると、実行画面のように時刻・株価が1行しかないので、1秒ごとに区切るとするとその株価が四本値になると考えています。
otn

2022/12/17 10:46

ではテストデータが悪いのですね。例えば次の4行だけのデータで正しく4本値が出ますか? 090000000001 111.5 090000000002 111.1 090000000003 111.9 090000000004 111.2
退会済みユーザー

退会済みユーザー

2022/12/17 11:57 編集

実際にdatファイルにして、試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問