С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
1

Массив: Найти в заданном массиве самую длинную серию элементов с одним знаком

01.12.2021, 00:20. Показов 842. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется вот такое задание: Задан массив, подразумевается, что в нем есть положительные и отрицательные элементы, найти самую длинную серию с одним знаком (самую длинную положительную серию или самую длинную отрицательную серию).

Одномерный массив (без векторов).
Прошу, пожалуйста, подскажите с чего начать, словестное описание алгоритма, если можно, нет идей даже, с чего начать. Подчеркиваю, что код не приоритетен, хочу справиться с задачей сам.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2021, 00:20
Ответы с готовыми решениями:

В одномерном массиве найти самую длинную серию одинаковых элементов
В одномерном массиве найти самую длинную серию одинаковых элементов. Сделайте в с++ через файлы...

Найти самую длинную последовательность чисел с одним знаком
Задание: Задан массив а1, а2, ..., аn. Имеется в виду, что в нем есть отрицательные и...

Найти самую длинную серию чисел в массиве
эта программа должна найти самую длинную серию чисел в массиве.помогите пожалуйста найти ошибки или...

В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечётных элементов
Ребята помогайте)) задание: "В заданном массиве целых чисел найти самую маленькую серию подряд...

В заданном массиве целых чисел, найти самую маленькую серию подряд стоящих нечетных элементов
Всю голову сломал не пойму как. program aa; const n = 9; d = 9; var a: array of...

5
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
01.12.2021, 01:18 2
попробуйте ввести 2 счётчика и находить длины серий, определяя серию максимальной длины

или

пройти по массиву с попарным умножением элементов и счётчиком положительных произведений, как только произведение отрицательно - счётчик обнулять. в процессе находить max значение счётчика и запоминать индекс начала и конца серии. и не забыть обработать последнюю серию.
1
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
01.12.2021, 19:21  [ТС] 3
Цитата Сообщение от Yetty Посмотреть сообщение
пройти по массиву с попарным умножением элементов и счётчиком положительных произведений, как только произведение отрицательно - счётчик обнулять. в процессе находить max значение счётчика и запоминать индекс начала и конца серии. и не забыть обработать последнюю серию.
Касательного этого метода, предположим, что в массиве есть такой ряд 1 2 3 4 - 1 2 3 4, умножаю попарно, дошел до -1 - получил отрицаельный ответ, а после умножаю попарно дальше, сколь угодно большое положительное число при умножении на отрицательное - даст отрицательное, но это не будет значить, что у меня идет отрицательная серия. А если попробовать так 1 2 3 4 -1 -2 -3 -4 аналогично дойду до умножения 4 на -1, получу отрицательное, а после положительное, так как будет умножение минус на минус, потом отрицательное снова, крч, чередование знаков. Либо я не правильно Вас понял, либо второй метод только для поиска положительной серии подходит
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
01.12.2021, 19:43 4
ik4, так умножать: a[0]*a[1], a[1]*a[2], a[2]*a[3] и т.д.
1
1710 / 1110 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
01.12.2021, 19:57 5
Лучший ответ Сообщение было отмечено ik4 как решение

Решение

Цитата Сообщение от ik4 Посмотреть сообщение
подразумевается, что в нем есть положительные и отрицательные элементы
А нулей там нет?
Цитата Сообщение от ik4 Посмотреть сообщение
подскажите с чего начать, словестное описание алгоритма,
Идешь по массиву и смотришь где знаки менябтся, какие тут хитрости?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    constexpr size_t size { 5 };
    int arr[size] { 1, 1, -3, -4, -5 };
 
    auto negative { [](auto value){ return value < 0; } };
 
    size_t cmax { 1 };
    int* pmax { arr };
 
    int* p { arr };
    int* e { arr + size };
 
    while(p != e)
    {
        int* temp { p };
        size_t count { 1 };
        bool sign { negative(*p) };
        while(++p != e && negative(*p) == sign)
            ++count;
 
        if(count > cmax)
        {
            pmax = temp;
            cmax = count;
        }
    }
 
    for(int* p { pmax }, *e { pmax + cmax }; p < e; ++p)
        std::cout << *p << " ";
1
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
01.12.2021, 20:34  [ТС] 6
Цитата Сообщение от Folian Посмотреть сообщение
А нулей там нет?
В задании не сказано, что они есть, значит будем считать, что их нет)

Добавлено через 16 минут
Цитата Сообщение от Folian Посмотреть сообщение
Идешь по массиву и смотришь где знаки менябтся, какие тут хитрости?
Теперь не интересно) Я сам хотел сделать, но в любом случае спасибо, логика мне предельно ясна, достаточно просто, спасибо большое
0
01.12.2021, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2021, 20:34
Помогаю со студенческими работами здесь

В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов...
В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов....

В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов.
В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. ...

В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов
В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов....

С пом. функции заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов
С помощью функции заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных...

Найти самую длинную серию одинаковых элементов
помогите задачу по си ++ задача:в одномерном массиве найти самую длинную серию одинаковых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru