Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите написать код на языке С (не С++)

Сборщик Василий Ученик (131), на голосовании 1 год назад
Есть определенный одномерный массив. Нужно удалить все элементы этого массива, значения которых меньше а, значение а вводится с клавиатуры .

но! Дополнительный массив использовать нельзя
Голосование за лучший ответ
Дурацкие Вопросы Профи (904) 1 год назад
Увася, иди на свою вахту по сборке товаров.
Какой ещё код на C?!
адми нн Профи (984) 1 год назад
 int main(void)
{
const int Limit = 50;
int a, i, j;
int ar[Limit];

printf("Enter a: ");
scanf("%d", &a);

for (i = 0; i < Limit; i++)
if (ar[i] < a)
for (j = i; j < Limit-1; j++)
ar[j] = ar[j+1];
}
Дурацкие ВопросыПрофи (904) 1 год назад
Удаление элемента массива означает сокращение размера выделенной памяти, а не просто изменение значения.
В статическом массиве эта задача не выполняется, если что))
shizout Мастер (1975) 1 год назад
 #include  
#include
#include

#define print_array(fmt, arr, size) \
do { \
int i; \
\
for (i = 0; i < size; i++) { \
printf(fmt, arr[i]); \
} \
\
printf("\n"); \
} while (0)

int main(void)
{
int *arr;
int a, i, j;
size_t size;

printf("a: ");
scanf("%d", &a);

printf("size: ");
scanf("%zu", &size);

arr = calloc(size, sizeof *arr);

for (i = 0; i < size; i++) {
arr[i] = rand() % 100;
}

puts("Before:");
print_array("%d ", arr, size);

for (i = 0; i < size; i++) {
if (arr[i] < a) {
for (j = i; j < size - 1; j++) {
arr[j] = arr[j + 1];
}

arr = realloc(arr, --size * sizeof *arr);
i--;
}
}

puts("After:");
print_array("%d ", arr, size);

free(arr);
}
Похожие вопросы