質問するログイン新規登録

質問編集履歴

3

コードの修正

2019/05/08 02:55

投稿

tmtmmm
tmtmmm

スコア24

title CHANGED
File without changes
body CHANGED
@@ -35,7 +35,7 @@
35
35
  if(head->next !=NULL)
36
36
  max(head->next);
37
37
  else{
38
- for(j=0;j<100;j++){
38
+ for(j=0;j==k;j++){
39
39
  printf("番号:%d,時間:%f,値:%f\n",j+1,max_time[j],max_score[j]);
40
40
  }
41
41
  }

2

直したコードをかいてあります。

2019/05/08 02:55

投稿

tmtmmm
tmtmmm

スコア24

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  txtファイルからデータを取得し最大のscoreを出したいです。一応、0.5以上差が開いたら、新しい最大値をだしたいのでk++にしています。
4
+ 変更後のコードです
5
+ ```c
4
6
 
5
- ### 該当のソースコード
6
- ```c
7
7
  #include<stdio.h>
8
8
  #include<stdlib.h>
9
9
 
@@ -23,21 +23,22 @@
23
23
  return new_head;
24
24
  }
25
25
  void max(struct lv *head){
26
- for(i=0;i<100;i++){
27
26
  if(head->score>max_score[k]){
28
27
  max_score[k]=head->score;
29
28
  max_time[k]=head->time;
30
29
  }
31
30
  else{
32
- if(head->score - max_score[k]>0.5){
31
+ if(max_score[k]-head->score >0.5){
33
32
  k++;
34
33
  }
35
34
  }
35
+ if(head->next !=NULL)
36
+ max(head->next);
37
+ else{
38
+ for(j=0;j<100;j++){
39
+ printf("番号:%d,時間:%f,値:%f\n",j+1,max_time[j],max_score[j]);
40
+ }
36
41
  }
37
- max(head->next); //再帰呼び出し <-ここを消すと停止はしません
38
- for(j=0;j=i;j++){
39
- printf("%d,時間:%f,値:%f",j+1,max_time[j],max_score[j]);
40
- }
41
42
  }
42
43
  void main(){
43
44
  FILE *fp;
@@ -47,7 +48,7 @@
47
48
  int i=1000,n=0;
48
49
 
49
50
  if ((fp=fopen("s:\jx18250_0426_100Hz.txt","r"))==NULL){
50
- printf("Cant open file %s\n", "aaa.txt"); /*オープンに失敗したらメッセージ表示*/
51
+ printf("Cant open file %s\n", "a.txt"); /*オープンに失敗したらメッセージ表示*/
51
52
  }
52
53
  while(fscanf(fp,"%f,%f",&t,&s)!= EOF){
53
54
  head=add_list(t,s,head);
@@ -59,6 +60,5 @@
59
60
  fclose(fp);
60
61
  }
61
62
  ```
62
-
63
63
  ### 試したこと
64
- max()の関数のところで止まるようです。
64
+ max()のところはとまるのはなくなりましたが、時間、値が0.000のままです。txtからの時間、値がとりだせていることは確認済みです。

1

詳細

2019/05/08 02:40

投稿

tmtmmm
tmtmmm

スコア24

title CHANGED
File without changes
body CHANGED
@@ -34,7 +34,7 @@
34
34
  }
35
35
  }
36
36
  }
37
- max(head->next); //再帰呼び出し
37
+ max(head->next); //再帰呼び出し <-ここを消すと停止はしません
38
38
  for(j=0;j=i;j++){
39
39
  printf("%d,時間:%f,値:%f",j+1,max_time[j],max_score[j]);
40
40
  }