В массиве Х найти наиболее короткую серию элементов, чередующихся по знаку вывести индекс первого ее элемента - 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;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с языком C
- Определяем размер массива N
- Инициализируем переменные: A[N] - массив, i - счётчик, count - количество элементов в серии, min - длина самой короткой серии, first - индекс первого элемента серии, firstMin - индекс первого элемента самой короткой серии
- Инициализируем генератор случайных чисел с помощью функции srand(time(NULL))
- Заполняем массив случайными числами с помощью цикла for и функции rand() % 18 - 9
- Выводим значения массива на экран с помощью функции printf()
- Проверяем условия для определения серии элементов с чередующимся знаком:
- Если текущий элемент положительный, а предыдущий отрицательный или наоборот, то проверяем длину текущей серии.
- Если текущая серия короче самой короткой, то обновляем значения первой серии.
- Если текущая серия равна самой короткой, то обновляем значения первой серии.
- После заполнения массива выводим на экран длину самой короткой серии и ее индексы с помощью функции printf()
- Возвращаем 0, чтобы указать, что программа успешно завершилась