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

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

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

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

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

textual
Листинг программы
#include <stdlib.h>     // rand
#include <time.h>       // time
#include <stdio.h>      // putc
 
#define ARRAY_SIZE 20
 
int array[ARRAY_SIZE];
int index[ARRAY_SIZE];
 
void find_all_ending_zeros(void)
{
    int k = 0;
    for( int i = 0; i < ARRAY_SIZE; ++i ) {
        if( array[i] % 10 == 0 ) {
            index[k++] = i;
        }
    }
    if( k != ARRAY_SIZE) {
        index[k] = -1;
    }
}
 
int calc_sum(void)
{
    int sum = 0;
    for( int i = 0; i < ARRAY_SIZE; ++i ) {
        if( index[i] == -1 ) { break; }
        sum += array[index[i]];
    }
    return sum;
}
 
int find_max(void)
{
    int max = -1;
    int idx_max = -1;
    for( int i = 0; i < ARRAY_SIZE; ++i ) {
        if( index[i] == -1 ) { break; }
        if( array[index[i]] > max ) {
            idx_max = index[i];
            max = array[idx_max];
        }
    }
    return idx_max;
}
 
void fill_array(void)
{
    for( int i = 0; i < ARRAY_SIZE; ++i ) {
        array[i] = rand() % 100;
    }
}
 
void print_array(int* arr, int siz)
{
    while( siz-- && (*arr != -1) ) {
        printf("%d ", *arr++);
    }
    putchar('\n');
}
 
int main(void)
{
    srand(time(NULL));
 
    fill_array();
    print_array(array, ARRAY_SIZE);
 
    find_all_ending_zeros();
    print_array(index, ARRAY_SIZE);
 
    printf("sum = %d\n", calc_sum());
 
    int idx_max = find_max();
    if( idx_max != -1 ) {
        printf("max %d: %d\n", idx_max, array[idx_max]);
    }
 
    return 0;
}

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

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

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

6   голосов , оценка 4.667 из 5
Похожие ответы