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