fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DATA_SIZE 100000000
  4. #define THRESHOLD 3.8
  5.  
  6. struct WaveformData {
  7. double time;
  8. double voltage;
  9. };
  10. struct PeakInfo {
  11. double voltage;
  12. double time;
  13. };
  14. void findPeaks(struct WaveformData waveform[], int dataSize, struct PeakInfo peaks[], int *peakCount) {
  15. *peakCount = 0;
  16.  
  17. double peakVoltage = 0.0;
  18. double peakTime = 0.0;
  19. int lastSecond = -1; // 最後に記録した秒数
  20. for (int i = 0; i < dataSize; i++) {
  21. double currentVoltage = waveform[i].voltage;
  22. int currentSecond = (int)(waveform[i].time);
  23.  
  24. if (currentVoltage >= THRESHOLD) {
  25. if (currentSecond != lastSecond) {
  26. if (peakVoltage > 0.0) {
  27. peaks[*peakCount].voltage = peakVoltage;
  28. peaks[*peakCount].time = peakTime;
  29. (*peakCount)++;
  30. }
  31. lastSecond = currentSecond;
  32. peakVoltage = currentVoltage;
  33. peakTime = waveform[i].time;
  34. } else {
  35. if (currentVoltage > peakVoltage) {
  36. peakVoltage = currentVoltage;
  37. peakTime = waveform[i].time;
  38. }
  39. }
  40. }
  41. }
  42. // 最後のピーク値を記録
  43. if (peakVoltage > 0.0) {
  44. peaks[*peakCount].voltage = peakVoltage;
  45. peaks[*peakCount].time = peakTime;
  46. (*peakCount)++;
  47. }
  48. }
  49. int readWaveformData(struct WaveformData waveform[], int maxSize) {
  50. int count = 0;
  51. while (count < maxSize) {
  52. double time, voltage;
  53. if (scanf("%lf,%lf", &time, &voltage) != 2) {
  54. break;
  55. }
  56. waveform[count].time = time;
  57. waveform[count].voltage = voltage;
  58. count++;
  59. }
  60.  
  61. return count;
  62. }
  63. int main() {
  64. struct WaveformData waveform[DATA_SIZE];
  65. int dataSize = readWaveformData(waveform, DATA_SIZE);
  66.  
  67. if (dataSize > 0) {
  68. struct PeakInfo peaks[DATA_SIZE];
  69. int peakCount;
  70. findPeaks(waveform, dataSize, peaks, &peakCount);
  71.  
  72. if (peakCount > 0) {
  73. printf("Detailed Peak Information:\n");
  74. printf("-------------------------------------------------------\n");
  75. for (int i = 0; i < peakCount; i++) {
  76. printf("ピーク電圧の値: %.2lfV\n", peaks[i].voltage);
  77. printf("時刻: %.2lf 秒\n", peaks[i].time);
  78. printf("-------------------------------------------------------\n");
  79. }
  80. } else {
  81. printf("No peaks found above %.2lf.\n", THRESHOLD);
  82. }
  83. }
  84. return 0;
  85. }
  86.  
Success #stdin #stdout 0s 5284KB
stdin
0.000000,3.127188
0.010000,3.129736
0.020000,3.132285
0.030000,3.119542
0.040000,3.122091
0.050000,3.127188
0.060000,3.127188
0.070000,3.127188
0.080000,3.132285
0.090000,3.127188
0.100000,3.127188
0.110000,3.127188
0.120000,3.127188
0.130000,3.124639
0.140000,3.129736
0.150000,3.129736
0.160000,3.116994
0.170000,3.124639
0.180000,3.129736
0.190000,3.124639
0.200000,3.127188
0.210000,3.124639
0.220000,3.124639
0.230000,3.116994
0.240000,3.124639
0.250000,3.129736
0.260000,3.127188
0.270000,3.129736
0.280000,3.127188
0.290000,3.127188
0.300000,3.116994
0.310000,3.124639
0.320000,3.127188
0.330000,3.119542
0.340000,3.127188
0.350000,3.127188
0.360000,3.124639
0.370000,3.127188
0.380000,3.124639
0.390000,3.129736
0.400000,3.119542
0.410000,3.127188
0.420000,3.132285
0.430000,3.116994
0.440000,3.124639
0.450000,3.119542
0.460000,3.119542
0.470000,3.116994
0.480000,3.124639
0.490000,3.127188
0.500000,3.119542
0.510000,3.116994
0.520000,3.119542
0.530000,3.124639
0.540000,3.127188
0.550000,3.132285
0.560000,3.124639
0.570000,3.124639
0.580000,3.129736
0.590000,3.129736
0.600000,3.127188
0.610000,3.124639
0.620000,3.127188
0.630000,3.116994
0.640000,3.116994
0.650000,3.127188
0.660000,3.124639
0.670000,3.132285
0.680000,3.127188
0.690000,3.124639
0.700000,3.129736
0.710000,3.127188
0.720000,3.127188
0.730000,3.129736
0.740000,3.127188
0.750000,3.119542
0.760000,3.129736
0.770000,3.124639
0.780000,3.119542
0.790000,3.124639
0.800000,3.116994
0.810000,3.129736
0.820000,3.127188
0.830000,3.124639
0.840000,3.129736
0.850000,3.124639
0.860000,3.129736
0.870000,3.122091
0.880000,3.127188
0.890000,3.127188
0.900000,3.129736
0.910000,3.127188
0.920000,3.127188
0.930000,3.119542
0.940000,3.124639
0.950000,3.127188
0.960000,3.124639
0.970000,3.129736
0.980000,3.127188
0.990000,3.122091
1.000000,3.127188
1.010000,3.122091
1.020000,3.129736
1.030000,3.132285
1.040000,3.129736
1.050000,3.132285
1.060000,3.132285
1.070000,3.129736
1.080000,3.132285
1.090000,3.134833
1.100000,3.124639
1.110000,3.119542
1.120000,3.124639
1.130000,3.127188
1.140000,3.127188
1.150000,3.116994
1.160000,3.127188
1.170000,3.127188
1.180000,3.132285
1.190000,3.132285
1.200000,3.127188
1.210000,3.129736
1.220000,3.127188
1.230000,3.119542
1.240000,3.127188
1.250000,3.129736
1.260000,3.127188
1.270000,3.132285
1.280000,3.124639
1.290000,3.116994
1.300000,3.119542
1.310000,3.124639
1.320000,3.129736
1.330000,3.127188
1.340000,3.129736
1.350000,3.132285
1.360000,3.127188
1.370000,3.127188
1.380000,3.124639
1.390000,3.124639
1.400000,3.127188
1.410000,3.132285
1.420000,3.132285
1.430000,3.129736
1.440000,3.127188
1.450000,3.124639
1.460000,3.127188
1.470000,3.116994
1.480000,3.122091
1.490000,3.127188
1.500000,3.129736
1.510000,3.127188
1.520000,3.132285
1.530000,3.119542
1.540000,3.119542
1.550000,3.129736
1.560000,3.119542
1.570000,3.124639
1.580000,3.124639
1.590000,3.132285
1.600000,3.127188
1.610000,3.122091
1.620000,3.124639
1.630000,3.127188
1.640000,3.119542
1.650000,3.127188
1.660000,3.119542
1.670000,3.127188
1.680000,3.127188
1.690000,3.129736
1.700000,3.119542
1.710000,3.122091
1.720000,3.124639
1.730000,3.132285
1.740000,3.127188
1.750000,3.124639
1.760000,3.124639
1.770000,3.124639
1.780000,3.127188
1.790000,3.124639
1.800000,3.124639
1.810000,3.129736
1.820000,3.127188
1.830000,3.127188
1.840000,3.134833
1.850000,3.116994
1.860000,3.127188
1.870000,3.127188
1.880000,3.124639
1.890000,3.127188
1.900000,3.132285
1.910000,3.127188
1.920000,3.127188
1.930000,3.127188
1.940000,3.127188
1.950000,3.119542
1.960000,3.116994
1.970000,3.119542
1.980000,3.127188
1.990000,3.124639
2.000000,3.127188
2.010000,3.124639
2.020000,3.124639
2.030000,3.116994
2.040000,3.132285
2.050000,3.119542
2.060000,3.124639
2.070000,3.127188
2.080000,3.132285
2.090000,3.119542
2.100000,3.127188
2.110000,3.119542
2.120000,3.132285
2.130000,3.124639
2.140000,3.119542
2.150000,3.119542
2.160000,3.129736
2.170000,3.122091
2.180000,3.116994
2.190000,3.119542
2.200000,3.127188
2.210000,3.129736
2.220000,3.124639
2.230000,3.127188
2.240000,3.132285
2.250000,3.124639
2.260000,3.127188
2.270000,3.116994
2.280000,3.127188
2.290000,3.129736
2.300000,3.116994
2.310000,3.129736
2.320000,3.119542
2.330000,3.127188
2.340000,3.119542
2.350000,3.124639
2.360000,3.119542
2.370000,3.132285
2.380000,3.119542
2.390000,3.127188
2.400000,3.127188
2.410000,3.129736
2.420000,3.119542
2.430000,3.124639
2.440000,3.124639
2.450000,3.127188
2.460000,3.116994
2.470000,3.122091
2.480000,3.127188
2.490000,3.132285
2.500000,3.132285
2.510000,3.124639
2.520000,3.124639
2.530000,3.124639
2.540000,3.122091
2.550000,3.127188
2.560000,3.127188
2.570000,3.116994
2.580000,3.124639
2.590000,3.132285
2.600000,3.122091
2.610000,3.127188
2.620000,3.134833
2.630000,3.119542
2.640000,3.122091
2.650000,3.134833
2.660000,3.124639
2.670000,3.132285
2.680000,3.116994
2.690000,3.119542
2.700000,3.127188
2.710000,3.116994
2.720000,3.127188
2.730000,3.122091
2.740000,3.127188
2.750000,3.124639
2.760000,3.127188
2.770000,3.124639
2.780000,3.124639
2.790000,3.134833
2.800000,3.124639
2.810000,3.119542
2.820000,3.116994
2.830000,3.119542
2.840000,3.127188
2.850000,3.122091
2.860000,3.127188
2.870000,3.124639
2.880000,3.132285
2.890000,3.129736
2.900000,3.119542
2.910000,3.127188
2.920000,3.127188
2.930000,3.119542
2.940000,3.127188
2.950000,3.134833
2.960000,3.127188
2.970000,3.127188
2.980000,3.124639
2.990000,3.132285
3.000000,3.127188
3.010000,3.119542
3.020000,3.124639
3.030000,3.132285
3.040000,3.132285
3.050000,3.127188
3.060000,3.132285
3.070000,3.129736
3.080000,3.129736
3.090000,3.127188
3.100000,3.119542
3.110000,3.129736
3.120000,3.127188
3.130000,3.132285
3.140000,3.119542
3.150000,3.127188
3.160000,3.119542
3.170000,3.119542
3.180000,3.127188
3.190000,3.124639
3.200000,3.119542
3.210000,3.116994
3.220000,3.127188
3.230000,3.132285
3.240000,3.119542
3.250000,3.119542
3.260000,3.132285
3.270000,3.127188
3.280000,3.132285
3.290000,3.122091
3.300000,3.116994
3.310000,3.127188
3.320000,3.127188
3.330000,3.132285
3.340000,3.129736
3.350000,3.132285
3.360000,3.127188
3.370000,3.124639
3.380000,3.119542
3.390000,3.119542
3.400000,3.124639
3.410000,3.124639
3.420000,3.132285
3.430000,3.124639
3.440000,3.129736
3.450000,3.127188
3.460000,3.127188
3.470000,3.119542
3.480000,3.124639
3.490000,3.134833
3.500000,3.119542
3.510000,3.116994
3.520000,3.134833
3.530000,3.124639
3.540000,3.129736
3.550000,3.119542
3.560000,3.119542
3.570000,3.127188
3.580000,3.132285
3.590000,3.124639
3.600000,3.119542
3.610000,3.124639
3.620000,3.124639
3.630000,3.119542
3.640000,3.124639
3.650000,3.116994
3.660000,3.134833
3.670000,3.119542
3.680000,3.127188
3.690000,3.132285
3.700000,3.129736
3.710000,3.132285
3.720000,3.129736
3.730000,3.116994
3.740000,3.129736
3.750000,3.116994
3.760000,3.116994
3.770000,3.124639
3.780000,3.127188
3.790000,3.127188
3.800000,3.129736
3.810000,3.134833
3.820000,3.127188
3.830000,3.119542
3.840000,3.116994
3.850000,3.132285
3.860000,3.127188
3.870000,3.127188
3.880000,3.116994
3.890000,3.127188
3.900000,3.119542
3.910000,3.129736
3.920000,3.127188
3.930000,3.127188
3.940000,3.119542
3.950000,3.127188
3.960000,3.129736
3.970000,3.116994
3.980000,3.116994
3.990000,3.127188
4.000000,3.124639
4.010000,3.127188
4.020000,3.127188
4.030000,3.124639
4.040000,3.124639
4.050000,3.124639
4.060000,3.134833
4.070000,3.127188
4.080000,3.132285
4.090000,3.129736
4.100000,3.127188
4.110000,3.124639
4.120000,3.132285
4.130000,3.129736
4.140000,3.129736
4.150000,3.129736
4.160000,3.119542
4.170000,3.124639
4.180000,3.127188
4.190000,3.127188
4.200000,3.124639
4.210000,3.127188
4.220000,3.116994
4.230000,3.124639
4.240000,3.124639
4.250000,3.129736
4.260000,3.116994
4.270000,3.132285
4.280000,3.132285
4.290000,3.127188
4.300000,3.119542
4.310000,3.127188
4.320000,3.127188
4.330000,3.116994
4.340000,3.127188
4.350000,3.119542
4.360000,3.129736
4.370000,3.127188
4.380000,3.119542
4.390000,3.119542
4.400000,3.132285
4.410000,3.116994
4.420000,3.129736
4.430000,3.129736
4.440000,3.127188
4.450000,3.127188
4.460000,3.134833
4.470000,3.134833
4.480000,3.132285
4.490000,3.129736
4.500000,3.124639
4.510000,3.124639
4.520000,3.119542
4.530000,3.127188
4.540000,3.127188
4.550000,3.124639
4.560000,3.134833
4.570000,3.132285
4.580000,3.129736
4.590000,3.127188
4.600000,3.122091
4.610000,3.127188
4.620000,3.127188
4.630000,3.127188
4.640000,3.122091
4.650000,3.124639
4.660000,3.132285
4.670000,3.124639
4.680000,3.127188
4.690000,3.124639
4.700000,3.119542
4.710000,3.127188
4.720000,3.119542
4.730000,3.127188
4.740000,3.119542
4.750000,3.119542
4.760000,3.127188
4.770000,3.132285
4.780000,3.124639
4.790000,3.132285
4.800000,3.132285
4.810000,3.127188
4.820000,3.127188
4.830000,3.127188
4.840000,3.119542
4.850000,3.132285
4.860000,3.119542
4.870000,3.124639
4.880000,3.116994
4.890000,3.124639
4.900000,3.132285
4.910000,3.127188
4.920000,3.127188
4.930000,3.127188
4.940000,3.124639
4.950000,3.124639
4.960000,3.119542
4.970000,3.129736
4.980000,3.129736
4.990000,3.127188
5.000000,3.116994
5.010000,3.129736
5.020000,3.124639
5.030000,3.124639
5.040000,3.127188
5.050000,3.129736
5.060000,3.129736
5.070000,3.116994
5.080000,3.129736
5.090000,3.127188
5.100000,3.124639
5.110000,3.127188
5.120000,3.119542
5.130000,3.119542
5.140000,3.129736
5.150000,3.116994
5.160000,3.124639
5.170000,3.127188
5.180000,3.134833
5.190000,3.124639
5.200000,3.124639
5.210000,3.124639
5.220000,3.129736
5.230000,3.129736
5.240000,3.127188
5.250000,3.116994
5.260000,3.119542
5.270000,3.127188
5.280000,3.124639
5.290000,3.119542
5.300000,3.116994
5.310000,3.124639
5.320000,3.119542
5.330000,3.122091
5.340000,3.127188
5.350000,3.119542
5.360000,3.124639
5.370000,3.132285
5.380000,3.132285
5.390000,3.116994
5.400000,3.119542
5.410000,3.124639
5.420000,3.124639
5.430000,3.124639
5.440000,3.122091
5.450000,3.124639
5.460000,3.127188
5.470000,3.119542
5.480000,3.129736
5.490000,3.124639
5.500000,3.129736
5.510000,3.127188
5.520000,3.127188
5.530000,3.132285
5.540000,3.119542
5.550000,3.127188
5.560000,3.119542
5.570000,3.116994
5.580000,3.124639
5.590000,3.124639
5.600000,3.124639
5.610000,3.127188
5.620000,3.127188
5.630000,3.127188
5.640000,3.132285
5.650000,3.124639
5.660000,3.119542
5.670000,3.119542
5.680000,3.124639
5.690000,3.127188
5.700000,3.127188
5.710000,3.119542
5.720000,3.116994
5.730000,3.116994
5.740000,3.124639
5.750000,3.122091
5.760000,3.127188
5.770000,3.119542
5.780000,3.132285
5.790000,3.119542
5.800000,3.127188
5.810000,3.127188
5.820000,3.127188
5.830000,3.127188
5.840000,3.124639
5.850000,3.116994
5.860000,3.116994
5.870000,3.127188
5.880000,3.119542
5.890000,3.132285
5.900000,3.127188
5.910000,3.519542
5.920000,3.539542
5.930000,3.529736
5.940000,3.524639
5.950000,3.524639
5.960000,3.527188
5.970000,3.632285
5.980000,3.629736
5.990000,3.632285
6.000000,3.627188
6.010000,3.624639
6.020000,3.624639
6.030000,3.624639
6.040000,3.727188
6.050000,3.716994
6.060000,3.727188
6.070000,3.732285
6.080000,3.732285
6.090000,3.727188
6.100000,3.724639
6.110000,3.724639
6.120000,3.722091
6.130000,3.827188
6.140000,3.827188
6.150000,3.827188
6.160000,3.819542
6.170000,3.822091
6.180000,3.819542
6.190000,3.124639
6.200000,3.124639
6.210000,3.119542
6.220000,3.127188
6.230000,3.122091
6.240000,3.132285
6.250000,3.132285
6.260000,3.134833
6.270000,3.129736
6.280000,3.116994
6.290000,3.124639
6.300000,3.124639
6.310000,3.124639
6.320000,3.127188
6.330000,3.122091
6.340000,3.127188
6.350000,3.127188
6.360000,3.127188
6.370000,3.127188
6.380000,3.116994
6.390000,3.134833
6.400000,3.127188
6.410000,3.127188
6.420000,3.127188
6.430000,3.132285
6.440000,3.132285
6.450000,3.127188
6.460000,3.129736
6.470000,3.122091
6.480000,3.129736
6.490000,3.127188
6.500000,3.127188
6.510000,3.119542
6.520000,3.127188
6.530000,3.127188
6.540000,3.127188
6.550000,3.124639
6.560000,3.127188
6.570000,3.119542
6.580000,3.127188
6.590000,3.122091
6.600000,3.127188
6.610000,3.122091
6.620000,3.122091
6.630000,3.132285
6.640000,3.129736
6.650000,3.122091
6.660000,3.127188
6.670000,3.116994
6.680000,3.127188
6.690000,3.119542
6.700000,3.127188
6.710000,3.119542
6.720000,3.119542
6.730000,3.132285
6.740000,3.116994
6.750000,3.127188
6.760000,3.132285
6.770000,3.122091
6.780000,3.127188
6.790000,3.132285
6.800000,3.119542
6.810000,3.127188
6.820000,3.124639
6.830000,3.127188
6.840000,3.129736
6.850000,3.124639
6.860000,3.124639
6.870000,3.119542
6.880000,3.119542
6.890000,3.124639
6.900000,3.119542
6.910000,3.124639
6.920000,3.124639
6.930000,3.127188
6.940000,3.122091
6.950000,3.116994
6.960000,3.119542
6.970000,3.127188
6.980000,3.129736
6.990000,3.116994
7.000000,3.119542
7.010000,3.132285
7.020000,3.132285
7.030000,3.124639
7.040000,3.127188
7.050000,3.127188
7.060000,3.127188
7.070000,3.124639
7.080000,3.124639
7.090000,3.127188
7.100000,3.127188
7.110000,3.129736
7.120000,3.127188
7.130000,3.119542
7.140000,3.124639
7.150000,3.116994
7.160000,3.129736
7.170000,3.124639
7.180000,3.119542
7.190000,3.127188
7.200000,3.129736
7.210000,3.127188
stdout
Detailed Peak Information:
-------------------------------------------------------
ピーク電圧の値: 3.83V
時刻: 6.13 秒
-------------------------------------------------------