fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. typedef struct {
  5. int id;
  6. double height;
  7. double weight;
  8. } Body;
  9.  
  10. int main(void) {
  11. Body data[5] = {
  12. {1, 165.0, 60.0},
  13. {2, 170.0, 68.0},
  14. {3, 160.0, 50.0},
  15. {4, 180.0, 75.0},
  16. {5, 175.0, 80.0}
  17. };
  18. int n = 5;
  19.  
  20. for (int i = 0; i < n - 1; i++) {
  21. for (int j = 0; j < n - 1 - i; j++) {
  22. if (data[j].height > data[j + 1].height) {
  23. Body temp = data[j];
  24. data[j] = data[j + 1];
  25. data[j + 1] = temp;
  26. }
  27. }
  28. }
  29.  
  30. printf("身長の低い順に整列\n");
  31. for (int i = 0; i < n; i++) {
  32. printf("id:%d, height:%.0f, weight:%.0f\n", data[i].id, data[i].height, data[i].weight);
  33. }
  34.  
  35. double sum = 0.0;
  36. for (int i = 2; i < 5; i++) {
  37. sum += data[i].height;
  38. }
  39. double ave = sum / 3.0;
  40.  
  41. double var_sum = 0.0;
  42. for (int i = 2; i < 5; i++) {
  43. var_sum += (data[i].height - ave) * (data[i].height - ave);
  44. }
  45. double std = sqrt(var_sum / 3.0);
  46.  
  47. printf("\n上位3名の平均値 ave = %.1f\n", ave);
  48. printf("上位3名の標準偏差 std = %.1f\n", std);
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
身長の低い順に整列
id:3, height:160, weight:50
id:1, height:165, weight:60
id:2, height:170, weight:68
id:5, height:175, weight:80
id:4, height:180, weight:75

上位3名の平均値 ave = 175.0
上位3名の標準偏差 std = 4.1