Удалить элементы массива значения которых находятся в заданном интервале - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Пожалуйста, помогите найти ошибку. При А>0 всё работает нормально, а при А<=0 прога зацикливается.
Листинг программы
  1. #include <stdlib.h>
  2. #define N 10
  3. int main ()
  4. {
  5. int a[N], i, A, B, j, z=1;
  6. for (i=0; i<N; i++)
  7. {
  8. a[i]=rand()%10-5;
  9. printf ("%d \t", a[i]);
  10. }
  11. printf("a = ");
  12. scanf("%d",&A);
  13. printf("b = ");
  14. scanf("%d",&B);
  15. while (z!=0){
  16. z=0;
  17. for (i=0; i<N; i++)
  18. if (a[i]>=A && a[i]<=B) {
  19. z++;
  20. for (j=i; j<N-1; j++) a[j]=a[j+1];
  21. a[N-1]=0;
  22. }
  23. }
  24. for (i=0; i<N; i++) printf ("%d \t", a[i]);
  25. }

Решение задачи: «Удалить элементы массива значения которых находятся в заданном интервале»

textual
Листинг программы
  1. int n=N;
  2. for (i=0; i<n; i++)
  3.   if (a[i]>=A && a[i]<=B)
  4.   {
  5.      for (j=i; j<n-1; j++)
  6.        a[j]=a[j+1];
  7.      n--; // количество элементов уменьшилось на 1
  8.      i--; // на текущей позиции новый элемент, его тоже надо проверить
  9.   }
  10. for (i=0; i<n; i++)
  11.    printf ("%d \t", a[i]);

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

В этом коде выполняется следующая последовательность действий:

  1. В первой строке подставляется значение N в переменную n.
  2. Запускается цикл от 0 до n-1.
  3. Для каждого элемента массива проверяется условие: значение элемента должно быть больше или равно A и меньше или равно B.
  4. Если условие выполняется, то запускается внутренний цикл, который перемещает все элементы, начиная с текущей позиции и до n-2, на одну позицию вправо.
  5. Переменная n уменьшается на 1, так как один элемент удален.
  6. Условие проверки текущего элемента также перемещается на одну позицию вправо.
  7. После завершения внешнего цикла выводится на экран каждый элемент массива с помощью функции printf. В результате выполнения этого кода элементы массива, значения которых находятся в заданном интервале, будут удалены.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы