Выбрать тройки идущих подряд цифр числа, сумма которых максимальная - C (СИ)
Формулировка задачи:
Составить программу на языке Си в целом типе данных, которая для любых допустимых и корректно записанных чисел этого типа в десятичном изображении, поступающих на стандартный ввод программы, выполняет указанное вариантом действие над их значениями. Нумерация цифр в записи числа ведется справа налево, от младших разрядов к старшим, начиная с нуля. Результатом действия над введенным числом является целое или булевское значение в зависимости от конкретного варианта, направляемое в стандартный вывод. Предусмотрите корректную обработку пустого файла.
Выбрать тройки идущих подряд цифр числа, сумма которых максимальная. < 1234567 0 > 567
Решение задачи: «Выбрать тройки идущих подряд цифр числа, сумма которых максимальная»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int c3max(int n, int m, int p)
{
int q0,q1,q2,r3,s3,nn;
if (n==0) return p;
q0 = n % 10;
q1 = (n /10) % 10;
q2 = (n / 100) % 10;
s3 = q0+q1+q2;
r3 = (q2*10+q1)*10+q0;
nn = n /10;
if (s3 > m)
return c3max(nn,s3,r3);
else
return c3max(nn,m,p);
}
int main(int argc, char *argv[])
{
int n;
printf("n=");
scanf("%d",&n);
printf("%d\n",c3max(n,0,0));
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
Код представлен на языке C и состоит из двух функций:
c3max, которая принимает три аргумента типаint:n,m,p. Первый аргументnпредставляет собой число, для которого нужно найти тройку цифр с максимальной суммой. Второй и третий аргументыmиpпредставляют собой текущую максимальную сумму и текущее максимальное значение функции соответственно. Внутри функции используется цикл, который проверяет все тройки идущих подряд цифр числаn. Если сумма этих цифр больше текущей максимальной суммы, то обновляется текущая максимальная сумма и текущее максимальное значение функции. В конце функция возвращает текущее максимальное значение функции.main- это точка входа в программу. Она считывает число с помощью функцииscanfи передает его в функциюc3maxвместе со значениями 0 и 0. Первое значение представляет собой текущую максимальную сумму, а второе - текущее максимальное значение функции. Результат работы функцииc3maxвыводится на экран с помощью функцииprintf. После этого программа ожидает нажатия клавиши с помощью функцииsystem, чтобы пользователь мог увидеть результат, а затем возвращает 0, чтобы указать, что программа успешно завершилась.