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

Работа с последовательностью - C++

Восстановить пароль Регистрация
 
markeloff1337
0 / 0 / 0
Регистрация: 06.06.2014
Сообщений: 7
23.06.2014, 19:37     Работа с последовательностью #1
Доброго времени суток. Помогите пожалуйста ребят в задачке. Не могу понять как делать

В зависимости от того, образуют элементы заданного массива целых чисел из n элементов строго бывающую, не возрастающую, строго возрастающую, неубывающую последовательность, выдать соответствующее сообщение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 19:37     Работа с последовательностью
Посмотрите здесь:

Определить, является ли массив убывающей последовательностью C++
C++ определить,является ли матрица последовательностью вида
С++ в чем ошибка (действия с последовательностью по условию) C++
работа с последовательностью (удалить из массива элем-т, расположенный после 1-го элем-та с max значением, и элем-т после 1-го элем-та с min знач.) C++
Работа с последовательностью целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
23.06.2014, 19:49     Работа с последовательностью #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
const int N=20;
double mass[N];
// заполнить массив
bool Vozr=true,Ubyv=true,StrictVozr=true,StrictUbyv=true;
for(int i=1;i<N;i++)
{
      if(mass[i-1]<mass[i])
      {
        Ubyv=false;
        StrictUbyv=false;
      }
      if(mass[i-1]==mass[i])
      {
        StrictVozr=false;
        StrictUbyv=false;
      }
      if(mass[i-1]>mass[i])
      {
        Vozr=false;
        StrictVozr=false;
      }
}
if(StrictVozr)
   cout<<"Строго Возрастающая";
else if(Vozr)
   cout<<"Возрастающая";
else
   cout<<"Невозрастающая";
if(StrictUbyv)
   cout<<"Строго Убывающая";
else if(Ubyv)
   cout<<"Убывающая";
else
   cout<<"Неубывающая";
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
23.06.2014, 19:52     Работа с последовательностью #3
zss,
какой ответ будет у последовательности 1 1 1 1 1 1 1?
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
23.06.2014, 19:56     Работа с последовательностью #4
markeloff1337,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void check(int *a, int n)
{
    bool less = true, nobig = true, big = true, noless = true;
    for (int i = 1; i < n; i++)
    {
        if (less && a[i] >= a[i-1]) less = false;
        if (nobig && a[i] > a[i-1]) nobig = false;
        if (big && a[i] <= a[i-1]) big = false;
        if (noless && a[i] < a[i-1]) noless = false;
        if (!less && !nobig && !big && !noless) { cout << "Вообще хрень, а не последовательность" << endl; break; }
    }
    if (less) cout << "Убывающая" << endl;
    if (nobig) cout << "Невозрастающая" << endl;
    if (big) cout << "Возрастающая" << endl;
    if (noless) cout << "Неубывающая" << endl;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
23.06.2014, 20:02     Работа с последовательностью #5
Цитата Сообщение от ValeryS Посмотреть сообщение
какой ответ будет у последовательности 1 1 1 1 1 1 1?
А какой Вы считаете должен быть?
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
23.06.2014, 20:04     Работа с последовательностью #6
zss, ради интереса я проверил, получилось: Убывающая Возрастающая. А должно неубывающая и невозрастающая
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
23.06.2014, 20:14     Работа с последовательностью #7
Цитата Сообщение от Хедин Посмотреть сообщение
получилось: Убывающая Возрастающая
Думаю, всем легко догадаться, как устранить этот нюанс.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
23.06.2014, 20:21     Работа с последовательностью #8
Цитата Сообщение от zss Посмотреть сообщение
А какой Вы считаете должен быть?
ну уж никак не "возрастающая"
смотрим
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
if(mass[i-1]==mass[i])
      {
        StrictVozr=false;
        StrictUbyv=false;
      }
в цикле отработает только эта ветка
следовательно Vozr и Ubyv останутся true,
потом отработает эта ветка [quote="zss;6355366"[CPP]else if(Vozr)
cout<<"Возрастающая";[/CPP][/quote]
и все

[size="1"]Добавлено через 1 минуту[/size]
Цитата Сообщение от Хедин Посмотреть сообщение
получилось: Убывающая Возрастающая.
до убывающей дело не должно дойти
else не дадут
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
23.06.2014, 20:28     Работа с последовательностью #9
ValeryS, не должно, но...
Да и посмотрел я код подробнее, как раз там 2 пачки условий, каждое доходит до второго if, так что выводится 2 сообщения, так что все в порядке
Миниатюры
Работа с последовательностью  
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
23.06.2014, 20:45     Работа с последовательностью #10
Цитата Сообщение от Хедин Посмотреть сообщение
как раз там 2 пачки условий,
пардон, не доглядел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2014, 20:57     Работа с последовательностью
Еще ссылки по теме:

Последовательностью Фарея C++
Вставить тире между последовательностью чисел C++
Не выводит строки с возрастающей последовательностью C++

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

Или воспользуйтесь поиском по форуму:
Хедин
23.06.2014, 20:57     Работа с последовательностью
  #11

Не по теме:

ValeryS, да всякое бывает

Yandex
Объявления
23.06.2014, 20:57     Работа с последовательностью
Ответ Создать тему
Опции темы

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