fork download
  1. #include <stdio.h>
  2.  
  3. void input (int *buffer, int *length);
  4. void output (int *buffer, int length);
  5. int sum_numbers(int *buffer, int length);
  6. int find_numbers(int* buffer, int length, int number, int* numbers);
  7.  
  8. int main() {
  9. int length;
  10. int buffer[10]; // Максимальный размер входного массива
  11. int sum;
  12. int new_buffer[10]; // Массив для элементов, на которые делится сумма
  13. int count;
  14.  
  15. input(buffer, &length);
  16.  
  17. sum = sum_numbers(buffer, length); // Рассчитываем сумму четных элементов
  18.  
  19. // Если сумма равна 0 или нет четных, выводим "n/a"
  20. if (sum == 0) {
  21. printf("n/a\n");
  22. return 1;
  23. }
  24.  
  25. count = find_numbers(buffer, length, sum, new_buffer); // Ищем элементы на которые делится сумма
  26.  
  27. // Если нет элементов, выводим "n/a"
  28. if (count == 0) {
  29. printf("n/a\n");
  30. return 1;
  31. }
  32.  
  33. output(new_buffer, count); // Выводим отобранные элементы
  34. return 0;
  35. }
  36.  
  37. // Функция должна находить сумму четных элементов с 0-й позиции.
  38. int sum_numbers(int *buffer, int length) {
  39. int sum = 0;
  40.  
  41. for (int i = 0; i < length; i++) { // Исправлено начальное условие на 0
  42. if (buffer[i] % 2 == 0) { // Проверяем на четность
  43. sum += buffer[i];
  44. }
  45. }
  46.  
  47. return sum;
  48. }
  49.  
  50. // Функция должна находить все элементы, на которые нацело делится переданное число и записывает их в выходной массив.
  51. int find_numbers(int* buffer, int length, int number, int* numbers) {
  52. int count = 0;
  53.  
  54. for (int i = 0; i < length; i++) {
  55. if (buffer[i] != 0 && number % buffer[i] == 0) { // Проверяем на делимость
  56. numbers[count] = buffer[i]; // Записываем подходящее число
  57. count++;
  58. }
  59. }
  60.  
  61. return count; // Возвращаем количество найденных элементов
  62. }
  63.  
  64. // Функция получает массив данных через stdin.
  65. void input(int *buffer, int *length) {
  66. scanf("%d", length);
  67. for (int i = 0; i < *length; i++) {
  68. scanf("%d", &buffer[i]);
  69. }
  70. }
  71.  
  72. // Функция выводит элементы массива в stdout.
  73. void output(int *buffer, int length) {
  74. for (int i = 0; i < length; i++) {
  75. printf("%d ", buffer[i]);
  76. }
  77. printf("\n");
  78. }
Success #stdin #stdout 0.01s 5288KB
stdin
10
4 3 9 0 1 2 0 2 7 -1
stdout
4 1 2 2 -1