Задать вопрос
@spezcial
Начинающий программист

Как удалить все элементы массива меньше указанного числа в C?

Здравствуйте. Застопорился на определенном задании. Не приходит в голову решение. Если вы обладаете достаточным опытом, то буду очень благодарен, если просветите. Подключенные библиотеки не печатаются почему-то.
Дан массив а1, а2... an. Разработать программу удаления из массива всех элементов, меньших заданного значения b.
code
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
    srand(time(NULL));
    
    int a, b, g;
    
    scanf("%d", &a);
     b = 4;
    
    int x[a];
    
    
    for (int i = 0; i < a; i++){
        x[i] = 0 + rand() %10;
    }
    
    for(int i = 0; i < a; i++){
        if(x[i] < b){
        g++;
        }
    int z[g];
    
    for(int i = 0; i < g; i++){
        z[i] = 
    
    }
    printf("Было\n");
    for (int i = 0; i < a; i++){
        printf("x[%d] = %d\n", i, x[i]);
    }
    printf("Стало\n");
    for (int i = 0; i < a; i++){
        printf("z[%d] = %d\n", i, z[i]);
    }
    
    
    
    
    return 0;
}


Понимаю, что, наверное, пошел не тем путем, но просто хотелось, чтобы работало. Учусь и пишу на чистом С. Вот в моменте, где проверка в цикле не знаю что писать. Заранее спасибо.
  • Вопрос задан
  • 1312 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
xpert13
@xpert13
Full Stack Developer
Вариантов на самом деле много. Как по мне, самый простой (для понимания) - это:
1. Пройтись по массиву и посчитать сколько "ненужных" в нём элементов
2. Создать новый массив размером "размер_предыдущего - количество_ненужных_элементов"
3. Проходимся еще раз по массиву и копируем в него только нужные элементы

Не самый оптимальный вариант, так как у нас два прохода по массиву. Можно и обойтись одним (например, копируя значения с конца массива и запоминая количество найденых элементов, чтобы потом обрезать массив правильно), но логика будет немного сложнее и запутаннее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы