前提・実現したいこと
txtファイルからデータを取得し最大のscoreを出したいです。一応、0.5以上差が開いたら、新しい最大値をだしたいのでk++にしています。
変更後のコードです
c
1 2#include<stdio.h> 3#include<stdlib.h> 4 5int max_score[100],max_time[100],k=0,j,i; 6 7struct lv{ 8 float score; 9 float time; 10 struct lv *next; 11}; 12struct lv *add_list(float t,float s ,struct lv *head){ 13 struct lv *new_head; // 宣言 14 new_head = (struct lv *)malloc(sizeof(struct lv)); // 領域確保 15 new_head->time = t;// 新しいデータの代入 16 new_head->score = s;// 新しいデータの代入 17 new_head->next = head; // 古い head を新しい head の次のデータに指定 18 return new_head; 19} 20void max(struct lv *head){ 21 if(head->score>max_score[k]){ 22 max_score[k]=head->score; 23 max_time[k]=head->time; 24 } 25 else{ 26 if(max_score[k]-head->score >0.5){ 27 k++; 28 } 29 } 30 if(head->next !=NULL) 31 max(head->next); 32 else{ 33 for(j=0;j==k;j++){ 34 printf("番号:%d,時間:%f,値:%f\n",j+1,max_time[j],max_score[j]); 35 } 36 } 37} 38void main(){ 39 FILE *fp; 40 struct lv *lv; 41 struct lv *head=NULL; 42 float t,s; 43 int i=1000,n=0; 44 45 if ((fp=fopen("s:\jx18250_0426_100Hz.txt","r"))==NULL){ 46 printf("Cant open file %s\n", "a.txt"); /*オープンに失敗したらメッセージ表示*/ 47 } 48 while(fscanf(fp,"%f,%f",&t,&s)!= EOF){ 49 head=add_list(t,s,head); 50 } 51 52 max(head); 53 54 free(lv); 55 fclose(fp); 56}
試したこと
max()のところはとまるのはなくなりましたが、時間、値が0.000のままです。txtからの時間、値がとりだせていることは確認済みです。
回答6件
あなたの回答
tips
プレビュー