Не понимаю почему выводятся только нули
Дан массив из N натуральных чисел и цифра K. Требуется определить, сколько чисел массива содержат цифру K.
using namespace std;
int digitCounter(int n, int v, int k) {
int a = 0, m = 0;
for (int i = 0; i < n; i++) {
while (v != 0) {
a = v % 10;
v = v / 10;
if (a == k) {
m++;
}
}
}
return m;
}
int main() {
int arr[100], n, k, result ;
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr[i];
cin >> k;
for (int i = 0; i < n; i++) {
result = digitCounter(n, arr[i], k);
}
cout << result;
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, как минимум, у вас выводится только одно значение, для i == n-1... А вообще что-то вы не то считаете, а? похоже, количество вхождений k в конкретное число, и тут же его забываете...
Я бы делал так (защиты "от дурака" нет).
#include <vector>
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> a;
for (int i = 0; i < n; i++)
{
int m;
cin >> m;
a.push_back(m);
}
int k, result = 0;
cin >> k;
for (int i = 0; i < n; i++)
{
int m = a[i];
while(m)
{
if (m%10 == k)
{
++result;
break;
}
m /= 10;
}
}
cout << result;
}
А если бы k можно было вводить до массива — то и массив бы не потребовался.