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

Упорядочен-ли массив по возрастанию? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
12.11.2011, 21:10     Упорядочен-ли массив по возрастанию? #1
Добрый вечер, господа. Взываю к вашей помощи, яко сам столкнулся с непреодолимой трудностью. Вот собсна задача:
Написать программу, которая считывает линейный массив из файла, выводит его на экран и определяет, упорядочен ли он по возрастанию.

Заранее благодарю отозвавшихся.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2011, 21:10     Упорядочен-ли массив по возрастанию?
Посмотрите здесь:

C++ Удалить из массива минимальное количество элементов, чтобы массив стал упорядочен по возрастанию
упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще C++
Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет C++
C++ Получить массив С(К). упорядоченный по возрастанию, путем слияния массивов A(N) и В(М). упорядоченных по возрастанию (К = N + М).
Получить массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по возрастанию (K = N + M) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 21:25     Упорядочен-ли массив по возрастанию? #2
Вот вам проверка на упорядоченность:

C++
1
2
3
4
int Check(int *a, int n)
{
    return n < 2 ? 1 : (a[n - 2] > a[n - 1] ? 0 : Check(a, n - 1));
}
вызывайте так: if(Check(a, N))
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
12.11.2011, 21:29     Упорядочен-ли массив по возрастанию? #3
Thinker, а не прокомментируете, что там происходит?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 21:33     Упорядочен-ли массив по возрастанию? #4
Цитата Сообщение от LEQADA Посмотреть сообщение
Thinker, а не прокомментируете, что там происходит?
Если элементов в массиве < 2, то массив упорядочен, за это отвечает проверка n < 2. Если данное условие выполнено, происходит выход из рекурсии и функция возвращает 1. В противном случае, проверяем, образуют ли элементы a[n-2] и a[n-1] инверсию. Если да, то прекращаем проверку и возвращаем 0, иначе спускаемся вниз по рекурсии.
mc.Duck
Заблокирован
12.11.2011, 22:54     Упорядочен-ли массив по возрастанию? #5
или можно так:

C++
1
2
3
4
5
6
7
8
9
int *a;                                                              //некий числовой массив
bool bol=true;                                                            //переменная упорядоченности
a=new int [10];
for(int i=1;i<=10;i++)
{
if(a[i]>a[i-1]) bol=true; else bol=false;
}
if(bol==false) cout<<"Упорядоченность нарушена!";
if(bol==true) cout<<"Упорядоченность впорядке!";
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 23:12     Упорядочен-ли массив по возрастанию? #6
mc.Duck, не верная логика, проанализируйте массивы
2 1 2
1 2 1
с помощью вашего алгоритма
Да и нумерация не верная. Да и упорядоченность по возрастанию нужна была

Если нравится итерация, то можно так:
C
1
2
3
4
5
6
7
int Check(int *a, int n)
{
   int i;
   for (i = 1; i < n && a[i-1] <= a[i]; i++)
      ;
   return i >= n;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2011, 07:55     Упорядочен-ли массив по возрастанию?
Еще ссылки по теме:

Проверить упорядочен ли массив C++
Проверить что массив упорядочен по невозрастанию C++

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

Или воспользуйтесь поиском по форуму:
YuninDen
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
13.11.2011, 07:55  [ТС]     Упорядочен-ли массив по возрастанию? #7
Спасибо за проверку на возрастание. поможите с полным кодом?
P.S. (вот моя прошла задача - здесь было необходимо открыть файл, считать из него строки, инвертировать их (последнюю строку сделать первой) и переписать в другой файл.
P.S.S Можно-ли её безболезненно переделать?
P,S.S.S правда по-ходу нет, т.к. придется использовать одномерный массив...
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
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
#include <fstream>
 
using namespace std;
 
int main(int argc, char **argv)
{
        setlocale(LC_CTYPE,"Rus");
 
        cout << "Программа, инвертирующая исходный файл \n";
 
        string fileNameInput;
        cout << "Открываем файл: ";
        cin >> fileNameInput;
        cout << "Сохраняем в файл: ";
        string fileNameOutpit;
        cin >> fileNameOutpit;
        ifstream input(fileNameInput.c_str());
        ofstream output(fileNameOutpit.c_str());
        string str;
        list<string> _list;
        
        while (getline(input, str))
                _list.push_back(str);
        int count = _list.size();
        reverse(_list.begin(), _list.end());
        list<string>::iterator it = _list.begin();
        for( ; it != _list.end(); ++it)
                output << *it << endl;
        input.close();
        output.close();
        system("pause");
        return 0;
}
Yandex
Объявления
13.11.2011, 07:55     Упорядочен-ли массив по возрастанию?
Ответ Создать тему
Опции темы

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