0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 42
1

Выяснить является ли последовательность чисел возрастающей или убывающей

02.04.2017, 19:42. Показов 6570. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана последовательность целых чисел a1 ,a2...an. Выяснить будет ли она возрастающей или убывающей.
Так же нужно инициализировать массив и сделать его динамичным.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2017, 19:42
Ответы с готовыми решениями:

Выяснить является ли заданная последовательность строго возрастающей, строго убывающей, или ни тем и ни другим
На вход программы дается целое положительное число N большее единицы (N>1) и последовательность из...

Дан массив, определить является ли последовательность возрастающей, убывающей, не возрастающей, не убывающей?
Дан массив, определить является ли последовательность возрастающей, убывающей, не возрастающей, не...

Выяснить, является ли последовательность целых чисел возрастающей
Дана последовательность целых чисел а1, а2, ..., аn. Выяснить будет ли она возрастающей.

Массив: Выяснить, является ли последовательность чисел убывающей без использования массивов.
Выяснить является ли последовательность чисел убывающей без использования массивов. Пользователь...

9
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.04.2017, 02:17 2
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n; cout << "N = "; cin >> n;
    int *a; a = new int[n];
    bool voz = true; bool ub = true;
    for (int i = 0; i < n; i++)
    {
        cout << "[" << i << "] = ";
        cin >> a[i];
    }
    for (int i = 0; i < n-1; i++) //проверка на возрастающую
    {
        if (a[i]<a[i+1])
        {   ub = false; }       
        else
        {   voz = false;    }
    }
    for (int i = 0; i < n - 1; i++) //проверка на убывающую
    {
        if (a[i]>a[i + 1])
        {   voz = false; }
        else
        {   ub = false; }
    }
    if (ub)
    {   cout << "Убывающая" << endl;  }
    else
    {
        if (voz)
        {   cout << "Возрастающая" << endl; }
        else
        {   cout << "Не возрастающая и не убывающая" << endl; }
    }
    delete[] a;
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 42
03.04.2017, 11:38  [ТС] 3
Почему то у меня всегда не убывающая и не возрастающая
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.04.2017, 12:03 4
Den4ik280, через enter вводите?
0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
03.04.2017, 12:04 5
Лучший ответ Сообщение было отмечено Den4ik280 как решение

Решение

Потому что в первом цикле он убьет правду на возрастание, а во втором на убывание, в любом случае.
Убери if else. Оставь if;

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 for (int i = 0; i < n-1; i++) //проверка на возрастающую
    {
        if (a[i]>=a[i+1])
        {   voz = false; }       
        
    }
    for (int i = 0; i < n - 1; i++) //проверка на убывающую
    {
        if (a[i]<=a[i + 1])
        {   ub = false; }
    }
    if (ub)
    {   cout << "Убывающая" << endl;  }
    else
    {
        if (voz)
        {   cout << "Возрастающая" << endl; }
        else
        {   cout << "Не возрастающая и не убывающая" << endl;   }
    }
1
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.04.2017, 12:20 6
alexjun, да как-то нет
Название: 2e9876b52e9744c2bcf8b97d914f98d5.png
Просмотров: 60

Размер: 1.4 КбНазвание: 376d64dc20924d4aba9fca834dc7af9b.png
Просмотров: 61

Размер: 2.1 Кб
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.04.2017, 12:28 7
Я про
Цитата Сообщение от alexjun Посмотреть сообщение
Потому что в первом цикле он убьет правду на возрастание, а во втором на убывание, в любом случае.
Добавлено через 1 минуту
Но как бы то ни было, ваш код оптимальный
0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
03.04.2017, 12:45 8
Возможно. Запутался в сравнениях )))
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
03.04.2017, 12:54 9
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
#include <iostream>
 
int main()
{
    int n;
    
    std::cin >> n;
    
    // in results:
    // 0 - no increasing, no decreasing
    // 1 - increasing
    // 2 - decreasing
    
    int res = 0;
    
    int prev;
    
    std::cin >> prev;
    
    {
        int tmp = prev;
        
        std::cin >> prev;
        
        if (prev > tmp)
            res = 1;
        else if (prev < tmp)
            res = 2;
    }
    
    for (int it = 0, prev2 = prev; it < n - 2; ++it, prev2 = prev)
    {
        std::cin >> prev;
        
        if (prev > prev2 && res == 1)
            continue;
        else if (prev < prev2 && res == 2)
            continue;
        else
        {
            res = 0;
            break;
        }
    }
    
    switch (res)
    {
        case 0:
            std::cout << "no increase and no decrease\n";
            break;
        case 1:
            std::cout << "increase\n";
            break;
        case 2:
            std::cout << "decrease\n";
            break;
        
        default:
            std::cout << "unknown\n";
            break;
    };
}
0
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
03.04.2017, 13:19 10
Вот очень короткое решение:

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>
 
int main()
{
    int n, prev;
    std::cin >> prev;
    bool asc = false, des = false;
    
    while (std::cin >> n) {
        if (n < prev) des = true;
        if (n > prev) asc = true;
        prev = n;
    }
    
    if (!des && !asc)
        std::cout << "Мотонная последовательность." << std::endl;
    else if (des && !asc)
        std::cout << "Убывающая последовательность." << std::endl;
    else if (!des && asc)
        std::cout << "Возрастающая последовательность." << std::endl;
    else
        std::cout << "Прыгает короче." << std::endl;
    
    return 0;
}
0
03.04.2017, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2017, 13:19
Помогаю со студенческими работами здесь

Выяснить является ли последовательность возрастающей используя указатели.
Дана последовательность целых чисел a1, a2 , ..., an. Выяснить, будет ли она возрастающей используя...

Дана последовательность действительных чисел a1, a2, a3,…,an. Выяснить, будет ли она убывающей
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;ctime&gt; //10. Дана последовательность...

Выяснить будет ли последовательность чисел возрастающей
Нужно составить массив. Задача: Дана последовательность целых чисел а1, а2, ..., аn. Выяснить...

Выяснить, будет ли последовательность действительных чисел возрастающей
Дана последовательность действительных чисел A1, A2,...,An. Выяснить, будет ли она возрастающей


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru