С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102

Определить, является ли список упорядоченным по возрастанию. Через STL

29.11.2023, 18:37. Показов 547. Ответов 5

Студворк — интернет-сервис помощи студентам
Здраствуйте, я студент выполняю одну работу из двух частей,1) написать прогу реализующую работу со списком и определить, является ли список упорядоченным по возрастанию.2) сделать тоже самое, но используя библиотеку стандартных шаблонов (STL). Первую часть вроде сделал прога получилась простая, структура где есть указатели на следующий и стартовый элемент списка, функция добавление в список элементов из массива, и сама функция проверки, проблема в том что я понятия не имею как сделать это используя библиотеку стандартных шаблонов (STL). Я до сегодняшнего дня даже не знал что это такое, препод сказал что нужно заменить часть программы на какие-то готовые функции, может кто-то из знающих STL людей сделать это ? нужно очень срочно, самому вникать времени нет, буду очень благодарен и отвечу на любые вопросы по поводу основного кода.
Программа на С++ без STL
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
using namespace std;
 
// структура
struct Node {
    int data;
    Node* prev;
    Node* next;
};
 
/* Функция для вставки в список */
void insertAtTheBegin(struct Node** start_ref, int data)
{
    struct Node* ptr1 = new Node;
    ptr1->data = data;
    ptr1->next = *start_ref;
    if (*start_ref != NULL)
        (*start_ref)->prev = ptr1;
    *start_ref = ptr1;
}
 
/* Проверка на возрастание */
void check(struct Node* start)
{
    int i;
    struct Node* ptr1;
    struct Node* lptr = NULL;
    ptr1 = start;
    bool flag = true;
    while (ptr1->next != lptr)
    {
        if (ptr1->data < ptr1->next->data) {
            flag = false;
            break;  // Дальше смотреть бессмыссленно
        }
        ptr1 = ptr1->next;
    }
    if (flag) cout << "Sorted";
    else cout << "Not Sorted";
};
int main()
{
    int list[4];
    int i = 0;
    cout << "Input list :";
    for (i = 0; i < 4; i++)
        cin >> list[i];
    /* начало с пустого связанного списка */
    struct Node* start = NULL;
 
    /* создание списка из массива */
    for (i = 0; i < 4; i++)
        insertAtTheBegin(&start, list[i]);
 
    /* проверка */
    check(start);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2023, 18:37
Ответы с готовыми решениями:

Определить, является ли список упорядоченным по возрастанию
Определить, является ли список упорядоченным по возрастанию. Аргументы: исходный список. ?- pred(). yes ?- pred(). no ?-

Определить, является ли список упорядоченным по возрастанию
помогите, пожалуйста, исправить ошибки в коде и написать функцию проверки на возрастание! с++ #include&lt;stdio.h&gt; ...

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

5
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,006
29.11.2023, 18:44
Цитата Сообщение от MartinFrank Посмотреть сообщение
но используя библиотеку стандартных шаблонов (STL)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <list>
#include <algorithm>
#include <iomanip>
 
int main()
{
    std::list<int> list;
    std::cout << "Input list :";
    for (size_t i = 0; i < 4; i++)
    {
        int item{};
        if(!(std::cin >>item))break;
        list.push_back(item);
    }
    
    auto is=std::is_sorted(list.begin(),list.end());
    std::cout<<"sorted="<<std::boolalpha<<is;
    
    return 0;
}
2
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
29.11.2023, 18:53
Видимо имеются в виду функции adjacent_find и функтор greater_equal.

Получается что-то вроде такого:
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
template<typename T>
std::istream &operator>>(std::istream &in, std::vector<T> &v) {
    std::copy(std::istream_iterator<T>(in), std::istream_iterator<T>(), std::back_inserter(v));
    return in;
}
 
template<typename T>
std::ostream &operator<<(std::ostream &out, const std::vector<T> &v) {
    std::copy(v.begin(), v.end(), std::ostream_iterator<T>(out, " "));
    return out;
}
 
int main() {
    std::vector<int> vector;
    std::cin >> vector;
    std::cout << vector << std::endl;
 
    auto violation = std::adjacent_find(vector.begin(), vector.end(), std::greater_equal<>());
    bool violates = violation != vector.end();
 
    if (violates) {
        std::cout << "Growing sequence violated at zero based index of "
            << std::distance(vector.begin(), violation)
            << ", violating values are " << *violation << " and " << *(violation + 1)
            << std::endl;
    } else {
        std::cout << "Growing sequence.";
    }
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.11.2023, 19:43  [ТС]
Спасибо, а такой вопрос. почему если stl настолько крут что заменяет целые блоки кода, его редко где используют ? И вообще считается нормой его использовать чисто для сокращения объема кода ?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
29.11.2023, 20:22
Цитата Сообщение от MartinFrank Посмотреть сообщение
Спасибо
Пожалуйста.

Цитата Сообщение от MartinFrank Посмотреть сообщение
его редко где используют
С чего вы это взяли?
Есть, безусловно, конкретные ситуации, когда его не используют -- например специфичные фреймворки, в которых своя библиотека, типа QT, некоторый игрострой, в котором скорость так критична, что большинство функций STL слишком медленные.
Попробуйте открыть гитхаб, выбрать язык C++, открыть сотенку проектов и посмотреть, в скольки из них не используется stl.

Цитата Сообщение от MartinFrank Посмотреть сообщение
И вообще считается нормой его использовать чисто для сокращения объема кода ?
Совершенно непонятная фраза.
С чего вы взяли, что это норма и что она именно такая?
STL используют не для "сокращения кода", его используют как уже готовое решение для самых популярных проблем при написании кода. Чтоб не писать с нуля тривиальные вещи.
0
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,006
29.11.2023, 20:52
Цитата Сообщение от MartinFrank Посмотреть сообщение
его редко где используют
его используют повсеместно и очень помногу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2023, 20:52
Помогаю со студенческими работами здесь

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

Проверить, является ли список упорядоченным по возрастанию или убыванию
Написать указанные предикаты на языке Пролог, проверить определения, вызвав предикаты в интерпретаторе с разными аргументами. Список...

Определить является ли массив упорядоченным по возрастанию
Определить является ли массив упорядоченным по возрастанию. В случае отрицательного ответа определить номер первого элемента, нарушающего...

Определить, является ли массив упорядоченным по возрастанию
Ввести в Memo вещественные числа. Создать массив из положительных чисел Memo. Определить, является ли массив упорядоченным по...

Определить, является ли массив упорядоченным по возрастанию
Определить, является ли массив упорядоченным по возрастанию. В случае отрицательного ответа определить номер первого элемента, нарушающего...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru