C/C++

Задача по Массивах С++

Дано натуральное число N и массив, содержащий N натуральных чисел (каждое число массива не более 1000000). Определить, сколько цифр в массиве содержат заданную цифру d, и найти сумму этих чисел.
#include <iostream>
#include <iomanip>
#include <string>
#include <random>
using namespace std;
bool found(int num, char dig) {
return to_string(num).find(dig) != string::npos;
}
pair<unsigned, long long> statistic(int* box, size_t len, char dig) {
auto acc = 0LL;
auto cnt = 0U;
for (auto i = 0U; i < len; ++i) {
if (found(box[i], dig)) {
acc += box[i];
++cnt;
}
}
return { cnt, acc };
}
unsigned length(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
char sign(const char* msg) {
cout << msg;
char value = cin.get();
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
void fill(int* box, size_t len, int l, int r) {
uniform_int_distribution<> uid(l, r);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < len; ++i) {
box[i] = uid(gen);
}
}
void show(int* box, size_t len, streamsize w) {
for (auto i = 0U; i < len; ++i) {
cout << setw(w) << box[i];
}
puts("");
}
int main() {
auto len = length("N: ");
auto box = new int[len];
fill(box, len, 1, 1000000);
show(box, len, 8);
auto dig = sign("Symbol: ");
auto [count, sum] = statistic(box, len, dig);
delete[] box;
cout
<< "Count: " << count << '\n'
<< "Sum: " << sum << '\n';
system("pause > nul");
}
АЗ
Алексей Зудин
56 709
Лучший ответ
#include < iostream >
using namespace std;

int main(int argc, char *argv[])
{
int n, count = 0;
char d;
unsigned long long sum = 0;

cin >> n;
int *array = new int[n];

for (int i = 0; i < n; i++)
array[i] = rand() % 1000000;

cin >> d;

for (int i = 0; i < n; i++)
{
if (to_string(array[i]).find(d) != string::npos)
{
sum += array[i];
count++;
}
}
delete[] array;
cout << "count digit = " << count << endl;
cout << "sum items = " << sum;
}