В массиве Х найти наиболее короткую серию элементов, чередующихся по знаку вывести индекс первого ее элемента - C (СИ)

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

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

Ребят помогите плиз с лабой на Си! Никак не могу вдуплиться) Задание: В массиве Х найти наиболее короткую серию элементов, чередующихся по знаку. Вывести индекс первого ее элемента.

Решение задачи: «В массиве Х найти наиболее короткую серию элементов, чередующихся по знаку вывести индекс первого ее элемента»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N 18
  5. int main()
  6. {
  7.     int A[N], i, count = 0, min = N, first = 0, firstMin = 0;
  8.     srand(time(NULL));
  9.     for(i = 0; i < N; i++){
  10.         A[i] = rand() % 18 - 9;
  11.             printf("%d ", A[i]);
  12.             if(i){
  13.                 if((A[i] >= 0 && A[i - 1] < 0) || (A[i] < 0 && A[i - 1] >= 0)){
  14.                     if(!count)
  15.                         first = i - 1;
  16.                     count++;
  17.                 }
  18.                 else{
  19.                     if(count && count < min){
  20.                         min = count;
  21.                         firstMin = first;
  22.                     }
  23.                     count = 0;
  24.                 }
  25.             }
  26.     }
  27.     putchar('\n');
  28.     printf("The shortest series of elements with alternating sign is from A[%d] to A[%d] "
  29.             "total %d elements\n", firstMin, firstMin + min, min + 1);
  30.     return 0;
  31. }

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

  1. Включаем необходимые заголовочные файлы для работы с языком C
  2. Определяем размер массива N
  3. Инициализируем переменные: A[N] - массив, i - счётчик, count - количество элементов в серии, min - длина самой короткой серии, first - индекс первого элемента серии, firstMin - индекс первого элемента самой короткой серии
  4. Инициализируем генератор случайных чисел с помощью функции srand(time(NULL))
  5. Заполняем массив случайными числами с помощью цикла for и функции rand() % 18 - 9
  6. Выводим значения массива на экран с помощью функции printf()
  7. Проверяем условия для определения серии элементов с чередующимся знаком:
    • Если текущий элемент положительный, а предыдущий отрицательный или наоборот, то проверяем длину текущей серии.
    • Если текущая серия короче самой короткой, то обновляем значения первой серии.
    • Если текущая серия равна самой короткой, то обновляем значения первой серии.
  8. После заполнения массива выводим на экран длину самой короткой серии и ее индексы с помощью функции printf()
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

11   голосов , оценка 4.182 из 5

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

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

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