Удалить из массива те элементы, которые меньше (min+max) /2 - C (СИ)
Формулировка задачи:
Помогите с задачей. С массивами проблемы постоянные...
Дан массив a1,...,a20. Удалить из него те элементы, которые меньше (min+max)/2.
Решение задачи: «Удалить из массива те элементы, которые меньше (min+max) /2»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <locale.h> #include <math.h> #include <malloc.h> #include <process.h> void main() { setlocale(LC_CTYPE, "Russian"); int *mas,*b; int i, n, min, max,k=0; printf("введите n:"); scanf("%d",&n); if (n==NULL) { puts("предел размерности"); exit(0); } else { mas=new int [n]; b=new int [n]; for (i=0;i<n;i++) { printf("\n mas[%d]=",i); scanf("%d",mas+i); } } min=*(mas+0); max=*(mas+0); //находим минимум for (i=0;i<n;i++) if(*(mas+i)<min) min=*(mas+i); //находим максимум for (i=0;i<n;i++) if(*(mas+i)>max) max=*(mas+i); //создаем массив из элементов, которые попадают под условие min+max/2 for (i=0;i<n;i++) if(*(mas+i)>((min+max)/2)) { *(b+k)=*(mas+i); k++; } //вывод нового массива printf("\n Новый массив:\n"); for (i=0; i<k; i++) { printf("%d\n", *(b+i)); } delete []mas; delete []b; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Устанавливается русскоязычная локаль
- Объявляются переменные: массив
mas
иb
для хранения исходных и отфильтрованных данных соответственно, а также переменныеi
,n
,min
,max
иk
для контроля цикла - Пользователю предлагается ввести размерность массива
n
- Если размерность массива некорректна, программа выводит сообщение об ошибке и завершается
- Иначе, выделяется память под массив
mas
иb
- Пользователю предлагается ввести значения элементов массива
mas
- Находится минимальное и максимальное значение в массиве
mas
- Создается новый массив
b
из элементов, которые больше (min+max)/2 - Выводится новый массив
b
- Освобождается память, выделенная под массивы
mas
иb
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д