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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 18
int main()
{
    int A[N], i, count = 0, min = N, first = 0, firstMin = 0;
    srand(time(NULL));
    for(i = 0; i < N; i++){
        A[i] = rand() % 18 - 9;
            printf("%d ", A[i]);
            if(i){
                if((A[i] >= 0 && A[i - 1] < 0) || (A[i] < 0 && A[i - 1] >= 0)){
                    if(!count)
                        first = i - 1;
                    count++;
                }
                else{
                    if(count && count < min){
                        min = count;
                        firstMin = first;
                    }
                    count = 0;
                }
            }
    }
    putchar('\n');
    printf("The shortest series of elements with alternating sign is from A[%d] to A[%d] "
            "total %d elements\n", firstMin, firstMin + min, min + 1);
    return 0;
}

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

  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
Похожие ответы