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

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

Войти
Регистрация
Восстановить пароль
 
Actionhank
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 3
#1

Проверить, являются ли числа в массиве возрастающими? - C++

28.08.2012, 20:16. Просмотров 747. Ответов 13
Метки нет (Все метки)

Всем доброго времени суток, долго боролся над данной проблемой, изменял код по всячески, пробовал разные проверки на возрастание, все впустую. Программа по первому условию судит все массивы - если сначала проверять на невозрастание, то все введенные массивы она признает такими, и наоборот.
Прилагаю код и очень надеюсь на вашу помощь. Желательно указать на ошибку, а не переписывать с нуля. спасибо заранее.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
const int size = 5;
int main()
{
bool a;
int mas[size];
for (int i = 0; i < size; i++)
cin >> mas[i];
for (int i = 0; i < size; i++)
if (mas[i] <= mas[i+1])
a = true;
else 
a = false;
if (a == true)
cout << "true" << endl;
else
cout << "false" << endl;
system ("PAUSE >> null");
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2012, 20:16     Проверить, являются ли числа в массиве возрастающими?
Посмотрите здесь:

Определить являются ли цифры, из которых состоит число, возрастающими - C++
Подскажите (а лучше киньте ссылку), что где почитать чтобы решить эти задачки: 1) дано натуральное число. определить являются ли цифры,...

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

Проверить, являются ли данные числа С и D соответственно квадратом и кубом числа А - C++
Составить алгоритм, печатающий значение &quot;Истина&quot; если указанное высказывание является истинным, и &quot;Ложь&quot; в противном случае: данные числа С...

Проверить, являются ли числа простыми - C++
задание Составить программу для проверки утверждения: &quot;Результатами вычислений по формуле x^2+x+41, при 0&lt;x&lt;40 являются простые числа&quot;....

Проверить, являются ли данные три числа взаимно простыми - C++
1. Протабулируйте функции. Отрезок и шаг вводятся с клавиатуры: e^-x -x^3 2. Проверить, являются ли данные три числа взаимно простыми

Проверить, являются ли заданные три числа взаимно простыми - C++
Проверить, являются ли заданные три числа взаимно простыми. Помогите пожалуйста, очень прошу вас! :rose:

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.08.2012, 20:21     Проверить, являются ли числа в массиве возрастающими? #2
Эм. Проходим по массиву слева направо. Пока array[i - 1] < array[i], ничего не делаем. Если это условие нарушается, то тут же выходим из цикла (break;). Если условие было нарушено (заведите флажок для этого), то числа не возрастающие.
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
28.08.2012, 20:21     Проверить, являются ли числа в массиве возрастающими? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
const int size = 5;
int main()
{
    bool a=true;
    int mas[size];
    for (int i = 0; i < size; i++)
        cin >> mas[i];
    for (int i = 0; i < size-1; i++)
        if (mas[i] > mas[i+1])
            { a=false; break; }
    if (a == true)
        cout << "true" << endl;
    else
        cout << "false" << endl;
    system ("pause");
    return 0;
}
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
28.08.2012, 20:35     Проверить, являются ли числа в массиве возрастающими? #4
Цитата Сообщение от Andrey.K Посмотреть сообщение
if (a == true)
C++
1
if (a)
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
28.08.2012, 20:46     Проверить, являются ли числа в массиве возрастающими? #5
Цитата Сообщение от neske Посмотреть сообщение
C++
1
if (a)
я подправил его код, но замечание дельное!!!
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2012, 21:27     Проверить, являются ли числа в массиве возрастающими? #6
можно компактнее записать:
C
1
2
3
4
5
6
int check(int *a, int *end)
{
   return a < end ? (*(a-1) <= *a && check(a+1, end)) : 1;
}
 
check(a+1, a+N);
Actionhank
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 3
28.08.2012, 21:28  [ТС]     Проверить, являются ли числа в массиве возрастающими? #7
большое спасибо за участие и оперативный ответ, я правда еще должен посравнивать коды, что бы все понять, однако сразу бросилась в глаза функция
return 0;
понятно, что эта функция возвращает какой-то ноль, но я новичек и не очень понял ее суть...
я не очень понял, где мой код давал слабину, однако, что бы он заработал, достаточно было всего лишь проверять на непоследовательность и вписать брейк. все же немного прояснилась ситуация. еще раз спасибо, добра всем.
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2012, 21:40     Проверить, являются ли числа в массиве возрастающими? #8
Цитата Сообщение от Actionhank Посмотреть сообщение
я не очень понял, где мой код давал слабину
Ваш код, по сути, проверял утверждение:
верно ли, что a[size-1] <= a[size],
при этом в массиве нет элемента с индексом size. Вот и все, что делал ваш код. То есть вы сравниваете только одну пару элементов, а информация о предыдущих парах у вас теряется. Можно так сделать:

C
1
2
3
for(i = 1; i < size && a[i-1] <= a[i]; ++i)
   ;
puts(i >= size ? "yes" : "no");
Actionhank
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 3
28.08.2012, 21:45  [ТС]     Проверить, являются ли числа в массиве возрастающими? #9
Цитата Сообщение от Thinker Посмотреть сообщение
Ваш код, по сути, проверял утверждение:
верно ли, что a[size-1] <= a[size],
при этом в массиве нет элемента с индексом size. Вот и все, что делал ваш код. То есть вы сравниваете только одну пару элементов, а информация о предыдущих парах у вас теряется. Можно так сделать:

C
1
2
3
for(i = 1; i < size && a[i-1] <= a[i]; i++)
   ;
puts(i >= size ? "yes" : "no");
значит, если бы я не использовал сайз, а массив был бы с фиксированным числом элементов, то проблемы бы не возникло?
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.08.2012, 21:46     Проверить, являются ли числа в массиве возрастающими? #10
std::is_sorted
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2012, 21:48     Проверить, являются ли числа в массиве возрастающими? #11
Цитата Сообщение от Actionhank Посмотреть сообщение
значит, если бы я не использовал сайз, а массив был бы с фиксированным числом элементов, то проблемы бы не возникло?
Да нет, вы не так поняли. На примере.
2 1 3
Сначала вы сравнили 2 и 1 (2 > 1, то есть условие не выполнено и пора бы остановиться), но вы идете дальше и сравниваете 1 и 3 и т.д., забывая при этом, что 2>1 и массив не упорядочен по возрастанию.
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
28.08.2012, 21:59     Проверить, являются ли числа в массиве возрастающими? #12
Цитата Сообщение от Andrey.K Посмотреть сообщение
if (mas[i] > mas[i+1])
{ a=false; break; }
пропускает одно условие если (mas[i] == mas[i+1])
а это уже не возрастание
или так
C++
1
if (mas[i] >= mas[i+1])
или так
C++
1
if (!(mas[i] < mas[i+1]))
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
29.08.2012, 11:49     Проверить, являются ли числа в массиве возрастающими? #13
Thinker, А где строчка a[size-1] <= a[size]?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 12:34     Проверить, являются ли числа в массиве возрастающими?
Еще ссылки по теме:

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

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

Найти в массиве числа, которые являются квадратами простых - C++
Написать программу в которой создается массив из любых чисел, а потом выводятся те числа которые являются квадратами простых

Проверить, монотонно ли растут числа в массиве - C++
{ int a={1,8,56,98,25,-9,45,64,17,5,79}; for (int k = 0; k &lt; 12; k++) { bool swaped=false; for (int i = 0; i &lt; 12-1; i++) { ...


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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.08.2012, 12:34     Проверить, являются ли числа в массиве возрастающими? #14
Цитата Сообщение от Leonman Посмотреть сообщение
Thinker, А где строчка a[size-1] <= a[size]?
В коде ТС
C++
1
2
3
4
5
for (int i = 0; i < size; i++)
   if (mas[i] <= mas[i+1]) 
      a = true;
   else 
      a = false;
посмотрите что будет на последнем шаге итерации. Именно последний шаг и будет результатом всего алгоритма. Поэтому этот цикл эквивалентен условию

C++
1
2
3
4
   if (mas[size-1] <= mas[size]) 
      a = true;
   else 
      a = false;
Yandex
Объявления
29.08.2012, 12:34     Проверить, являются ли числа в массиве возрастающими?
Ответ Создать тему
Опции темы

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