Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
1

Удалить из массива все элементы, значение которых в этом массиве повторяются, оставив по одному

22.10.2013, 21:08. Просмотров 2439. Ответов 12
Метки нет (Все метки)

Нужна помощь в написание кода программы: http://5.firepic.org/5/images/2013-10/22/wzca19sj8smg.png

Добавлено через 17 минут
Язык С.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 21:08
Ответы с готовыми решениями:

Удалить из массива все элементы, значения которых в этом массиве повторяются
2. Удалить из массива М(25) все элементы, значения которых в этом массиве повторяются, оставив по...

Из массива исключить все элементы, у которых есть равные, оставив при этом последние вхождения элементов
Из массива B исключить все элементы, у которых есть равные, оставив при этом последние вхождения...

Удалить из массива все одинаковые вхождения элементов, оставив их по одному
ТЗ: дан массив А(n). Удалить из массива все одинаковые вхождения элементов, оставив их по одному. ...

Удалить из массива все одинаковые вхождения элементов, оставив их по одному
ТЗ: дан массив А(n). Удалить из массива все одинаковые вхождения элементов, оставив их по одному. ...

12
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
22.10.2013, 21:12 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int M[10];
int k = 10; //размер массива
for(int i = 0; i < k; i++)
    for(int j = i +1; j < k; j++)
         if(M[i] == M[j])
         {
              /* тут удаляешь, 
с массивами не помню как 
но что то подсказывает что решается 
простым сдвигом элементов и обнулением "хвоста массива".
 Имхо массивы шлак! Я б юзал контейнеры, vector например, с ними удобнее*/
                --k;
          }
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
22.10.2013, 21:39  [ТС] 3
LASpace, что делает M[10] - что это?
0
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
22.10.2013, 21:41 4
Объявление массива из 10 элементов типа int
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
22.10.2013, 21:47  [ТС] 5
LASpace, m и k должны быть 25?
0
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
22.10.2013, 22:00 6
Ага) сорри, невнимательно задание прочитал... Там действительно M[25]
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
22.10.2013, 22:14  [ТС] 7
LASpace, никак не могу разобраться с решением, нужна помощь.
0
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
22.10.2013, 22:31 8
Что именно не так??
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
22.10.2013, 22:34  [ТС] 9
LASpace, все не так.Соседи в комнате вакханалию устроили, я никак не могу понять, как написать вторую часть.
0
34 / 34 / 7
Регистрация: 27.01.2013
Сообщений: 142
22.10.2013, 22:40 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
int M[25];
// здесь заполняешь массив значениями
int k = 25; //размер массива
for(int i = 0; i < k; i++)
    for(int j = i +1; j < k; j++)
         if(M[i] == M[j])
         {
               for(int n = j; n < k - 1; n++)
               {
                     M[n] = M[n+1]; // сдвигаем элементы после дублированного
                }
                M[k] = 0; // обнуляем хвост массива
                --k; // как бы уменьшаем размер массива
          }
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 37
22.10.2013, 23:30  [ТС] 11
LASpace, благодарю.
0
Модератор
Эксперт JavaЭксперт CЭксперт С++
10797 / 6539 / 1611
Регистрация: 25.07.2009
Сообщений: 12,314
23.10.2013, 00:38 12
Цитата Сообщение от LASpace Посмотреть сообщение
Имхо массивы шлак! Я б юзал контейнеры, vector например, с ними удобнее
Ну да, только в С их или самому сначала сделать надо, или где-нибудь сторонние отыскать (стандартных нет).

Цитата Сообщение от EastIndiaTradin Посмотреть сообщение
никак не могу разобраться с решением
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
void squeeze(int * array, size_t * count) {
    int * pHead, * pTail;
    
    for ( pHead = array; ( *count - ( pHead - array ) ) > 1; ++pHead ) {
        for ( pTail = array + *count - 1; pTail > pHead; --pTail ) {
            if ( *pTail == *pHead ) {
                *count -= 1;
                memmove(pTail, pTail + 1, sizeof(int) * ( *count - ( pTail - array ) ));
            }
        }
    }
}
 
void dump(const int * array, size_t count) {
    while ( count-- )
        printf("%d%c", *array++, ( count ) ? ' ' : '\n');
}
 
int main(void) {
    int randoms[20], same[5] = { 1, 1, 1, 1, 1 }, different[5] = { 1, 2, 3, 4, 5 };
    size_t count;
    
    srand(time(NULL));
    for ( count = 0; count < 20; ++count )
        randoms[count] = rand() % 10;
    
    printf("Random elements\nBefore: ");
    dump(randoms, count);
    squeeze(randoms, &count);
    printf("After:  ");
    dump(randoms, count);
    
    count = 5;
    printf("\nAll the same\nBefore: ");
    dump(same, count);
    squeeze(same, &count);
    printf("After:  ");
    dump(same, count);
    
    count = 5;
    printf("\nAll the different\nBefore: ");
    dump(different, count);
    squeeze(different, &count);
    printf("After:  ");
    dump(different, count);
    
    return 0;
}
Разбирайтесь на здоровье...
0
vua72
24.10.2013, 17:13     Удалить из массива все элементы, значение которых в этом массиве повторяются, оставив по одному
  #13

Не по теме:

Разбирайтесь на здоровье...
тонко

0
24.10.2013, 17:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 17:13
Привет! Вот еще темы с ответами:

Удалить все элементы массива 1, которых нет в массиве 2
Подскажите пожалуйста, как удалить все элементы из vector&lt;string&gt; temp , которых нет в...

Из одномерного массива А удалить те элементы, которые повторяются в массиве В
из массива А удалить те элементы ,которые повторяются в массиве В,результат вывести на экран

Удалить в массиве все элементы, которые повторяются более двух раз
Удалить в массиве все элементы, которые повторяются более двух раз

Массив: Удалить все повторяющиеся элементы, оставив в массиве только один.
Помогите, народ! Срочно нужна программа. Собственно задание: В целочисленном массиве k(n),...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.