Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
nero123
0 / 0 / 0
Регистрация: 17.06.2018
Сообщений: 18
1

Удалить из массива нулевые элементы

19.06.2018, 19:59. Просмотров 742. Ответов 1
Метки нет (Все метки)

В одномерном массиве А(10) выполнить преобразования, удалив из него нулевые элементы.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2018, 19:59
Ответы с готовыми решениями:

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

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

Все элементы массива - нулевые
#include <string.h> #include <stdio.h> int main(void) { char str; float var1; ...

Все нулевые элементы массива заменить значением минимального элемента
В массиве найти наименьший элемент. Вывести на дисплей полученное значение. После этого изменить...

Положительные элементы массива заменить на 1, отрицательные на -1, а нулевые оставить без изменения
проблема состоит в том, что последний принтф выводит странный значения ~-900000000 хотя должен...

1
Геомеханик
798 / 602 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
21.06.2018, 09:28 2
Лучший ответ Сообщение было отмечено nero123 как решение

Решение

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
#include <stdio.h>
#include <stdint.h>
#define N 10
void* remove_if(void* arr, size_t num, size_t size, int (*cmp)(const void*));
 
static int cmp_int(const void* arg){ return *(int*)arg == 0; }
static int cmp_ch(const void* arg) { return *(char*)arg == '0'; }
 
int main(void){
    char* i, *j;
    int*  p,  *e;
    int   A[N] = {0,0,0,1,0,2,0,3,0,0};
    char  B[N] = {'0','0','3','0','5','0','7','0','0','9'};
 
    e = (int*)remove_if(A, N, sizeof(A[0]), &cmp_int);
    for(p = A; p != e; ++p)
        printf("%d ", *p);
    puts("");
 
    //...
    
    j = (char*)remove_if(B, N, sizeof(B[0]), &cmp_ch);
    for(i = B; i != j; ++i)
        printf("%c ", *i);
    getchar();
    return 0;
}
 
//удаление элемента(ов)
void* remove_if(void* arr, size_t num, size_t size, int (*cmp)(const void*)){
    size_t  j;
    int8_t* p, *i, *e;
    p = i = (int8_t*)arr;
    e = p + (num * size);
    
    while((p < e) && !(*cmp)((const void*)p))
        p += size;
 
    for(i = p; p < e; p += size){
        if(!(*cmp)((const void*)p)){
            for(j = 0; j < size; ++j)
                *i++ = *(p + j);
        }
    }
    return (void*)i;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2018, 09:28

Определить позиции массива, в которых расположены нулевые элементы и сосчитать их количество
Задан одномерный массив B, состоящем из n вещественных элементов. Определить позиции массива, в...

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

Упорядочить массив: отрицательные элементы в начале массива, потом нулевые, а в конце положительные
Задан массив, содержащий N элементов. Требуется переприсвоить его элементы так, чтобы отрицательные...


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

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

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