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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
#1

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

05.11.2010, 21:02. Просмотров 1243. Ответов 9
Метки нет (Все метки)

Блин вест мозг себе уже вынес, никак не могу решить задачу(((. Помогите кто чем может.
Задача:Написать подпрограмму,которая проверяла бы, упорядочен ли массив по неубыванию (Xi<=Xi+1),по невозрастанию (Xi=>Xi+1) или не упорядочен вообще. привести пример использования подпрограммы.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2010, 21:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще (C++):

Проверить что массив упорядочен по невозрастанию - C++
Ввести массив из целых чисел (из 10 элементов) и проверить что он упорядочен по невозрастанию

Упорядочен-ли массив по возрастанию? - C++
Добрый вечер, господа. Взываю к вашей помощи, яко сам столкнулся с непреодолимой трудностью. Вот собсна задача: Написать программу,...

Проверить упорядочен ли массив - C++
Здравствуйте! Нужна ваша помощь, помогите написать программу. Условие: Дано натуральное число N и одномерный массив A1, A2...A(N)...

Рекурсивная функция, логически проверяющая, что массив упорядочен по возрастанию - C++
Здравствуйте) Помогите, пожалуйста) Написать рекурсивную логическую функцию, которая проверяет что массив который передается в функцию...

Удалить из массива минимальное количество элементов, чтобы массив стал упорядочен по возрастанию - C++
Всем добрый день Задача Дан массив чисел, необходимо удалить из данного массива минимальное количество элементов, чтобы массив стал...

Сформировать массив, который упорядочен по возрастанию и представляет операцию разности с элементами массивов - C++
Даны два целочисленных одномерных массива. Сформировать третий одномерный массив на основе данных, который упорядочен по возрастанию и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
05.11.2010, 22:02 #2
Э... тоесть если по убыванию то пишет "по убыванию" , а по возрастанию пишет "по возрастанию" и т.д???
0
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
05.11.2010, 23:08  [ТС] #3
да именно так
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.11.2010, 07:03 #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
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);    
    }
}
1
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
06.11.2010, 10:18  [ТС] #5
а можно тоже самое написать,только с использованием scanf и printf
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.11.2010, 13:39 #6
Цитата Сообщение от lokomot Посмотреть сообщение
а можно тоже самое написать,только с использованием scanf и printf
ты имеешь ввиду на языке С (а не С++)???
0
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
06.11.2010, 13:45  [ТС] #7
да )))
0
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
08.11.2010, 08:42  [ТС] #8
Народ пожалуйста помогите,время поджимает,напишите код на Си
0
Alekseyka2
11 / 11 / 1
Регистрация: 18.03.2010
Сообщений: 45
08.11.2010, 16:23 #9
Мой первый код на Си. Написан под GCC, за отсутствие русского извнияюсь.
Если кто-то что-нибудь исправит или посоветует буду благодарен.

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
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
 
 
void outarray(int l, int *la)
{
int j;
int nevozr,neub,vozr,ub;
nevozr=neub=vozr=ub=1;
for(j=0;j<l;j++)
printf("prt[%d]: %d\n",j,la[j]);
 
for(j=0;j<l-1;j++)
{
    if(la[j]>la[j+1])
        {vozr=0; neub=0;}
    else
    {
    if(la[j]<la[j+1])
    {ub=0;nevozr=0;}
    else
    {vozr=0;ub=0;}
    }
}
 
if(ub) printf("Ubivayshii ");
if(vozr) printf("Vozrastayshii ");
if(neub) printf("neubibaushii ");
if(nevozr) printf("nevozrastaushii ");
if(!ub&&!vozr&&!neub&&!nevozr) printf("Neuporadochennii");
 
}
 
 
int main(void) {
 
int i,m,k;
int *ptr;
 
printf("Put lenght of array\n");
scanf("%d",&i);
printf("\nlengt is %d\n",i);
 
ptr=(int*)malloc(i*sizeof(int));
 
for(k=0;k<i;k++)
{
    printf("Enter ptr[%d]:",k);
    scanf("%d",&(ptr[k]));
}
printf("\n");
 
outarray(i,ptr);
 
free(ptr);
return 0;
 
}
1
lokomot
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 9
12.11.2010, 20:02  [ТС] #10
Народ,а может у кого есть другой вариант решения,а то у меня че то она не пашит(((
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 20:02
Привет! Вот еще темы с ответами:

Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет - C++
Условие задачи: Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию,...

Если введенный список упорядочен по возрастанию, то оставить его без изменения - C++
Построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа. Если введенный список упорядочен по...

Сортировка одномерного массива по неубыванию (невозрастанию) - C++
Ввести одномерный массив из n элементов. Отсортировать массив по неубыванию (невозростанию) методом прямого выбора.

Оставить массив без изменения, если он упорядочен по невозрастанию или по неубыванию - Delphi
Дан целочисленный массив Н(30). Оставить его без изменения, если он упорядочен по невозрастанию или по неубыванию; в противном случае...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.11.2010, 20:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru