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

Подсчитать сколько раз элементы массива меняют знак - C++

Восстановить пароль Регистрация
 
HelloWorld56
5 / 5 / 1
Регистрация: 29.03.2012
Сообщений: 62
09.05.2012, 01:59     Подсчитать сколько раз элементы массива меняют знак #1
Дан массив ненулевых целых чисел. Определить сколько раз элементы массива, при просмотре от его начала, меняют знак.

C++ (Qt)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <ctime>
using namespace std;
 
int main ()
{
    setlocale (LC_CTYPE, "Russian");
    srand(time(NULL));
    
    const int size = 10;
    int array1[size];
    int k = 0;
    char label = 'y';
 
    while (label == 'y')
    {
    for (int i = 0; i < size; i++)
    {
        array1[i] = -10 + rand() % 30;
        if (array1[i] == 0)
            i--;
                
    }
    for (int i = 0; i < size; i++)
        cout<<array1[i]<<" ";
    
    for (int i = 0; i < size; i++)
    {
        if ( (array1[i] > 0) && (array1[i+1] < 0) )
            k++;
        if ( (array1[i] < 0) && (array1[i+1] > 0) )
            k++;
        
        
    }
    k = k - 1;
    cout<<"Знак поменялся "<<k<<" раз\n\n\n";
    k = 0;
    cin>>label;
    }
    
    
 
}
Программа работает, но если последний элемент отрицательный (а предыдущий положительный) счётчик не начисляется. Скрин ниже
Подсчитать сколько раз элементы массива меняют знак
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.05.2012, 09:36     Подсчитать сколько раз элементы массива меняют знак #2
Подсчитать сколько раз меняется знак при помощи вашего алгоритма не удасться,
поскольку он вычисляет общее количество пар, в которых один элемент положительный,
а другой - отрицательный. Вот код на С++ который вычисляет сколько раз меняется знак:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define N 7
 
int main()
{
    int A[7] = { 3, -1, 2, 6, -3, -5, -7 };
 
    char sign = '+'; int count = 0;
    for (int i = 0; i < N; i++)
        if (A[i] < 0 && sign == '+')
        {
            count++; sign = '-';
        }
 
        else if (A[i] < 0 && sign == '-')
        {
            count++; sign = '+';
        }
 
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.05.2012, 10:57     Подсчитать сколько раз элементы массива меняют знак #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
#include <iostream>
 
int main()
{
    const size_t n = 5;
    int a[n];
 
    for(size_t i = 0; i < n; ++i)
    {
        std::cin >> a[i];
 
        if(!std::cin) 
            return 1;
    }
 
    //--------
    size_t count = 0;
    for(size_t i = 1; i < n; ++i)
        if((a[i - 1] < 0) != (a[i] < 0))
            ++count;
 
    std::cout << "result: " << count << "\n";
}
HelloWorld56
5 / 5 / 1
Регистрация: 29.03.2012
Сообщений: 62
09.05.2012, 14:04  [ТС]     Подсчитать сколько раз элементы массива меняют знак #4
Добавлено через 24 секунды
Цитата Сообщение от zitxbit Посмотреть сообщение
C++
1
2
3
4
5
    
    for (int i = 0; i < N; i++)
        
        
}
N это что? Нигде же не объявлена
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.05.2012, 14:06     Подсчитать сколько раз элементы массива меняют знак #5
#define N 7 - кол-во элементов массива
Yandex
Объявления
09.05.2012, 14:06     Подсчитать сколько раз элементы массива меняют знак
Ответ Создать тему
Опции темы

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