fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. typedef struct {
  4. int id;
  5. double height;
  6. double weight;
  7. }list;
  8.  
  9. int main(void) {
  10. list data[] = {
  11. {1, 165, 60},
  12. {2, 170, 68},
  13. {3, 160, 50},
  14. {4, 180, 75},
  15. {5, 175, 80}
  16. };
  17. int n = 5;
  18.  
  19. for (int i = 0; i < n - 1; i++) {
  20. for (int j = i + 1; j < n; j++) {
  21. if (data[i].height > data[j].height) {
  22. list tmp = data[i];
  23. data[i] = data[j];
  24. data[j] = tmp;
  25. }
  26. }
  27. }
  28.  
  29. printf("整列後のデータ(身長昇順):\n");
  30. for (int i = 0; i < n; i++) {
  31. printf("id:%d height:%lf weight:%lf\n", data[i].id, data[i].height, data[i].weight);
  32. }
  33.  
  34. double sum = 0.0;
  35. for (int i = n - 3; i < n; i++) {
  36. sum += data[i].height;
  37. }
  38. double ave = sum / 3.0;
  39.  
  40. double var = 0.0;
  41. for(int i = n - 3; i < n; i++) {
  42. var += pow(data[i].height - ave, 2);
  43. }
  44. double std = sqrt(var / 3.0);
  45.  
  46. printf("\n上位3名の身長平均値 ave = %lf cm\n", ave);
  47. printf("上位3名の身長標準偏差 std = %lf cm\n", std);
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
整列後のデータ(身長昇順):
id:3  height:160.000000  weight:50.000000
id:1  height:165.000000  weight:60.000000
id:2  height:170.000000  weight:68.000000
id:5  height:175.000000  weight:80.000000
id:4  height:180.000000  weight:75.000000

上位3名の身長平均値 ave = 175.000000 cm
上位3名の身長標準偏差 std = 4.082483 cm