Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/46: Рейтинг темы: голосов - 46, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
1

Удаление элементов массива

06.03.2010, 06:15. Показов 8389. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли в С удалять элементы массива? Например: 10, 14, 1, 2, 80 надо удалить 1 что бы получилась 10 , 14, 2, 80
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2010, 06:15
Ответы с готовыми решениями:

Удаление четных элементов массива,больших среднего арифметического всех элементов массива
Доброго времени суток! Помогите пожалуйста) Вот задание:Из массива удалить четные элементы,...

Удаление из одного массива элементов второго массива и запись результата в третий
Есть массив masA (длина lenA), есть массив masB (длина lenB). Необходимо из массива masA удалить...

Удаление элементов массива, которые равны сумме предыдущего и следующего элементов
Нужно написать подпрограмму которая удаляет элементы массива, которые равны сумме предыдущего и...

Удалить из массива A[N] вс отрицательные элементы.Удаление отрицательных элементов массива оформить в виде функции
Что исправить? #include <stdio.h> #define N 10 int udalenie(int A,int k ) { int i; ...

8
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 07:00 2
Удалять элементы массива нельзя, можно сдвинуть правую часть массива на удаляемый элемент, иначе это список.
C
1
2
3
for(i = m; i < n-1; i++)
  array[i] = array[i+1];
n--;
m - элемент, который удаляем
n - кол-во элементов массива array.
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
06.03.2010, 07:25  [ТС] 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void main ()
{
    int N=10;
    int Mass[10]={1,2,3,4,5,6,7,8,9,10};
    int i=0;
    int M=5;
    for (i=M; i<N-1; i++)
    
        Mass[i]=Mass[i+1];
    N--;
    for (i=0;i<N;i++)
    printf (" %i\n", Mass[i]);
        getch ();
}
Выводит массив Mass не изменяя его.
0
Эксперт С++
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
06.03.2010, 07:47 4
Jasper, А если внимательней присмотреться? Учтите, что индексы у массивов начинаются с 0, так что Вы своим кодом "удаляете" элемент равный 6.
0
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 08:36 5
все верно, элемента №5 или цифры 6 уже нет с нами
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
06.03.2010, 08:38  [ТС] 6
Этот алгоритм работает для последовательности 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, а для последовательности, например 10,100,11,12,14,15,12,17,18,200
0
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 08:47 7
Цитата Сообщение от Jasper Посмотреть сообщение
Этот алгоритм работает для последовательности 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, а для последовательности, например 10,100,11,12,14,15,12,17,18,200
Этот алгоритм работает для массива, не имеет значения сколько и какие числа там, лишь бы памяти хватило
10 - нулевой элемент, 100 - первый, 11 - второй эл-т массива и т.д.
избавиться от числа 14, нужно подставить 4 вместо М в алгоритме, т.к. 14 - четвертый элемент в массиве
1
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 04:18 8
Цитата Сообщение от Jasper Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void main ()
{
    int N=10;
    int Mass[10]={1,2,3,4,5,6,7,8,9,10};
    int i=0;
    int M=5;
    for (i=M; i<N-1; i++)
    
        Mass[i]=Mass[i+1];
    N--;
    for (i=0;i<N;i++)
    printf (" %i\n", Mass[i]);
        getch ();
}
Выводит массив Mass не изменяя его.
Не пойму вашей логики, во первых зачем использовать дополнительную переменную M для инициализации i если можно сразу инициализировать i значением M...
Во вторых сдвигая элементы вы не удаляете нужный вам элемент, а просто сдвигаете, а количество элементов как было 10 так 10 и осталось! изменять размер стандартного массива нельзя.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
07.03.2010, 05:05 9
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define DEFAULT_ARRAY_SIZE 10
 
int main(void){
    size_t cnt = DEFAULT_ARRAY_SIZE, i;
    int *arr = NULL;
    
    if ( ( arr = (int*)calloc(cnt, sizeof(int)) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    printf("Enter %d integer values for array elements:\n", cnt);
    for ( i = 0; i < cnt; ++i ){
        printf("ARRAY[%d] = ", i);
        if ( scanf("%d", &arr[i]) != 1 ){
            fprintf(stderr, "Can't get some array value!\n");
            exit(1);
        }
    }
    
    printf("Enter index for remove: ");
    if ( scanf("%d", &i) != 1 || i >= cnt ){
        fprintf(stderr, "Can't get index or wrong index!\n");
        exit(1);
    }
    if ( i < cnt - 1 )
        memmove(arr + i, arr + i + 1, sizeof(int) * (cnt - i - 1));
    if ( ( arr = (int*)realloc(arr, --cnt * sizeof(int)) ) == NULL ){
        fprintf(stderr, "Can't change array size!\n");
        exit(1);
    }
    
    printf("Now array contains of %d elements:\n", cnt);
    for ( i = 0; i < cnt; ++i )
        printf("ARRAY[%d] = %d\n", i, arr[i]);
    
    free(arr);
    arr = NULL;
    exit(0);
}
2
07.03.2010, 05:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2010, 05:05
Помогаю со студенческими работами здесь

Удаление элементов массива, совпадающих с элементами другого массива
Здравствуйте, помогите найти ошибку в коде; суть задачи такая: удалить элементы из 1 массива,...

Удаление элементов массива без буферного массива
Требуется удалить элементы из массива, при это длинна массива уменьшится, ВАЖНО буферный массив не...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru