Есть целочисленный массив, как найти количество разных чисел в нем? Собственно, как функцию сравнения (проверку) правильно задать, вот эту: if ((arr[i]!=arr[i-1]))
, чтоб считало нормально.
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int N;
int count = 0;
cout << "vvedite kolichestvo elem ";
cin >> N;
cout << "vvedite massiv:" << endl;
int arr[N];
for (int i = 0; i < N; i += 1)
{
cout << "arr[" << i << "] = ";
cin >> arr[i];
}
for (int i = 0; i < N; i += 1)
{
if ((arr[i] != arr[ i - 1 ]))
{
count += 1;
}
}
cout << "kolichestvo raznih" << count << endl;
system("pause");
return 0;
}
А так нельзя
std::unorered_set<int> s;
std::copy(std::begin(arr), std::end(arr), std::inserter(s, s.begin()));
std::cout << "kolichestvo raznih" << s.size() << std::endl;
?
Или
std::sort(std::begin(arr), std::end(arr));
int count = std::unique(std::begin(arr), std::end(arr)) - std::begin(arr);
std::cout << "kolichestvo raznih" << count << std::endl;
?
Если уж совсем "в лоб" решать, то, например, так
int count = 0;
for (int i = 0; i < N; ++i)
{
int j;
for (j = i + 1; j < N && arr[j] != arr[i]; ++j);
count += j == N;
}
std::cout << "kolichestvo raznih" << count << std::endl;
Это, конечно, неинтересное решение, но зато цикл for
с пустым телом удалось применить :)
Вообще-то
int N;
...
int arr[N];
в С++ не допускается.
Раз речь пошла о циклах, то я вам покажу, как надо писать циклы!:)
#include <iostream>
int main()
{
int a[] = { 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0 };
const size_t N = sizeof(a) / sizeof(*a);
size_t count = 0;
for (size_t i = 0; i < N; i++)
{
size_t j = 0;
while (j < i && a[j] != a[i]) ++j;
count += j == i;
}
std::cout << count << std::endl;
}
Или более содержательная программа
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
const size_t N = 20;
int a[N];
std::srand((unsigned int)std::time(nullptr));
for ( int &x : a ) x = std::rand() % N;
for (int x : a) std::cout << x << ' ';
std::cout << std::endl;
size_t count = 0;
for (size_t i = 0; i < N; i++)
{
size_t j = 0;
while (j < i && a[j] != a[i]) ++j;
count += j == i;
}
std::cout << "There are " << count << " unique elements" << std::endl;
}
Вывод программы на консоль может выглядеть, к примеру, следующим образом
10 17 12 15 5 1 17 19 0 6 13 5 4 13 6 4 18 10 5 11
There are 13 unique elements
Упорядочить массив сортировкой Хоара или Шелла и пройтись по нему циклом.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какой код компилируется Си и С++, корректно работает, но при этом может отличается по быстродействию вследствие различий стандартов C и C++?
Можно ли передать объект в функцию по значению, а не по ссылке? Например, если передаем массив в рекурсивную функцию, и на каждом вызове из этого...
В приложении есть зарегестрирвоанные и незарегестрированные пользователиСоответственно для тех и для других будут разные хедеры на сайте(хедеры...
Все изумительно работает , но можно как то оптимизировать подобный код ? Знаний JS не достаточно , а таких скриптов штук 20 на странице( И кажутся...