Как найти неповторяющиеся элементы в массиве

Перейти к содержанию

Вывести неповторяющиеся элементы массива

Просмотров 6.1к. Обновлено 15 октября 2021

В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.

Будем брать очередной элемент массива и сравнивать его со всеми остальными элементами массива от начала до конца. Если при сравнении два элемента окажутся равны друг другу, и при этом элемент не сравнивается сам с собой, то значит этот «исследуемый» элемент не уникальный. Дальнейшее сравнение этого элемента не имеет смысла, и надо перейти к следующему. Если же ни одного совпадения не было найдено, значит элемент не повторяется в массиве, и его надо вывести на экран.

В программе можно использовать переменную-флаг. Перед началом проверки уникальности элемента присвоить ей, например, значение 1. Если совпадение будет найдено, то присвоить флагу 0. Если же после всех сравнений флаг остался равен 1, то значит элемент массива не повторяется в нем.

Pascal

уникальные элементы массива паскаль


const N = 20;
var
a: array[1..N] of word;
i,j: byte;
flag: boolean;
begin
randomize;
for i:=1 to N do begin
a[i] := random(15);
write(a[i],' ');
end;
writeln;
for i:=1 to N do begin
flag := True;
for j:=1 to N do
if (a[i] = a[j]) and (j <> i) then begin
flag := False;
break;
end;
if flag = True then
write(a[i],' ');
end;
writeln
end.



12 5 7 6 5 13 5 1 1 14 1 3 13 4 13 4 3 9 11 9
12 7 6 14 11

Язык Си

уникальные элементы массива c++


#include
#define N 20
main() {
unsigned short a[N], i, j, f;
srand(time(NULL));
for (i=0; i< N; i++) {
a[i] = rand() % 15;
printf("%d ", a[i]);
}
printf("n");
for (i=0; i< N; i++) {
f = 1;
for (j=0; j< N; j++)
if (a[i] == a[j] && i != j) {
f = 0;
break;
}
if (f == 1) printf("%d ", a[i]);
}
printf("n");
}



7 9 5 11 1 11 10 11 5 14 10 9 6 14 6 13 6 11 0 9
7 1 13 0

Python

уникальные элементы массива Python (питон)


from random import random
N = 20
a = [0] * N
for i in range(N):
a[i] = int(random()*15)
print(a[i],end=' ')
print()
for i in range(N):
f = True
for j in range(N):
if a[i] == a[j] and i != j:
f = False
break
if f == True:
print(a[i],end=' ')
print()



1 3 2 8 12 6 10 6 13 11 6 4 10 9 2 8 7 13 1 9
3 12 11 4 7

Basic-256


N = 20
dim a(N)
for i=0 to N-1
a[i] = int(rand * 15)
print a[i] + " ";
next i
print
for i=0 to N-1
f = 1
for j=0 to N-1
if a[i] = a[j] and i <> j then
f = 0
endif
next j
if f = 1 then print a[i] + " ";
next i
print



12 1 8 10 14 3 7 1 14 5 5 2 14 13 3 9 14 10 12 11
8 7 2 13 9 11

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given an array arr[] of size N and an integer T representing the count of threads, the task is to find all non-repeating array elements using multithreading.

    Examples:

    Input: arr[] = { 1, 0, 5, 5, 2}, T = 3 
    Output: 0 1 2 
    Explanation: 
    The frequency of 0 in the array arr[] is 1. 
    The frequency of 1 in the array arr[] is 1. 
    The frequency of 2 in the array arr[] is 1. 
    Therefore, the required output is 0 1 2

    Input: arr[] = { 1, 1, 5, 5, 2, 4 }, T = 3 
    Output: 2 4 
    Explanation: 
    The frequency of 2 in the array arr[] is 1. 
    The frequency of 4 in the array arr[] is 1. 
    Therefore, the required output is 2 4

    Approach: The idea is to use the pthread library available in C++ to create multiple threads for concurrent process flow and perform multiple operations( pthread create, pthread join , lock, etc) in multithreaded program. Follow the steps below to solve the problem:

    • Divide the array into T subarrays, such that each subarray of size N / T will be executed in a single thread.
    • Initialize a Map, say mp, to store the frequencies of each array element.
    • Create a pthread_mutex_lock, say lock1, to ensure that all threads do not trip over each other and corrupt the Map container.
    • Define a function func() for executing the body of a thread. This function is often called the kernel of the thread and is provided during thread creation.
      • Lock the current thread using pthread_mutex_lock() so that it does not overlap with other threads
      • Traverse through the given range as an argument to the function func() in the array arr[] and increment the frequency of the array element which is encountered.
      • Release the current thread using the function pthread_mutex_unlock().
    • Initialize an array, say thread[], of type pthread_t for storing the threads.
    • Iterate over the range [0, T] and create a thread by calling pthread_create() function and store it in the thread[i]
    • While each thread performs their individual tasks, the main() function will need to wait till each of the threads finish their work. 
      • Use pthread_join() function for waiting till each thread finishes executing function func()
      • Iterate over the range [0, T] and call pthread_create() function for each thread[i]
    • Finally, traverse the map mp and print the element occurring only once.

    Below is the implementation of the above approach:

    C++

    #include <bits/stdc++.h>

    #include <pthread.h>

    using namespace std;

    struct range_info {

        int start;

        int end;

        int* a;

    };

    map<int, int> mp;

    pthread_mutex_t lock1;

    void* func(void* arg)

    {

        pthread_mutex_lock(&lock1);

        struct range_info* rptr

        = (struct range_info*)arg;

        for (int i = rptr->start;

                i <= rptr->end; i++) {

            map<int, int>::iterator it;

            it = mp.find(rptr->a[i]);

            if (it == mp.end()) {

                mp.insert({ rptr->a[i], 1 });

            }

            else {

                it->second++;

            }

        }

        pthread_mutex_unlock(&lock1);

        return NULL;

    }

    void numbers_occuring_once(int arr[],

                            int N, int T)

    {

        pthread_t threads[T];

        int spos = 0;

        int epos = spos + (N / T) - 1;

        for (int i = 0; i < T; i++) {

            struct range_info* rptr

                = (struct range_info*)malloc(

                    sizeof(struct range_info));

            rptr->start = spos;

            rptr->end = epos;

            rptr->a = arr;

            int a

            = pthread_create(&threads[i], NULL,

                            func, (void*)(rptr));

            spos = epos + 1;

            epos = spos + (N / T) - 1;

            if (i == T - 2) {

                epos = N - 1;

            }

        }

        for (int i = 0; i < T; i++) {

            int rc

            = pthread_join(threads[i], NULL);

        }

        for (auto it: mp) {

            if (it.second == 1) {

                cout << it.first << " ";

            }

        }

    }

    int main()

    {

        pthread_mutex_init(&lock1, NULL);

        int T = 3;

        int arr[] = { 1, 0, 5, 5, 2, 6 };

        int N = sizeof(arr) / sizeof(arr[0]);

        numbers_occuring_once(arr, N, T);

    }

    Java

    import java.util.HashMap;

    import java.util.Map;

    public class Main {

      static class RangeInfo {

        int start;

        int end;

        int[] a;

        RangeInfo(int start, int end, int[] a)

        {

          this.start = start;

          this.end = end;

          this.a = a;

        }

      }

      static Map<Integer, Integer> mp = new HashMap<>();

      static void func(RangeInfo rptr)

      {

        for (int i = rptr.start; i <= rptr.end; i++) {

          int curr = rptr.a[i];

          synchronized (mp)

          {

            Integer freq = mp.get(curr);

            if (freq == null) {

              mp.put(curr, 1);

            }

            else {

              mp.put(curr, freq + 1);

            }

          }

        }

      }

      static void numbersOccurringOnce(int[] arr, int n,

                                       int t)

      {

        Thread[] threads = new Thread[t];

        final int spos = 0;

        final int epos = spos + (n / t) - 1;

        for (int i = 0; i < t; i++) {

          final int start = spos + (n / t) * i;

          final int end

            = i == t - 1 ? n - 1

            : spos + (n / t) * (i + 1) - 1;

          RangeInfo rptr = new RangeInfo(start, end, arr);

          threads[i] = new Thread(() -> func(rptr));

        }

        for (int i = 0; i < t; i++) {

          threads[i].start();

        }

        for (int i = 0; i < t; i++) {

          try {

            threads[i].join();

          }

          catch (InterruptedException e) {

            e.printStackTrace();

          }

        }

        for (Map.Entry<Integer, Integer> it :

             mp.entrySet()) {

          if (it.getValue() == 1) {

            System.out.print(it.getKey() + " ");

          }

        }

      }

      public static void main(String[] args)

        throws InterruptedException

      {

        Object lock1 = new Object();

        int T = 3;

        int[] arr = { 1, 0, 5, 5, 2, 6 };

        int N = arr.length;

        numbersOccurringOnce(arr, N, T);

      }

    }

    C#

    using System;

    using System.Collections.Generic;

    using System.Threading;

    class RangeInfo {

        public int start;

        public int end;

        public int[] a;

        public RangeInfo(int start, int end, int[] a)

        {

            this.start = start;

            this.end = end;

            this.a = a;

        }

    }

    public class GFG {

        static Dictionary<int, int> mp

            = new Dictionary<int, int>();

        static void func(RangeInfo rptr)

        {

            for (int i = rptr.start; i <= rptr.end; i++) {

                int curr = rptr.a[i];

                lock(mp)

                {

                    int freq;

                    mp.TryGetValue(curr, out freq);

                    if (freq == 0) {

                        mp.Add(curr, 1);

                    }

                    else {

                        mp[curr] = freq + 1;

                    }

                }

            }

        }

        static void numbersOccurringOnce(int[] arr, int n,

                                         int t)

        {

            Thread[] threads = new Thread[t];

            int spos = 0;

            int epos = spos + (n / t) - 1;

            for (int i = 0; i < t; i++) {

                int start = spos + (n / t) * i;

                int end = i == t - 1

                              ? n - 1

                              : spos + (n / t) * (i + 1) - 1;

                RangeInfo rptr = new RangeInfo(start, end, arr);

                threads[i] = new Thread(() => func(rptr));

            }

            for (int i = 0; i < t; i++) {

                threads[i].Start();

            }

            for (int i = 0; i < t; i++) {

                threads[i].Join();

            }

            foreach(KeyValuePair<int, int> entry in mp)

            {

                if (entry.Value == 1) {

                    Console.Write(entry.Key + " ");

                }

            }

        }

        public static void Main(string[] args)

        {

            int T = 3;

            int[] arr = { 1, 0, 5, 5, 2, 6 };

            int N = arr.Length;

            numbersOccurringOnce(arr, N, T);

        }

    }

    Python3

    import threading

    class RangeInfo:

        def __init__(self, start, end, a):

            self.start = start

            self.end = end

            self.a = a

    mp = {}

    def func(rptr):

        for i in range(rptr.start, rptr.end + 1):

            curr = rptr.a[i]

            with threading.Lock():

                freq = mp.get(curr, 0)

                if freq == 0:

                    mp[curr] = 1

                else:

                    mp[curr] = freq + 1

    def numbersOccurringOnce(arr, n, t):

        threads = []

        spos = 0

        epos = spos + (n // t) - 1

        for i in range(t):

            start = spos + (n // t) * i

            end = n - 1 if i == t - 1 else spos + (n // t) * (i + 1) - 1

            rptr = RangeInfo(start, end, arr)

            threads.append(threading.Thread(target=func, args=(rptr,)))

        for thread in threads:

            thread.start()

        for thread in threads:

            thread.join()

        for key, value in mp.items():

            if value == 1:

                print(key, end=" ")

    if __name__ == "__main__":

        T = 3

        arr = [1, 0, 5, 5, 2, 6]

        N = len(arr)

        numbersOccurringOnce(arr, N, T)

    Time Complexity: O(N * log(N))
    Auxiliary Space: O(N)

    Note: It is recommended to execute the program in a Linux based system using the following command:

    g++ -pthread program_name.cpp

    Last Updated :
    20 Apr, 2023

    Like Article

    Save Article

    Создаем массив чисел от 1 до 75, с помощью рандома чисел от 1 до 75 начинаем поиск элемента в массиве. Совпал – удалили. Ищем дальше. Совпал – удалили. Не нашли элемент – ищем снова пока не найдем.

    Вот что вышло:

    int[]array;
    int num = (int)(Math.random()*75+1);//имитируем выпадение числа от 1 до 75
    public int[] initArray(){//создаем, инициализируем и заполняем массив цифрами от 1 до 75 включительно
        this.array = new int[75];
        for (int i = 0; i < array.length; i++){
            array[i] = i+1;
        }
        return array;
    }
    public static int findNumberInMass(int[] array, int num) {
        for (int i = 0; i < array.length; i++) {
            if (num == array[i]) {
                return i + 1;
            }
        }
        return 0;//вот тут он должен не найти нужный элемент и перезапустить поиск
    }
    

    Прошу помощи, а то голова кипит.
    Как сделать так, чтоб он находил элемент выпавший в рандоме, искал его в массиве и удалял?
    И чтоб он искал совпадения, а если не нашел то перезапускал рандом?

    vp_arth's user avatar

    vp_arth

    27.1k2 золотых знака45 серебряных знаков76 бронзовых знаков

    задан 8 фев 2017 в 18:09

    RattenGW's user avatar

    9

    Более простое решение, есть класс(барабан), в котором при создании появляется N шаров, из которого мы можем достать случайный шар из оставшихся, с помощью getNext.

    import java.util.LinkedList;
    
    public class Game
    {
      private LinkedList<Integer> drum;
      public Game(int N) {
        drum = new LinkedList<Integer>();
        for (int i = 0; i < N; i++) {
          drum.add(i+1);
        }
      }
      public int getNext() {
        if (drum.size() == 0) throw new java.lang.IndexOutOfBoundsException("No items more");
        final int i = (int)Math.floor(Math.random()*(drum.size()-1));
        return drum.remove(i);
      }
    }
    
    public class HelloWorld
    {
      public static void main(String[] args)
      {
        System.out.println("6 of 36 game");
        int N = 36;
        Game game = new Game(N);
        for (int i = 0; i < 6; i++) {
          int selected = game.getNext();
          System.out.println("Item "+selected+ " was selected!");
        }
      }
    }
    

    ответ дан 8 фев 2017 в 19:45

    vp_arth's user avatar

    vp_arthvp_arth

    27.1k2 золотых знака45 серебряных знаков76 бронзовых знаков

    3

    Если я правильно понял задачу, то приведённый ниже код иллюстрирует её решение.

    class Main {
        private final static int[] numbers = initArray();
    
        // Заполнение массива numbers числами от 1 по 75.
        private static int[] initArray() {
            final int[] array = new int[75];
            for (int i = 0; i < array.length; ++i)
                array[i] = i + 1;
            return array;
        }
    
        // Поиск позиции числа n в массиве numbers. Возвращает -1, если число не найдено.
        private static int findNumber(final int n) {
            for (int i = 0; i < numbers.length; ++i)
                if (numbers[i] == n)
                    return i;
            return -1;
        }
    
        // Получение следующего случайного числа.
        private static int nextRandom() {
            while (true) {                                // В бесконечном цикле...
                final int n = (int)(Math.random()*75+1);  // ... берём случайное число, ...
                final int pos = findNumber(n);            // ... и ищем его в массиве numbers.
                if (pos >= 0) {           // Если число найдено, ...
                    numbers[pos] = -1;    // ... то "удаляем" его...
                    return n;             // ... и завершаем цикл, ...
                }
            }                             // ... иначе возвращаемся к началу.
        }
    
        public static void main(final String[] args) {
            for (int ignored : numbers)
                System.out.println(nextRandom());
        }
    }
    

    Здесь применена небольшая хитрость. Во-первых, если мы не нашли число в массиве, то возвращаем заведомо невалидный индекс (-1). А во-вторых, поскольку удаление элемента массива выполнить без создания нового массива невозможно, то во избежание этой “дорогостоящей” операции мы просто помещаем в массив на место этого числа опять-таки заведомо невалидное значение (-1).

    ответ дан 8 фев 2017 в 19:00

    5

    Вариант решения с использованием ArrayList:

        public static void main(String[] args) {
    
        ArrayList<Integer> list = new ArrayList<>(); // создание динамического массива
        Random r = new Random();
        for (int x = 0; x < 75; x++) {
            list.add(r.nextInt(76)); // заполнение массива случайными цифрами до 75
        }
        System.out.println("Initial list = " + list); // вывод заполненного массива в консоль
    
        while (list.size() > 0) { // выполняем цикл пока размер массива не уменьшиться до 0 
            for (int x = 0; x < list.size(); x++) {
                int num = r.nextInt(76); // выбираем случайное число для поиска в массиве
                if (list.get(x) == num) { // сопоставляем случайное число с элементами массива
                    list.remove(x); // удаляем элемент в случае совпадения
                    System.out.println(num + " was deleted");
                    System.out.println(list); // выводим оставшийся массив
                }
            }
        }
        System.out.println("Array is empty"); // по исчерпанию элементов массива
    }
    

    ответ дан 11 фев 2017 в 23:05

    Sergey's user avatar

    SergeySergey

    1165 бронзовых знаков

    Просто и без лишних заморочек:

    public static void main(String[] args) {
        //Исходное значение макс. числа
        int length = 75;
        //Булевый массив, где помечается, какое из чисел использовалось.
        //По-умолчанию каждый элемент инициализируется как false
        boolean[] arr = new boolean[length];
        //Просто для наглядности общего кол-ва попыток найти число.
        int totalIterations = 0;
        //Всего должно будет вывестись 75 чисел,
        //поэтому ставим данное условие в цикле, но итерацией будем заниматься внутри
        for (int i = 0;i<length;){
            //Получаем рандомное значение
            final int n = (int)(Math.random()*length+1);
            //Если элемент с этим значением не был использован
            if (!arr[n-1]){
                //Выводим его в консоль
                System.out.println(n);
                //Помечаем как использованный
                arr[n-1] = true;
                //Производим итерацию
                i++;
            }
            //Дополнительно считаем общее кол-во итераций
            totalIterations++;
        }
        //Уведомляем об окончании
        System.out.println("Done! Total iterations: "+totalIterations);
    }
    

    Вариант с альтернативным подходом:

    public static void main(String[] args) {
        //Исходное значение макс. числа
        int length = 75;
        //Кол-во перемешиваний
        int mixes = 1000;
        //Выводим итоговый результат
        for (int i: initArr(length,mixes)){
            System.out.println(i);
        }
    }
    
    static int[] initArr(int length, int mixes) {
        //Инициализируем массив
        int[] result = new int[length];
        //Заполняем значениями
        for (int i = 0; i < length; i++)
            result[i] = i+1;
        //Проходим по циклу заданное кол-во перемешиваний
        for (int i = 0; i < mixes; i++) {
            //Получаем рандомное первое значение
            final int first = (int)(Math.random()*length);
            //Получаем рандомное второе значение
            final int second = (int)(Math.random()*length);
            //Меняем местами значение по полученным выше индексам
            final int temp = result[first];
            result[first] = result[second];
            result[second] = temp;
        }
    
        return result;
    }
    

    ответ дан 9 фев 2017 в 13:22

    I. Perevoz's user avatar

    I. PerevozI. Perevoz

    9034 серебряных знака20 бронзовых знаков

    3

    Сегодня разберем одно из заданий, часто ставящее в тупик еще на этапе условия. Разберем как вывести неповторяющиеся элементы массива и напишем программу на языке C++.

    Если описать задание немного более простым языком, то нам всего лишь нужно найти и вывести элементы массива, значения которых встречаются один раз. Проще говоря — уникальные значения элементов массива.

    Имея массив [1, 3, 5, 8, 3, 8], мы должны вывести 1, 5. Почему? Потому что 3 и 8 встречаются в массиве больше одного раза.

    Решений может быть несколько, давайте разберем самое простое. Мы будем брать каждый элемент массива и сравнивать его со всеми остальными, если совпадений не найдется, то мы просто его выводим и идем дальше.

    Звучит довольно просто, но на деле нам понадобится цикл в цикле. Первым циклом будем проходить по всем элементам массива, а второй нужен будет для поиска совпадений.

    Давайте реализуем алгоритм для вывода неповторяющихся элементов массива на C++

    #include 
     
    using namespace std;
     
    int main()
    {
    	/* Заполним массив значениями */
    	int n = 6;
    	int mass[n] = {1, 3, 5, 8, 3, 8};
    	
    	/* Проходим по всем элементам массива */
    	for (int i = 0; i < n; ++i) {
    		// Вынесем текущий элемент в переменную
    		int currentElementValue = mass[i];
    		// Имеет ли текущий элемент значение, встречающееся в массиве
    		// по умолчанию нет
    		bool hasEquals = false;
    		
    		/* Берем элемент и ищем по массиву такое же значение */
    		for (int r = 0; r < n; ++r) {
    			// С самим с собой не сравниваем, пропускаем итерацию
    			if (i == r) {
    				continue;
    			}
    			// Если текущий элемент равен другому элементу
    		    if (currentElementValue == mass[r] && i != r) {
    				// То устанавливаем флаг, что такое значение встречалось
    				hasEquals = true;
    			}
    		}
    		
    		// Если у этого элемента нет встречающихся значений, то выводим
    		if (!hasEquals) {
    			cout << currentElementValue << " ";
    		}
    	}
    	
    	
    	
    	return 0;
    }
    

    В программе я использовал такой же массив, котрый описал в условии. Компилируем, запускаем и видим вывод

    1 5

    То есть то, что необходимо.

    DarkBatterfly

    1

    Вывести на экран неповторяющиеся элементы массива

    09.02.2010, 14:35. Показов 6828. Ответов 6


    Студворк — интернет-сервис помощи студентам

    Всем здрасте. Есть просьба подскажите пожалуйста ссылочку или книгу где нормально описаны массивы а то не могу разобраться в них.

    Ну и перейдём к к главному вопросу) Люди тут такое дело задали “Вывести на экран не повторяющиеся элементы массива” а не могу сделать. Может ктот подсказать что и как? За ранее премного благодарен.

    Day

    1177 / 987 / 83

    Регистрация: 29.10.2009

    Сообщений: 1,385

    09.02.2010, 15:05

    2

    C++
    1
    2
    3
    4
    5
    6
    7
    
    int a[N];  // Это массив - заполнишь сам
    for(i=0; i<N; i++) {
       for(j=0; j<N; j++)
         if (i!=j && a[i]==a[j]) break;
       if (j < N) continue; // Найдено повторение
       cout<<a[i]<<endl
    }



    0



    Эксперт С++

    5827 / 3478 / 358

    Регистрация: 08.02.2010

    Сообщений: 7,448

    09.02.2010, 15:25

    3

    Цитата
    Сообщение от DarkBatterfly
    Посмотреть сообщение

    Есть просьба подскажите пожалуйста ссылочку или книгу где нормально описаны массивы а то не могу разобраться в них.

    Философия C++. Введение в стандартный C++ (Брюс Эккель) – неплохая книжка, там все подробно расписано, в том числе и массивы
    Вторая часть – Философия C++. Практическое программирование (Брюс Эккель, Чак Эллисон)



    0



    Grayswandir

    10 / 10 / 1

    Регистрация: 05.02.2010

    Сообщений: 12

    09.02.2010, 18:03

    4

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    #include <iostream>
    using namespace std;
     
    void main()
    {
        setlocale (LC_CTYPE, ".1251");  
        const int n=7;
        int a[n], i, j;
        bool flag = false;
     
        cout << "Ввод элементов массива: n";
        for (i=0; i<n; i++)
        {
            cout << i << ":t";
            cin >> a[i];
        }
     
        cout << "nВывод на экран не повторяющихся элементов массива.n";
        for (i=0; i<n; i++)
        {
            flag=false;
            for (j=0; j<n; j++) //проверяем каждый элемент массива с остальными на повтор
            {
                if (a[j]==a[i] && i!=j) // повтор найден.
                {
                    flag = true;
                    break;
                }
            }
            if (flag == false) // повтор не найден
            {
                cout << i << ":t" << a[i] << 'n';
            }
        }
    }



    0



    shelest3

    7 / 7 / 3

    Регистрация: 08.02.2010

    Сообщений: 8

    10.02.2010, 00:29

    5

    Где-то так…

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    #include <iostream>
    using namespace std;
    void main()
    {
        setlocale ( LC_ALL, "Russian" );
        const int n = 10;
        int ar[n];
        bool temp = true;
        
        
        for ( int i = 0; i < n; i ++ )
        {
            cout << " введите " << i << " элемент массива : ";
            cin >> ar[i];
        }
        
        
        cout << " неповторяющиеся элементы массива :";
        for ( int i = 0; i < n; i ++ )
        {
            for ( int j = 0; j < n; j ++ )
            {
                if ( ar[i] == ar[j] && i != j )
                {
                    temp = false;
                    break;
                }
            }
            if ( temp ) cout << " " << ar[i];
            temp = true;
        }
        cout << "n";
    }



    0



    easybudda

    Модератор

    Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

    11755 / 7256 / 1719

    Регистрация: 25.07.2009

    Сообщений: 13,264

    10.02.2010, 01:43

    6

    C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    #include <stdio.h>
    #include <stdlib.h>
     
    int intCmp(const void *a, const void *b){
        return *(int*)a - *(int*)b;
    }
     
    #define ARR_SIZE 10
     
    int main(void){
        int arr[ARR_SIZE] = { 3, 2, 2, 4, 6, 1, 4, 8, 5, 4 }, i;
        
        printf("All: ");
        for ( i = 0; i < ARR_SIZE; ++i )
            printf("%d ", arr[i]);
        printf("n");
        
        qsort(arr, ARR_SIZE, sizeof(int), intCmp);
        
        printf("Unique: %d ", arr[0]);
        for ( i = 1; i < ARR_SIZE; ++i )
            if ( arr[i] != arr[i-1] )
                printf("%d ", arr[i]);
        printf("n");
        
        exit(0);
    }

    Не, это не то немного!



    0



    DarkBatterfly

    12.02.2010, 12:21

    7

    спс всем за помощь)

    Добавить комментарий