int parse_int(const char* prompt) {
cout << prompt;
int value;
cin >> value;
cin.ignore(0x1000, '\n'
return value;
}
int main() {
system("chcp 1251 > nul"
constexpr auto seven{ '7' };
auto a = parse_int("Введите начальное значение последовательности: "
auto b = parse_int("Введите конечное значение последовательности: "
if (b < a) swap(a, b);
auto sum = 0LL;
if (a == b && digit_contains(a, seven)) {
sum = a;
} else if (abs(a) - abs(b)) {
while (a <= b) {
if (digit_contains(a, seven)) sum += a;
++a;
}
}
cout << "Сумма найденных значений последовательности: " << sum << '\n';
system("pause > nul"
}
По-моему Вам надо вводить сначала количество элементов последовательности, а потом значения самих этих элементов в означенном количестве. Так вот можно, например: #include <iostream>
int main()
{
long long a, b, n, sum = 0;
std::cout << "n: ";
std::cin >> n;
while
{
std::cin >> a;
b = abs(a);
while (b)
{
if (b % 10 == 7)
{
sum += a;
break;
}
b /= 10;
}
--n;
}
std::cout << "S = " << sum << std::endl;
} Так будут складываться ВСЕ целые числа, имеющие в своей десятичной записи хотя б одну семёрку, даже отрицательные! Такое ведь у Вас ТЗ? Ошибки здесь не исключены лишь при некорректных вводимых данных (скажем, вообще нечисловых) или при очень больши́х по модулю вводимых элементах последовательности целых чисел, иначе всё работает абсолютно корректно!