Удаление элементов массива - 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 завершает работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д