@sidor_tank

Как найти количество различных элементов в рандомном массиве (С++)?

Вобщем я сделал программу, но она немного не правильно работает, если одинаковые числа идут подряд, то она их не выводит. Подскажите в чём дело? Вот полное условие: В массиве M(k) много совпадающих элементов. Найти количество различных элементов в нем. Здесь я сделал немного иначе: массив различных элементов выводится на экран, но смысл остался прежним. Задача сделать это с использованием циклов массивов и условий.

#include <locale>
#include <iostream>
#include <conio.h>
void main()
{
	setlocale(LC_ALL, "rus");
	using namespace std;
	int n, i, r=0, c=1;
	int *a = new int[99999];
	int	*b = new int[99999];
	int t, k=0;
	cout << "Введите размер массива" << endl;
	cin >> n;
	cout << "Введите размерность" << endl;
	cin >> t;
	cout << endl;
	srand((unsigned)time(NULL));
	cout << "Цикл" << endl;
	for (i = 0; i < n; i++)   // Создаём рандомный массив
	{
		a[i] = rand() % t;
		cout << a[i] << endl;
	}
	cout << endl;
	for (i = 0; i < n; i++)
	{
		for (int h=0; h < n+1; h++) {


			if (a[i] != a[h] && i!=h) {
				k++;
				if (k==i+1) {
					cout << a[i] << endl;
					break;
				}
			}
			if (a[i] == a[h] && i != h) {

				break;
			}
			

		}
		k = 0;
	}
	_getch();
}
  • Вопрос задан
  • 8334 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В массиве M(k) много совпадающих элементов. Найти количество различных элементов в нем.

Уточни пожалуйста, в массиве 1, 1, 2 сколько различных элементов -- 1 или 2?
Я попытался было понять по твоему коду, но не смог.

for (int h=0; h < n+1; h++) {
if (a[i] != a[h] && i!=h)


Вылез за пределы массива a.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ololopishpishrealne
@ololopishpishrealne
one|line|mega|pipe|ninja
Код не читал, сразу отвечаю.
Заведи отдельный массив и добавляй в него элемент только если в нем его нет, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы