Неверный вывод ответа
Суть:
- Вводим количество чисел
- Вводим числа. Считаем, сколько есть в массиве каждого числа. Например, для mass = {1, 2, 3, 2, 3, 4, 2};
Вводя 3 числа: 4, 2, 3 Получим: 1, 3, 2
Сама программа:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int m, n, u; int mykey;
cin >> n; // количество чисел
int mass[n] = { 0 };
int r = n - 1; int l = 0; int mid = 0;
for (int i = 0; i < n; i++) {
cin >> mass[i];
}
sort(mass, mass + n);
cin >> m; // количество чисел для поиска
int perr[m] = { 0 }; int chislo[m] = { 0 };
for (int g = 0; g < m; g++) {
cin >> perr[g];
for (int i = 0; i < n; i++) {
if (perr[g] == mass[i]) chislo[mid] = chislo[mid] + 1;
else i++;
mid = mid + 1;
}
}
for (int i = 0; i < m; ++i)
cout << chislo[i] << endl;
return 0;
}
Вывод данной программы - одни нули. В чем проблема и как исправить?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
А нельзя проще - использовать, например, map?
int main() {
int n;
cin >> n;
map<int,int> m;
for(int i = 0, j; i < n; ++i)
{
cin >> j;
m[j]++;
}
for(auto x: m)
cout << "число " << x.first << " повторяется " << x.second << " раз\n";
Просто продраться через ваш код и понять, что он делает, лично я не в состоянии...