Удаление элементов массива - 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;
}

Объяснение кода листинга программы

В этом коде:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h для работы с вводом/выводом
    • stdlib.h для работы с памятью
    • locale.h для установки локали
  2. Создается переменная N типа int, которая будет хранить размер массива.
  3. Массив arr инициализируется с помощью функции malloc(N). malloc выделяет память под массив N элементов.
  4. Происходит заполнение массива arr с помощью цикла for и функции scanf. scanf считывает N целых чисел и сохраняет их в массиве arr.
  5. Начальные значения переменных min и max устанавливаются равными первому считанному значению (arr[0]).
  6. Цикл for выполняет сортировку массива arr по значениям. Если текущее значение arr[i] меньше min, то оно становится новым значением min. Если текущее значение arr[i] больше max, то оно становится новым значением max.
  7. После цикла for вычисляется среднее арифметическое min и max и присваивается переменной K.
  8. Массив arr2 инициализируется с помощью функции malloc(N). malloc выделяет память под массив N элементов.
  9. Цикл for проверяет каждый элемент массива arr. Если элемент не равен K, то он копируется в массив arr2 и M увеличивается на единицу.
  10. Цикл for выводит элементы массива arr2 с помощью функции printf.
  11. Функции free(arr) и free(arr2) освобождают выделенную память.
  12. Функция return 0 завершает работу программы.

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы