найти сумму таких элементов последовательности, которые имеют в своем составе цифру 7. c++ - Вопросы по С+

Вопрос  найти сумму таких элементов последовательности, которые имеют в своем составе цифру 7. c++

Регистрация
1 Июн 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Если вводить число полностью состоящие из 7 (7777), то программа работает, если вводить из любых других чисел (17, 71) программа выдает 0.
315179546_3e29a78f487487425bfb381df930bc1d_800.png

 
Регистрация
7 Окт 2013
Сообщения
89
Репутация
0
Спасибо
1
Монет
0
#include <iostream>
#include <string>

using namespace std;

bool digit_contains(int value, char digit) {
return to_string(value).find(digit) != string::npos;
}

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");
}
 
Регистрация
30 Дек 2013
Сообщения
82
Репутация
11
Спасибо
0
Монет
0
По-моему Вам надо вводить сначала количество элементов последовательности, а потом значения самих этих элементов в означенном количестве. Так вот можно, например: #include <iostream>
int main()
{
long long a, b, n, sum = 0;
std::cout << "n: ";
std::cin >> n;
while (n)
{
std::cin >> a;
b = abs(a);
while (b)
{
if (b % 10 == 7)
{
sum += a;
break;
}
b /= 10;
}
--n;
}
std::cout << "S = " << sum << std::endl;
} Так будут складываться ВСЕ целые числа, имеющие в своей десятичной записи хотя б одну семёрку, даже отрицательные! Такое ведь у Вас ТЗ? Ошибки здесь не исключены лишь при некорректных вводимых данных (скажем, вообще нечисловых) или при очень больши́х по модулю вводимых элементах последовательности целых чисел, иначе всё работает абсолютно корректно!
 
Регистрация
16 Авг 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
#include <cmath>
#include <iostream>
#include <string>

using namespace std;

bool containsSeven(int number) {
while (number != 0) {
if (number % 10 == 7) {
return true;
}
number /= 10;
}
return false;
}

int main() {
setlocale(LC_ALL, "RU");
int n, num, sum = 0;

cout << "Введите количество чисел: ";
cin >> n;

for (int i = 0; i < n; i++) {
cout << "Введите число: ";
cin >> num;

if (containsSeven(num)) {
sum += num;
}
}

cout << "Сумма чисел, содержащих цифру 7: " << sum << endl;
return 0;
}
 
Регистрация
15 Апр 2013
Сообщения
93
Репутация
10
Спасибо
1
Монет
0
#include <iostream>

using namespace std;

int main() {
int a, sum = 0;

cout << "Введите число: ";
cin >> a;

while (a > 0) {
if (a % 10 == 7) {
sum += 7;
}
a /= 10;
}

cout << "Сумма цифр 7: " << sum << endl;

return 0;
}
 

Похожие темы

Сверху Снизу