前提
2017,1,1,1,5.8,1.5,南
などのように左から西暦、月、日、時、気温、風速、風向が書かれており、それが1月31日まで、1時間おきの数値が書かれたcsvファイルから数値を読み取り、各日ごとの平均気温、最高気温、最低気温、平均風速を別のcsvファイルに書き込むプログラムを作成したいです。
実現したいこと
-osaka-hour.csvというcsvファイルから数値を読み取り、24行ごとの平均値、最高値、最低値をosaka-day.csvというcsvファイルに書き出したい。
発生している問題・エラーメッセージ
24行ごとに区切って平均、最高値、最低値を出す方法がわかりません。
該当のソースコード
C
1/* ex1.c */ 2/* fscanfの例 */ 3#define _CRT_SECURE_NO_WARNINGS 4#include <stdio.h> 5#define BUF_NUM 256 6int main(void) { 7 FILE* fin,*fout; 8 char buf[BUF_NUM],hougaku[BUF_NUM]; 9 int i, nen,tuki,hi,ji; 10 double kion=0,fusoku=0,heikin=0,kionwa=0,saikou=0,saitei=0,heifu=0; 11 12 //ファイルオープン 13 fin = fopen("osaka-hour.csv", "r"); 14 if (fin == NULL) { 15 printf("入力ファイルをオープンできません\n"); 16 return 1; 17 } 18 19 //最初の4行は使わないので読み捨てる 20 for (i = 0; i < 4; i++) { 21 fgets(buf, BUF_NUM, fin); 22 } 23 24 fout = fopen("osaka-day.csv", "w"); 25 26 //書式付きで読む 27 while (fscanf(fin, "%d,%d,%d,%d,%lf,%lf,%s", &nen, &tuki,&hi,&ji,&kion,&fusoku,&hougaku) != EOF) { 28 //printf("%d,%d,%d,%d,%.2lf,%.2lf\n", nen, tuki, hi, ji, kion, fusoku); //カンマ付けて標準出力 29 fprintf(fout, "%d,%d,%d,%d,%.2lf,%.2lf\n", nen, tuki, hi, ji, kion, fusoku); 30 31 32 do { 33 kionwa += kion; 34 35 if (saikou < kion) { 36 saikou = kion; 37 } 38 39 if (saitei > kion) { 40 saitei = kion; 41 } 42 } while (ji != 24); 43 44 /*if (ji = 24) { 45 heikin = kionwa / 24; 46 printf( "%d,%d,%d,%.2lf,%.2lf,%.2lf,%.2lf\n", nen, tuki, hi, heikin, saikou,saitei, heifu); 47 } 48 else { 49 kionwa += kion; 50 51 if (saikou < kion) { 52 saikou = kion; 53 } 54 55 if (saitei > kion) { 56 saitei = kion; 57 } 58 }*/ 59 60 } 61 62 63 64 65 66 67 68 69 fclose(fin); 70 fclose(fout); 71 72 return 0; 73}
試したこと
fscanのwhileループの中で出そうとしたのですが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件