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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сделайте задание пожал. :Дано одномерный массив А1, А2, ..., А10 действительных чисел. Получить больше всего среди А1 + А10, А2 + А9, ..., А5 + А6. http://www.cyberforum.ru/cpp-beginners/thread178038.html
На с++.Очень важно!!!!!
C++ Символьный тип Задано строку. Посчитать, сколько в нем букв 'i' 'k' 'l' http://www.cyberforum.ru/cpp-beginners/thread178029.html
Класс контейнера, реализующий интерфейс C++
Всем доброго времени суток. Возник вопрос по выполнению задания. Вот само задание: Необходимо разработать класс контейнера, реализующий приведенный ниже интерфейс. При разработке допускается использовать STL. Кроме этого, внутренняя реализация ничем не ограничена. class ElemNotFound {}; template < class ElemType, class IndexType > class IContainer { public:
C++ Массивы символов
Вообщем требуется создать программу, содержащую описание структуры AEROFLOT, с которой нужно провести некоторые взаимодействия. AEROFLOT состоит из нескольких символьных типов. Моя проблема возникает на стадии ввода-вывода массива, состоящего из элементов AEROFLOT. вводятся данные вроде как нормально, но потом, ради проверки, пытаюсь вывести значение одного из полей какого-нибудь элемента и...
C++ Определить, в какой строке целочисленной матрицы находится самая длинная серия одинаковых элементов http://www.cyberforum.ru/cpp-beginners/thread178002.html
2)Написать программу, определяющую, в какой строке целочисленной матрицы m x n находится самая длинная серия одинаковых злементов. Под серией имеются в виду элементы, расположенные подряд. Пример ввода: 4 4 1 2 3 4 2 3 4 6 1 1 1 5 2 2 1 6
C++ Functions 1)Даны два массива из n целых чисел каждый. Определить, в каком из них больше положительных элементов. Пример ввода (формат обязателен): 3 1 -1 3 2 2 2 Примеры вывода (формат обязателен): Number of positives in the first array is greater Number of positives in the second array is greater подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
18.10.2010, 17:13     последовательность чисел сколько раз меняеться знак
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//////////////////////////////////////////////////////////////////////////////////
//  есть к примеру массив чисел 10, -4, 12, 56, -5, -89 тут они меняю знак 3 раза, 
//как описать в программе сколько раз любая последовательность чисел может менять знак
//////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////
typedef std::vector<int>  T_nums;
//////////////////////////////////////////////////////////////////////////////////
struct T_is_sign_changes
{
    int operator() (int a, int b)
    {
        return static_cast<int>(a * b == 0 ? a < 0 || b < 0 : a * b < 0);
    }
};
//////////////////////////////////////////////////////////////////////////////////
int  get_sign_changes_quantity(const T_nums&  nums)
{
    T_nums  sign_changes(nums.size());
    std::adjacent_difference(nums.begin(), nums.end(), sign_changes.begin(), 
                             T_is_sign_changes());
 
    return std::count(sign_changes.begin() + 1, sign_changes.end(), 1);
}
//////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    std::cout << "Введите длину последовательности: ";
    int n;
    std::cin >> n;
    T_nums  nums(n);
    std::cout << "Введите "
              << n 
              << " положительных и отрицательных чисел: "
              << std::endl;
    for(int i = 0; i < n; ++i)
    {
        std::cout << "-> ";
        std::cin >> nums[i];
    }
    std::cout << "В этой последовательности знак меняется "
              << get_sign_changes_quantity(nums)
              << " раз."
              << std::endl;
}
 
Текущее время: 22:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru