Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Вывод неповторяющихся элементов массива


Автор: ravvv 31.3.2009, 13:06
Нужен код для вывода неповторяющихся элементов одномерного массива (Элементы генерируются случайно)...Помогите пожалуйста.

Автор: zim22 31.3.2009, 15:00
Код
#include <ctime>

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

template <typename T>
void print_unique_element(T &vi, std::ostream &os)
{
  std::sort(vi.begin(), vi.end());
  typename T::iterator end_it = std::unique(vi.begin(), vi.end());
  std::copy(vi.begin(), end_it, std::ostream_iterator<T::value_type>(os, " "));
  os << std::endl;
}

int main()
{ 
  srand((unsigned)time(0));
  vector<int> vi;
  std::generate_n(back_inserter(vi), 10, rand);

  print_unique_element(vi, std::cout);  
    return 0;
}


Автор: ravvv 31.3.2009, 15:30
zim22, спасибо, а можно как нибудь попроще...ну с циклами, и т.п?  smile 

Автор: zim22 31.3.2009, 16:00
ravvv, нельзя

Автор: Dov 31.3.2009, 17:06
Код
int main()
{
    srand((unsigned)time(NULL));

    const int SIZE = 10;
    int       arr[SIZE];
    bool      check[SIZE] = {false};

    cout << "Array  arr : ";
    for(int i = 0; i < SIZE; i++)
        cout << (arr[i] = rand() % 10) << " ";

    cout << "\nUnique arr : ";
    for(int i = 0; i < SIZE; i++)
    {
        for(int j = i + 1; j < SIZE; j++)
            if(!check[j] && arr[j] == arr[i])
                check[j] = check[i] = true;    

        if(!check[i])
            cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)