0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
1

Из каждой группы равных между собой элементов массива нужно оставить только один

17.05.2015, 12:12. Показов 1525. Ответов 7
Метки нет (Все метки)

Дан целочисленный массив а0, а1, а2,…, аn-1, среди элементов которого могут быть равные. Из каждой группы равных между собой элементов нужно оставить только один, выбросив все остальные. Освободившийся хвост массива заполнить нулями.
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
int main()
{
    int* arr;
 
 arr = new int[10];
 
    for (int i = 0; i < 10; i++){
 
        cin >> arr[i];
        cout << "\n";
 
    }
 
    for (int i = 0; i < 10; i++){
        for (int j = 1; j < 10; j++){
 
            if (arr[i] == arr[j]){
 
                arr[j] = 0;
 
            }
 
        }
 
    }
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i];
    }
    system("pause");
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 12:12
Ответы с готовыми решениями:

Из каждой группы равных между собой элементов нужно оставить только один
1.Дан целочисленный массив а1,а2,...аn,среди элементов которого могут быть равные. Из каждой группы...

В списке L с каждой группы подряд равных элементов оставить только один элемент
Опишите программу , которая в списке L с каждой группы подряд равных элементов оставляет только...

В списке L из каждой группы идущих подряд равных элементов оставить только один
опишите программу которая в списке L из каждой группы идущих подряд равных элементов оставляет...

В списке L из каждой группы подряд идущих равных элементов оставить только один элемент
В списке L из каждой группы подряд идущих равных элементов оставить только один элемент Например,...

7
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
17.05.2015, 12:39 2
Лучший ответ Сообщение было отмечено ktotut как решение

Решение

C++ (Qt)
1
2
3
4
5
for(int i=0; i<N; i++){
   for(int j=0; j<N;j++){
      if(arr[i] == arr[j] && i != j)arr[i] = 0;
   }
}
Вроде так. Сравниваем каждый элемент массива с остальными и оставляем только один, переписывая остальные нулями.
Это надо всунуть вместо кода с 14 по 25 строки.
1
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
17.05.2015, 12:54  [ТС] 3
Zoominger, поясните вот эту строку, пожалуйста
C++
1
if(arr[i] == arr[j] && i != j)arr[i] = 0;
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
17.05.2015, 12:57 4
ktotut, мы сравниваем каждый элемент с остальными (arr[i] == arr[j]), включая этот. То есть если мы берём 0-ой элемент, то он будет сравнён со всеми, включая нулевой и без дополнительного условия (i != j) он всё равно будет обнулён (arr[i] = 0).
Иными словами: если элемент равен другому элементу и он не единственный (т. е. сравниваем не с ним же), то обнуляем его.
Поняли?
1
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
17.05.2015, 13:11  [ТС] 5
Zoominger, да, спасибо !
только вот в чем дело, программа немного не так работает, нули нужно в конец ставить, если есть повторяющиеся, а они в начале стоят
возьмем ряд 2121219, в итоге должно получиться так : 2190000 , а получается 0000219
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
17.05.2015, 13:22 6
ktotut, написали бы сразу Тут надо подумать, так...
Создаёте второй массив такой же размерности, как и первый, переносите в него все элементы первого:
C++ (Qt)
1
for(int i=0; i<N; i++)new_arr[i] = arr[i];
Потом обнуляете весь первый массив:
C++ (Qt)
1
for(int i=0; i<N; i++)arr[i] = 0;
Потом переносите все не равные нулю элементы из второго массива в первый:
C++ (Qt)
1
2
3
4
5
int k=0;
for(int i=0; i<N; i++)if(new_arr[i] != 0){
arr[k] = new_arr[i];
k++;
}
В конце останутся нули. Переменная k - это итератор (номер элемента, с которым работаем) первого (старого массива), переменная i - второго. Если число не равно нулю - то записываем в старый массив в элемент №k элемент нового массива под номером i и переходим на следующий элемент. Если число равно нулю - не делаем ничего, в следующий раз обработается следующее число нового массива, при этом итератор старого массива останется на месте. Немного криво описал алгоритм, постарайтесь понять сами.

Если что, код намеренно не оптимизирован для наглядности. И да, не забудьте потом удалить новый массив (delete new_arr[]). Или не удаляйте, если препод не дотошный.
0
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
17.05.2015, 13:39  [ТС] 7
а можете такую глянуть ? В заданной квадратной матрице размера 2n*2n найти сумму абсолютных элементов
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
17.05.2015, 14:07 8
ktotut, нет, я даже условие не понял
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2015, 14:07
Помогаю со студенческими работами здесь

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет...

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет...

Из каждой группы подряд идущих одинаковых элементов оставить только один
Составить программу, которая в списке L из каждой группы подряд идущих одинаковых элементов...

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru