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

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

Восстановить пароль Регистрация
 
zewer
 Аватар для zewer
1019 / 710 / 71
Регистрация: 07.01.2011
Сообщений: 5,365
27.02.2012, 01:04     Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет #1
Условие задачи:
Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, и значение false если нет.

Код программи:
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
#include "iostream"
 
using namespace std; 
 
//Змiннiй k логiчного типу присвоїти значення true в тому  випадку,
//якщо масив n цiлих чисел впорядкований по зростанню,
//i  значення false в iншому випадку.
void main ()
{
    setlocale (LC_ALL,"Ukrainian");
    bool k = true;
    int n;
    cout << "Введiть розмiр масиву\n";
    cin >> n;
    int *ar;
    ar = new int[n];
    //////////////////
    cout << "Заповнiть масив\n";
    for (int i = 0; i < n; i++)
    {
        cout << i << " елемент: ";
        cin >> ar[i];
        cout << "\n";
    }
    /////////////////
    for (int i = 0; i < n; i++)
    {
        if (ar[i] > ar[i++])
            k = false;
        if (k == false)
            break;
    }
    if (k == false)
        cout << "Масив не впорядкований по зростанню \n";
    else
    {
        cout << "Масив впорядкований по зростанню \n";
    }
    delete ar;
}
В чем проблема:
прога смотрит на
C++
1
2
if (ar[i] > ar[i++])
k = false;
и надает значение true, при любом росставе чисел
почему, я не знаю...
прошу помочь, по скок ничего писать не нужно, а только обяснить почему так, и если можно подкинуть версию, как сделать правильно!
Мне действительно нужна ваша помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 01:04     Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет
Посмотрите здесь:

C++ Создать функцию Chet(k) логического типа,возвращающую True , если целый параметр К является чётным и False в противном случае
C++ Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае.
Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае. C++
C++ Символьной переменной L присвоить значение true, если отрицательная компонента вектора C встретится не позднее, чем у векторов A и B
C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Массив: Переменной Х присвоить 1, если элементы массива упорядочены по возрастанию, 0 - в противном случае. C++
C++ Составить линейную программу,печатающую значение true , если указанное высказывание является истинным,и false в противном случае
C++ Программа, печатающая значение true, если указанное высказывание является истинным, и false в противном случае

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.02.2012, 01:41     Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет #2
Цитата Сообщение от zewer Посмотреть сообщение
void main ()
C++
1
int main()
Цитата Сообщение от zewer Посмотреть сообщение
delete ar;
C++
1
delete[] ar;
Цитата Сообщение от zewer Посмотреть сообщение
и надает значение true, при любом росставе чисел
почему, я не знаю...
Потому что логика у вас неверная
C++
1
if (ar[i] > ar[i++])
это сравнение элемента с самим собой, почитайте о том, как работает постинкремент(который здесь кстати говоря не нужен, увеличением значения счётчика у вас занимается цикл for). Правильный вариант
C++
1
2
3
4
5
6
7
8
for (int i = 1; i < n; i++)
{
    if (ar[i-1] > ar[i]) // сравниваем предыдущий элемент с текущим
    {
        k = false;
        break;
    }    
}
zewer
 Аватар для zewer
1019 / 710 / 71
Регистрация: 07.01.2011
Сообщений: 5,365
27.02.2012, 01:45  [ТС]     Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет #3
спасибо, помогло
Yandex
Объявления
27.02.2012, 01:45     Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет
Ответ Создать тему
Опции темы

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