Дана последовательность натуральных чисел {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;
}
Объяснение кода листинга программы
- Программа находит все числа в массиве, которые заканчиваются на 0 и сохраняет их индексы в другой массив.
- Функция calc_sum считает сумму всех найденных чисел.
- Функция find_max находит максимальное из найденных чисел и его индекс.
- Массив заполняется случайными числами от 0 до 99.
- Ввод массива выводится на экран.
- Выводится сумма найденных чисел, заканчивающихся на 0.
- Выводится максимальное из найденных чисел и его индекс.