fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_DATA 1000 // 保存できる最大データ数
  5. #define THRESHOLD 3.0 // 波の開始・終了の基準電位
  6.  
  7. typedef struct {
  8. double time;
  9. double voltage;
  10. } DataPoint;
  11.  
  12. void findWavePeaks(DataPoint data[], int size) {
  13. int inWave = 0; // 波の中かどうかを示すフラグ
  14. double peakTime = 0;
  15. double peakVoltage = 0;
  16. int waveCount = 0;
  17.  
  18. for (int i = 0; i < size; i++) {
  19. if (!inWave && data[i].voltage >= THRESHOLD) {
  20. // 波の開始
  21. inWave = 1;
  22. peakTime = data[i].time;
  23. peakVoltage = data[i].voltage;
  24. }
  25.  
  26. if (inWave) {
  27. // ピーク値の更新
  28. if (data[i].voltage > peakVoltage) {
  29. peakTime = data[i].time;
  30. peakVoltage = data[i].voltage;
  31. }
  32. }
  33.  
  34. if (inWave && data[i].voltage <= THRESHOLD) {
  35. // 波の終了
  36. waveCount++;
  37. printf("波 %d のピーク: 時間 = %.6f, 電位 = %.6f\n", waveCount, peakTime, peakVoltage);
  38. inWave = 0;
  39. }
  40. }
  41. }
  42.  
  43. int main() {
  44. DataPoint data[MAX_DATA];
  45. int size = 0;
  46. char input[50];
  47.  
  48.  
  49.  
  50. // データの読み込み
  51. while (fgets(input, sizeof(input), stdin)) {
  52. if (sscanf(input, "%lf,%lf", &data[size].time, &data[size].voltage) == 2) {
  53. size++;
  54. if (size >= MAX_DATA) break;
  55. }
  56. }
  57.  
  58. findWavePeaks(data, size);
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0.01s 5280KB
stdin
0.000000,2.314864
0.100000,2.319954
0.200000,2.312319
0.300000,2.319954
0.400000,2.325044
0.500000,2.319954
0.600000,2.325044
0.700000,2.312319
0.800000,2.319954
0.900000,2.319954
1.000000,2.319954
1.100000,2.325044
1.200000,2.327590
1.300000,2.330135
1.400000,2.373400
1.500000,2.431936
1.600000,2.638084
1.700000,3.052926
1.800000,3.579749
1.900000,3.910604
2.000000,3.918239
2.100000,3.897878
2.200000,3.918239
2.300000,3.651010
2.400000,3.284524
2.500000,2.974029
2.600000,2.732251
2.700000,2.658445
2.800000,2.635539
2.900000,2.638084
3.000000,2.696620
3.100000,2.742431
3.200000,3.409231
3.300000,3.648465
3.400000,3.831707
3.500000,3.976775
3.600000,3.981865
3.700000,3.956414
3.800000,3.857158
3.900000,3.709546
4.000000,3.475402
4.100000,3.231078
4.200000,3.022385
4.300000,2.910403
4.400000,2.798422
4.500000,2.798422
4.600000,3.024930
4.700000,3.371055
4.800000,3.658645
4.900000,3.885153
5.000000,4.030220
5.100000,4.058216
5.200000,4.017495
5.300000,3.897878
5.400000,3.661190
5.500000,3.419411
5.600000,3.241258
5.700000,3.080921
5.800000,3.037655
5.900000,2.976574
6.000000,2.900223
6.100000,2.892588
6.200000,3.030020
6.300000,3.320155
6.400000,3.592474
6.500000,3.824072
6.600000,3.966594
6.700000,4.022585
6.800000,4.065851
6.900000,4.098936
7.000000,4.083666
7.100000,4.101482
7.200000,3.974230
7.300000,3.462677
7.400000,3.017295
7.500000,2.610089
7.600000,2.493017
7.700000,2.477747
7.800000,2.480292
7.900000,2.612634
8.000000,2.722071
8.100000,2.683895
8.200000,2.785696
8.300000,3.353240
8.400000,3.882608
8.500000,4.020040
8.600000,4.063306
8.700000,4.042946
8.800000,4.042946
8.900000,4.040401
9.000000,4.009860
9.100000,3.915694
9.200000,3.411776
9.300000,3.009660
9.400000,2.823872
9.500000,2.742431
9.600000,2.696620
9.700000,2.643174
9.800000,2.630449
9.900000,2.625359
10.000000,2.632994
10.100000,2.757701
10.200000,3.116552
10.300000,3.447407
10.400000,3.707001
10.500000,3.941144
10.600000,4.040401
10.700000,4.027675
10.800000,4.002225
10.900000,3.938599
11.000000,3.602654
11.100000,3.055471
11.200000,2.788242
11.300000,2.688985
11.400000,2.650809
11.500000,2.643174
11.600000,2.818782
11.700000,3.114006
11.800000,3.210718
11.900000,3.315065
12.000000,3.317610
12.100000,3.345605
12.200000,3.925874
12.300000,4.065851
12.400000,4.020040
12.500000,4.073486
12.600000,4.030220
12.700000,3.885153
12.800000,3.559388
12.900000,2.923129
13.000000,2.403941
13.100000,2.350495
13.200000,2.345405
13.300000,2.337770
13.400000,2.340315
13.500000,2.332680
13.600000,2.332680
13.700000,2.337770
13.800000,2.330135
13.900000,2.337770
14.000000,2.340315
14.100000,2.332680
14.200000,2.330135
14.300000,2.330135
14.400000,2.327590
14.500000,2.330135
14.600000,2.330135
14.700000,2.327590
14.800000,2.337770
14.900000,2.327590
15.000000,2.327590
15.100000,2.330135
15.200000,2.325044
15.300000,2.327590
15.400000,2.325044
15.500000,2.330135
15.600000,2.330135
15.700000,2.327590
15.800000,2.330135
15.900000,2.325044
16.000000,2.330135
16.100000,2.322499
16.200000,2.325044
16.300000,2.327590
16.400000,2.322499
16.500000,2.319954
16.600000,2.330135
16.700000,2.332680
16.800000,2.327590
16.900000,2.327590
17.000000,2.325044
17.100000,2.322499
17.200000,2.330135
17.300000,2.322499
17.400000,2.335225
17.500000,2.322499
17.600000,2.322499
17.700000,2.325044
17.800000,2.327590
17.900000,2.327590
stdout
波 1 のピーク: 時間 = 2.000000, 電位 = 3.918239
波 2 のピーク: 時間 = 3.600000, 電位 = 3.981865
波 3 のピーク: 時間 = 5.100000, 電位 = 4.058216
波 4 のピーク: 時間 = 7.100000, 電位 = 4.101482
波 5 のピーク: 時間 = 8.600000, 電位 = 4.063306
波 6 のピーク: 時間 = 10.600000, 電位 = 4.040401
波 7 のピーク: 時間 = 12.500000, 電位 = 4.073486