Форум программистов, компьютерный форум CyberForum.ru

Количество подряд идущих отрицательных элементов - C++

Восстановить пароль Регистрация
 
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
22.01.2014, 14:31     Количество подряд идущих отрицательных элементов #1
Задание простое, просто хочу по-нормальному его растолковать.

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

Вот такой вопрос: как считать такие элементы? Вот, например, я поставил так:

C++
1
2
3
4
for(int i=0; i<N-1; i++)
{
if (a[i] < 0 && a[i+1] < 0) x+=2;
}
т.е если подряд идут 2 элемента, соответственно всего в массиве 2 подряд идущих отрицательных числа. А если таких чисел нечетное количество? как быть? подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 14:31     Количество подряд идущих отрицательных элементов
Посмотрите здесь:

Подсчитать максимальное количество подряд идущих отрицательных элементов. C++
Найти наименьшее количество одинаковых, идущих подряд элементов C++
C++ Определить, максимальное количество подряд идущих отрицательных членов последовательности.
C++ Подсчет подряд идущих отрицательных элементов
Одномерный массив более 3-х подряд идущих отрицательных элементов, заменить на максимальный элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.01.2014, 14:38     Количество подряд идущих отрицательных элементов #2
C++
1
2
3
4
5
6
7
8
int x=0,t=0;
for(int i=0; i<N; i++)
{
if (a[i] < 0) t++;
else t=0;
if (t>x) x=t;
}
cout<<x<<endl;
kirviza
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 5
22.01.2014, 15:38     Количество подряд идущих отрицательных элементов #3
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
#include <iostream>
using namespace std;
 
int negative(int array[10]){
    int max_el=0;
    int k=0;
    for(int i=0; i<10; i++){
        if(array[i]<0)
            k++;
        else if (k>max_el){
            max_el=k;
            k=0;
        }
    }
 
 
   return max_el;
}
 
int main()
{
    int int_arr[10]={2,-1,-3,3,-4,-7,-2,-5,-1,1};
    cout<<negative(int_arr);
    return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
22.01.2014, 15:42     Количество подряд идущих отрицательных элементов #4
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    std::srand((size_t)(std::time)(nullptr));
    const size_t arraySize(30);
 
    int array[arraySize];
    size_t maximalNegativeLength(0);
    size_t currentNegativeLength(0);
    std::cout << "Array: " << std::endl;
    for (size_t i = 0; i < arraySize; i++) {
        std::cout << (array[i] = std::rand() % 25 - 10) << ' ';
        if (array[i] < 0) {
            currentNegativeLength++;
        } else {
            maximalNegativeLength = maximalNegativeLength < currentNegativeLength ? currentNegativeLength : maximalNegativeLength;
            currentNegativeLength = 0;
        }
    }
    std::cout << std::endl << "Maximal negative length: " << maximalNegativeLength << std::endl;
 
    std::system("pause");
    return 0;
}
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
22.01.2014, 21:01  [ТС]     Количество подряд идущих отрицательных элементов #5
Цитата Сообщение от valeriikozlov Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int x=0,t=0;
for(int i=0; i<N; i++)
{
if (a[i] < 0) t++;
else t=0;
if (t>x) x=t;
}
cout<<x<<endl;
Можно вопрос: а зачем нужна строка if (t>x) x=t, зачем проверять больше ли t чем x?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
22.01.2014, 21:58     Количество подряд идущих отрицательных элементов #6
что бы найти максимальную длинну
Yandex
Объявления
22.01.2014, 21:58     Количество подряд идущих отрицательных элементов
Ответ Создать тему
Опции темы

Текущее время: 00:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru