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

упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Интегрирование по методу Симпсона http://www.cyberforum.ru/cpp-beginners/thread186785.html
написать программу которая посчитала бы интеграл сos(x+x^3)dx по методу симпсона с точностью до одной тысячной.буду оч.благодарен)))
C++ Считывание из файла есть файл с настройками prog.conf вида: date = 01.02.2010 time = 15:05:45 step = 0.5 ... есть переменные: day, month, year, step, time тоесть дату нужно разбить на день, месяц, год... время надо перевести в милисекунды с начала суток http://www.cyberforum.ru/cpp-beginners/thread186770.html
C++ getline по 2 раза
Привет. Почему в MSVC, если написать один раз getline(std::cin, path); то ввод не происходит? приходится писать 2 раза case 9: { std::string path(""); std::cout << "Введите имя файла: "; getline(std::cin, path); getline(std::cin, path); loadUFromFile(currGeneration, ROW,COL, path); break;
С клавиатуры вводятся целые числа. Признак конца ввода – 0. Определить количество минимальных значений., C++
нужно написать программку срочно(С++) ...О_опомогите пожалуйста) ВОТ УСЛОВИЕ: С клавиатуры вводятся целые числа. Признак конца ввода – 0. Определить количество минимальных значений.
C++ Из заданной строки получить только цифры http://www.cyberforum.ru/cpp-beginners/thread186735.html
В какой то строке цифры с перемешкой буквами. Из строки надо взять только цифры. Пример: dcfgvbhjn123456 Вывод: 123 456. Надо использовать указатели. Дублирование тем запрещено правилами форума (п. 3.4). Не плодите одинаковых тем.
C++ Решение нелинейных уравнений методом деления отрезков пополам Здравствуйте ! Пытаюсь решить задачку на тему Решение нелинейных уравнений Методом деления отрезков пополам.. написал код для некоторой функции,но когда ввожу отрезки (a,b) абсолютно любые числа, значение f(x) компилятор выводит всегда 0,2 почему,никак понять не могу ? #include <iostream.h> #include <conio.h> #include <stdio.h> #include <math.h> подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.11.2010, 07:03     упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/////////////////////////////////////////////////////////////////////////////////////
//Задача:Написать подпрограмму,которая проверяла бы, упорядочен ли массив 
//по неубыванию (Xi<=Xi+1),по невозрастанию (Xi=>Xi+1) или не упорядочен вообще. 
//Привести пример использования подпрограммы. 
/////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
/////////////////////////////////////////////////////////////////////////////////////
void  print_orderliness_type(const T_nums&  nums)
{
    T_nums  adj_diff(nums.size());
    std::adjacent_difference(nums.begin(), nums.end(), adj_diff.begin());
 
    T_num  min_diff = *std::min_element(adj_diff.begin() + 1, adj_diff.end());
    T_num  max_diff = *std::max_element(adj_diff.begin() + 1, adj_diff.end());
 
    //неубывающий    
    bool  is_nondecreasing  = min_diff >= 0;
 
    //невозрастающий    
    bool  is_nonincreasing  = max_diff <= 0;
 
    //возрастающий    
    bool  is_increasing     = min_diff > 0;
 
    //убывающий    
    bool  is_decreasing     = max_diff < 0;
 
    std::cout << "Массив";
              
    if(    !is_nondecreasing
        && !is_nonincreasing
      )
    {
        std::cout << " неупорядоченный";
    }
    else
    {
        if(is_nondecreasing)
        {
            std::cout << " неубывающий";                      
        }
 
        if(is_nonincreasing)
        {
            std::cout << " невозрастающий";                      
        } 
 
        if(is_increasing)
        {
            std::cout << " возрастающий";                      
        }
 
        if(is_decreasing)
        {
            std::cout << " убывающий";                      
        }   
    }
}
/////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << std::endl
                  << "Введите размер массива: ";
        int n;
        std::cin >> n;
        if(n == 0)
        {
            break;
        }
        std::cout << "Введите "
                  << n
                  << " элементов массива:"
                  << std::endl;
 
        T_nums  nums(n);
        for(int i = 0; i < n; ++i)
        {
            std::cout << "a["
                      << i + 1
                      << "] = ";
 
            std::cin >> nums[i];
        }
 
        print_orderliness_type(nums);    
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru