fork download
  1. #include <stdio.h>
  2.  
  3. void saidai_num(int kosuu, int data[], int *max, int *max_num) {
  4. *max = data[0]; // 最初の要素を最大値の初期値とする
  5. *max_num = 1; // 最大値の個数を1で初期化
  6.  
  7. // 1番目からkosuu番目まで比較
  8. for (int i = 1; i <= kosuu; i++) {
  9. if (data[i] > *max) {
  10. // 新しい最大値が見つかった場合
  11. *max = data[i];
  12. *max_num = 1; // 個数を1にリセット
  13. } else if (data[i] == *max) {
  14. // 現在の最大値と同じ値が見つかった場合
  15. *max_num = *max_num + 1;
  16. }
  17. }
  18. }
  19.  
  20. int main() {
  21. int data1[] = {10, 15, 30, 15, 30, 30, 7};
  22. int max1, num1;
  23. saidai_num(6, data1, &max1, &num1);
  24.  
  25. int data2[] = {10, 10, 10, 10, 10, 10};
  26. int max2, num2;
  27. saidai_num(5, data2, &max2, &num2);
  28.  
  29. printf("配列1 -> 最大値: %d, 個数: %d\n", max1, num1); // 期待値: 30, 3
  30. printf("配列2 -> 最大値: %d, 個数: %d\n", max2, num2); // 期待値: 10, 6
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
配列1 -> 最大値: 30, 個数: 3
配列2 -> 最大値: 10, 個数: 6