Дана последовательность натуральных чисел {Aj} произвольной длины. Найти сумму чисел, заканчивающихся цифрой 0 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана последовательность натуральных чисел {Aj} произвольной длины. Найти сумму чисел, заканчивающихся цифрой 0, наибольшее из таких чисел, и номер этого числа в последовательности.

Решение задачи: «Дана последовательность натуральных чисел {Aj} произвольной длины. Найти сумму чисел, заканчивающихся цифрой 0»

textual
Листинг программы
  1. #include <stdlib.h>     // rand
  2. #include <time.h>       // time
  3. #include <stdio.h>      // putc
  4.  
  5. #define ARRAY_SIZE 20
  6.  
  7. int array[ARRAY_SIZE];
  8. int index[ARRAY_SIZE];
  9.  
  10. void find_all_ending_zeros(void)
  11. {
  12.     int k = 0;
  13.     for( int i = 0; i < ARRAY_SIZE; ++i ) {
  14.         if( array[i] % 10 == 0 ) {
  15.             index[k++] = i;
  16.         }
  17.     }
  18.     if( k != ARRAY_SIZE) {
  19.         index[k] = -1;
  20.     }
  21. }
  22.  
  23. int calc_sum(void)
  24. {
  25.     int sum = 0;
  26.     for( int i = 0; i < ARRAY_SIZE; ++i ) {
  27.         if( index[i] == -1 ) { break; }
  28.         sum += array[index[i]];
  29.     }
  30.     return sum;
  31. }
  32.  
  33. int find_max(void)
  34. {
  35.     int max = -1;
  36.     int idx_max = -1;
  37.     for( int i = 0; i < ARRAY_SIZE; ++i ) {
  38.         if( index[i] == -1 ) { break; }
  39.         if( array[index[i]] > max ) {
  40.             idx_max = index[i];
  41.             max = array[idx_max];
  42.         }
  43.     }
  44.     return idx_max;
  45. }
  46.  
  47. void fill_array(void)
  48. {
  49.     for( int i = 0; i < ARRAY_SIZE; ++i ) {
  50.         array[i] = rand() % 100;
  51.     }
  52. }
  53.  
  54. void print_array(int* arr, int siz)
  55. {
  56.     while( siz-- && (*arr != -1) ) {
  57.         printf("%d ", *arr++);
  58.     }
  59.     putchar('\n');
  60. }
  61.  
  62. int main(void)
  63. {
  64.     srand(time(NULL));
  65.  
  66.     fill_array();
  67.     print_array(array, ARRAY_SIZE);
  68.  
  69.     find_all_ending_zeros();
  70.     print_array(index, ARRAY_SIZE);
  71.  
  72.     printf("sum = %d\n", calc_sum());
  73.  
  74.     int idx_max = find_max();
  75.     if( idx_max != -1 ) {
  76.         printf("max %d: %d\n", idx_max, array[idx_max]);
  77.     }
  78.  
  79.     return 0;
  80. }

Объяснение кода листинга программы

  1. Программа находит все числа в массиве, которые заканчиваются на 0 и сохраняет их индексы в другой массив.
  2. Функция calc_sum считает сумму всех найденных чисел.
  3. Функция find_max находит максимальное из найденных чисел и его индекс.
  4. Массив заполняется случайными числами от 0 до 99.
  5. Ввод массива выводится на экран.
  6. Выводится сумма найденных чисел, заканчивающихся на 0.
  7. Выводится максимальное из найденных чисел и его индекс.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы