前提・実現したいこと
maxとminを正しく表示する
エラーメッセージ
該当のソースコード
c++
ソースコード
#include <memory.h> #include <malloc.h> #include <stdlib.h> struct stock { int year; double price; }; int main(void) { struct stock *data; FILE* fp; int i; int i_max,i_min; fp = fopen("../../stock.dat", "rb"); if (fp == NULL) { printf("File open error\n"); return 1; } data = (struct stock*)malloc(sizeof(struct stock) * 32); if (data == NULL) { printf("Memory allocation error.¥n"); return 1; } for (i = 0; i < 32; i++) { fread(&data[i].year, sizeof(int), 1, fp); fread(&data[i].price, sizeof(double), 1, fp); } fclose(fp); i_max = 0; i_min = 0; for ( i = 0; i < 32; i++) { if (data->price > data->price) { i_max = i; } else if(data[i].price < data->price) { i_min = i; } } printf("Max : %8.2lf (%d)\n", data[i_max].price,data[i_max].year); printf("Min : %8.2lf (%d)\n", data[i_min].price,data[i_min].year); free(data); return 0; } ### 試したこと ここに問題に対して試したことを記載してください。 data->[i]priceと記述したのですが上手くいきませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。 for ( i = 0; i < 32; i++) { if (data->price > data->price) { i_max = i; } else if(data[i].price < data->price) { i_min = i; } } このfor文の中で最高のpriceとyearの値と、最低のpriceとyearの値を求めるのですが、構造体ポインタの記述の方法があっているのかということと最高と最低のif文での記述の方法が正しいのかをご教授頂きたいと考えています。
うまくいかないとはどうなるんでしょうか。
問題が見えません
正解は、max : 38915.80 (1989) min : 8455.35 (2011)となるのですが私がデバックを行ったら max : 9893.82 (1983) min : 8455.35 (2011)となり正解とは違う数字になりました。
data->[i]priceと記述すると式のはポインタ型が必要ですというエラーがでます。
上手くいきませんでした
正しく出来ませんでした
---
状況報告ですか?
それにしても
「期待する結果」
「与えたデータ」
「(望むものではなかったにしても)得られた結果」
が報告としては必要と思いますが。
---
報告はそれとして、「質問」はなんですか?
for ( i = 0; i < 32; i++)
{
if (data->price > data->price)
{
i_max = i;
}
else if(data[i].price < data->price)
{
i_min = i;
}
}
このfor文の中で最高のpriceとyearの値と、最低のpriceとyearの値を求めるのですが、構造体ポインタの記述の方法があっているのかということと最高と最低のif文での記述の方法が正しいのかをご教授頂きたいと考えています。
ここは、「質問への追記・修正の依頼」欄です。
質問への情報追加は質問を編集して行ってください。
すいません、承知致しました。
回答1件
あなたの回答
tips
プレビュー