1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 14
1

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

12.11.2011, 21:10. Показов 13022. Ответов 6
Метки нет (Все метки)

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

Заранее благодарю отозвавшихся.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2011, 21:10
Ответы с готовыми решениями:

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

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

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

упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще
Блин вест мозг себе уже вынес, никак не могу решить задачу(((. Помогите кто чем может....

6
Эксперт С++
4264 / 2238 / 203
Регистрация: 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))
2
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
12.11.2011, 21:29 3
Thinker, а не прокомментируете, что там происходит?
0
Эксперт С++
4264 / 2238 / 203
Регистрация: 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, иначе спускаемся вниз по рекурсии.
1
Заблокирован
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<<"Упорядоченность впорядке!";
0
Эксперт С++
4264 / 2238 / 203
Регистрация: 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;
}
1
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;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2011, 07:55
Помогаю со студенческими работами здесь

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

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

Проверить упорядочен ли массив
Здравствуйте! Нужна ваша помощь, помогите написать программу. Условие: Дано натуральное число N и...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru