Написать программу на языке СИ, а именно подсказать как нужно преобразовать массив в другие числа. Первая часть программы имеется. Задание: Написать программу, которая сжимает серии массива, состоящего из единиц и нулей по следующему принципу: • например, массив [0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1] преобразуется в [4,7,2,4] (т.к. начинается с нуля, то сразу записывается количество элементов первой серии); • а массив [1,1,1,0,0,0,0,0,0,0] преобразуется в [0,3,7] (т.к. первая серия - это единицы, то первый элемент преобразованного массива 0).
В наихудшем случае, последнее новогоднее число - 11111111.
#include <iostream>
bool isNewYearNumber(int n); int sumDigits(int num); bool hasZero(int n);
int main() { const int LASTNEWYEARNUMBER = 11111111; long long sum = 0; for(int i = 0; i <= LASTNEWYEARNUMBER; i++) if ( isNewYearNumber(i) ) sum += i; std::cout << "Сумма всех новогодних чисел: " << sum << '\n'; return 0; }
В наихудшем случае, последнее новогоднее число - 11111111.
#include <iostream>
bool isNewYearNumber(int n); int sumDigits(int num); bool hasZero(int n);
int main() { const int LASTNEWYEARNUMBER = 11111111; long long sum = 0; for(int i = 0; i <= LASTNEWYEARNUMBER; i++) if ( isNewYearNumber(i) ) sum += i; std::cout << "Сумма всех новогодних чисел: " << sum << '\n'; return 0; }
#include <iostream>
bool isNewYearNumber(int n);
int sumDigits(int num);
bool hasZero(int n);
int main() {
const int LASTNEWYEARNUMBER = 11111111;
long long sum = 0;
for(int i = 0; i <= LASTNEWYEARNUMBER; i++)
if ( isNewYearNumber(i) )
sum += i;
std::cout << "Сумма всех новогодних чисел: " << sum << '\n';
return 0;
}
bool isNewYearNumber(int n)
{
if ( !( hasZero(n) ) && sumDigits(n) == 8)
return true;
else
return false;
}
int sumDigits(int num)
{
int sum = 0;
while ( num > 0 ) {
sum += num % 10;
num /= 10;
}
return sum;
}
bool hasZero(int n)
{
if (n < 0)
n = -1 * n;
if (n % 10 == 0)
return true;
else if (n / 10 > 0)
hasZero(n / 10);
else
return false;
}