Удаление элементов массива - C (СИ) (70312)
Формулировка задачи:
Помогите пожалуйста, надо удалить элементы равные К и вывести массив, я чуток начал помогите исправить ошибки и вообще сделать задание
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
int a[30], b[30];
int i,j,l, max,min; float k;
printf(" \n введите размер массива а \n");
scanf("%d", &l);
printf(" \n введите элементы массива а");
for (i=0;i<l;i++)
scanf("%d", &a[i]);
max=-999999;
for (i=0;i<l;i++)
{
if(a[i]>max)
max=a[i];
}
min=999999;
for(i=0;i<l;i++)
{
if(a[i]<min)
min=a[i];
}
k=(min+max)/2;
for (i=0;i<l;i++)
{
if(a[i]<k)
if(a[i]>k)
b[i]=a[i];
print("%d",b[i]);
}
return 0;
}Решение задачи: «Удаление элементов массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
int *arr, *arr2, N, i, min, max, K, M = 0;
setlocale(LC_ALL, "");
printf("Введите размер массива а: ");
scanf("%d", &N);
arr = malloc(N);
for (i=0; i < N; i++)
{
scanf("%d", &arr[i]);
if (i == 0)
min = max = arr[i];
else
{
if (min > arr[i])
min = arr[i];
if (max < arr[i])
max = arr[i];
}
}
K = (min + max) / 2;
arr2 = malloc(N);
for (i=0; i < N; i++)
if (arr[i] != K)
arr2[M++] = arr[i];
for (i=0; i < M; i++)
printf("%d ", arr2[i]);
free(arr);
free(arr2);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Включаются необходимые заголовочные файлы:
stdio.hдля работы с вводом/выводомstdlib.hдля работы с памятьюlocale.hдля установки локали
- Создается переменная
Nтипаint, которая будет хранить размер массива. - Массив
arrинициализируется с помощью функцииmalloc(N). malloc выделяет память под массивNэлементов. - Происходит заполнение массива
arrс помощью цикла for и функции scanf. scanf считывает N целых чисел и сохраняет их в массивеarr. - Начальные значения переменных
minиmaxустанавливаются равными первому считанному значению (arr[0]). - Цикл for выполняет сортировку массива
arrпо значениям. Если текущее значениеarr[i]меньшеmin, то оно становится новым значениемmin. Если текущее значениеarr[i]большеmax, то оно становится новым значениемmax. - После цикла for вычисляется среднее арифметическое
minиmaxи присваивается переменнойK. - Массив
arr2инициализируется с помощью функции malloc(N). malloc выделяет память под массив N элементов. - Цикл for проверяет каждый элемент массива
arr. Если элемент не равенK, то он копируется в массивarr2иMувеличивается на единицу. - Цикл for выводит элементы массива
arr2с помощью функции printf. - Функции free(arr) и free(arr2) освобождают выделенную память.
- Функция return 0 завершает работу программы.