Skip to content

Instantly share code, notes, and snippets.

@spellancer
Created October 21, 2013 12:49
Show Gist options
  • Save spellancer/7083374 to your computer and use it in GitHub Desktop.
Save spellancer/7083374 to your computer and use it in GitHub Desktop.
For Elena.
#include <iostream> //Подключение библиотеки ввода-вывода
#include <math.h> //Подключение доп.библиотеки с мат. функциями (для вызова fabs() - взятия модуля числа.
using namespace std;
int main() // функция, основная часть программы, где {} - тело функции
{
int a,b,s,max=0,ii; // объявление вспомогательных переменных типа int
// где а и б хранят промежуточные значения, s - хранит сумму цифр текущего элемента массива
// max -- хранит максимальную сумму цифр
int x[7] = {12,1,3,4,-121,99,19}; // исходный массив (частный случай, массив из 7 элементов)
for (int i=0; i<7; i++) // Счетный (for) цикл обхода заданного массива, где i - индекс текущего элемента
{
s=0; // В каждой итерации обнуляем счетчик суммы цифр (т.к. для каждого числа он свой, но всегда положительный)
b = x[i]; // Запоминаем текущий элемент в вспомогательной переменной, чтобы не изменить его в массиве.
while (b!=0) // пока наш элемент не равен нулю, считаем сумму цифр
{
a = b % 10; // приравниваем а остаток от деления b (т.е. текущего элемента массива) на 10.
//cout << "Остаток от деления: " << a<<endl; // -----!!! Расскоментируй эту строку, чтобы понять, как мы считаем сумму цифр
s = s + a; // Накапливаем сумму цифр прибавляя каждый раз остаток
//cout << "Сумма цифр теперь равна:" << s << endl; // ------!!! И это расскоментируй. У тебя в паскале вывод будет Writeln(блаблабла)
b = b/10; // Делим число на 10, чтобы взять следующий
//cout << "Текущее число для подсчета: " << b << endl; // ----!!! И это тоже пожалуй.
} // Конец while
//cout << "Сумма цифр текущего элемента равна " << x[i] << ", равна: " << fabs(s) <<endl; // Проверка, можешь глянуть.
if (s>max) // В этом if (условном операторе) ищем максимальную сумму.
{
max = s; // Если текущая сумма цифр больше предыдущей, то запоминаем текущую.
ii = i; // Запоминаем индекс текущего элемента с наибольшей суммой цифр, чтобы в дальнейшем поставить этот элемент на 1 место
} // Конец if
} // Конец цикла for
cout << "Макс: "<< max << "; по индексу: "<< ii<<endl; // Выводим в консоль элемент массива с макс. суммой цифр. и его индекс.
a = x[0]; // Запоминаем 1 элемент массива (в C++ нумерация элементов массива идет с 0, т.е. x[0] - Это 1 элемент)
x[0]=x[ii]; // Записываем в 1 элемент массива число с макс. суммой цифр
x[ii] = a; // Записываем на место того искомого числа, первый элемент массива
// Проверка. Вывод результата
for (int i=0; i<7; i++) // Цикл для вывода получившегося массива.
{
cout << x[i] << " ; ";
}// Конец цикла
return 0;
}// Конец функции main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment