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

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

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

Студворк — интернет-сервис помощи студентам
Возможно ли в С удалять элементы массива? Например: 10, 14, 1, 2, 80 надо удалить 1 что бы получилась 10 , 14, 2, 80
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2010, 06:15
Ответы с готовыми решениями:

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

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

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

8
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 07:00
Удалять элементы массива нельзя, можно сдвинуть правую часть массива на удаляемый элемент, иначе это список.
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  [ТС]
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
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
06.03.2010, 07:47
Jasper, А если внимательней присмотреться? Учтите, что индексы у массивов начинаются с 0, так что Вы своим кодом "удаляете" элемент равный 6.
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 08:36
все верно, элемента №5 или цифры 6 уже нет с нами
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
06.03.2010, 08:38  [ТС]
Этот алгоритм работает для последовательности 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
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
06.03.2010, 08:47
Цитата Сообщение от 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
 Аватар для Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 04:18
Цитата Сообщение от 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Эксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
07.03.2010, 05:05
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2010, 05:05
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru