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

Имеется двусвязный список действительных чисел. Продублировать в нем все положительные числа

21.12.2023, 18:20. Показов 4619. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
\\\Создать список с числами в диапазоне от –50 до +50. После создания
списка выполнить индивидуальное задание. В конце работы все списки должны
быть удалены

Индивидуальное задание:Имеется двусвязный список действительных чисел. Продублировать в нем
все положительные числа
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2023, 18:20
Ответы с готовыми решениями:

Имеется список целых чисел. Продублировать в нем все четные числа
Имеется список целых чисел. Продублировать в нем все четные числа

Создать двусвязный список и продублировать в нем все единицы
Пытался сам сделать, но не работает посмотрите ошибки пожалуйста. #include <stdio.h> #include <conio.h> ...

Дан непустой двусвязный список. Продублировать положительные элементы, и вывести их после существующих
Дан непустой двусвязный список. Продублировать положительные элементы, и вывести их после существующих.Не работает addtail(продублировать...

9
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
22.12.2023, 06:29
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
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cstdlib>
#include <ctime>
 
struct Node {
    int data = 0;
    Node* next = nullptr;
};
 
//-----------------------------------------------------------------------------
void push(Node*& list, int data) {
    Node* node = new Node;
    node->data = data;
    node->next = list;
    list = node;
}
//-----------------------------------------------------------------------------
void pop(Node*& list) {
    Node* node = list;
    list = list->next;
    delete node;
}
//-----------------------------------------------------------------------------
void clean(Node*& list) {
    for (; list; pop(list)) { ; }
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& os, Node*& list) {
    for (auto it = list; it; it = it->next) {
        os << it->data << " ";
    }
    return os;
}
//-----------------------------------------------------------------------------
Node* getRandomList(unsigned cnt, int min, int max) {
    Node* list = nullptr;
    while (cnt--) {
        push(list, rand() % (max - min) + min);
    }
    return list;
}
//-----------------------------------------------------------------------------
Node* duplication(Node* list) {
    for (auto it = list; it; it = it->next) {
        if (0 < it->data) {
            push(it->next, it->data);
            it = it->next;
        }
    }
    return list;
}
//-----------------------------------------------------------------------------
 
int main() {
    std::srand(std::time(nullptr));
 
    auto list = getRandomList(10, -50, 50);
 
    std::cout << "source: " << list << std::endl;
 
    duplication(list);
 
    std::cout << "result: " << list << std::endl;
 
    clean(list);
 
    return 0;
}
Добавлено через 46 минут
Пардон, только сейчас увидел, что список двусвязный
1
0 / 0 / 0
Регистрация: 21.12.2023
Сообщений: 8
22.12.2023, 11:43  [ТС]
спасибо а как продублировать все положительные числа чтоб не было отрицательных

Добавлено через 1 час 19 минут
anmartex, а можно как-то сделать 2 стороний список
0
38 / 27 / 13
Регистрация: 18.12.2023
Сообщений: 74
22.12.2023, 13:17
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
#include <iostream>
#include <stack>
 
int main() {
    std::stack<int> mainStack;
    std::stack<int> positiveStack;
    std::stack<int> negativeStack;
 
    for (int i = -50; i <= 50; ++i) {
        mainStack.push(i);
    }
 
    std::stack<int> tempStack(mainStack);
 
    std::cout << "All numbers in stack:" << std::endl;
    while (!tempStack.empty()) {
        std::cout << tempStack.top() << ' ';
        tempStack.pop();
    }
    std::cout << std::endl;
 
    while (!mainStack.empty()) {
        int value = mainStack.top();
        mainStack.pop();
        if (value > 0) {
            positiveStack.push(value);
        } else if (value < 0) {
            negativeStack.push(value);
        }
    }
 
    std::cout << "Positive stack:" << std::endl;
    while (!positiveStack.empty()) {
        std::cout << positiveStack.top() << ' ';
        positiveStack.pop();
    }
    std::cout << std::endl;
 
    std::cout << "Negative stack:" << std::endl;
    while (!negativeStack.empty()) {
        std::cout << negativeStack.top() << ' ';
        negativeStack.pop();
    }
    std::cout << std::endl;
 
    return 0;
}
Все стеки уничтожаются при выходе из блока кода.
1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
22.12.2023, 18:29
Лучший ответ Сообщение было отмечено m__sakura__l как решение

Решение

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <random>
 
template<typename T>
struct VNode;
 
struct Node {
    Node *prev;
    Node *next;
 
    Node() : prev(this), next(this) {}
    Node(Node *position) : prev(position), next(position->next) {
        next->prev = prev->next = this;
    }
    virtual ~Node() {
        next->prev = prev;
        prev->next = next;
    }
 
    template<typename T>
    T &value() {
        return dynamic_cast<VNode<T>*>(this)->value;
    }
};
 
template<typename T>
struct VNode : public Node {
    T value;
    VNode(Node *position, const T &value) : Node(position), value(value) {}
};
 
template<typename T>
VNode<T> *insert(Node *position, const T &value) {
    return new VNode<T>(position, value);
}
 
Node *erase(Node *position) {
    Node *result = position->next;
    delete position;
    return result;
}
 
void clear(Node &list) {
    while (&list != list.next) {
        delete list.next;
    }
}
 
template<typename Generator>
void generateN(std::size_t n, Node *position, Generator generate) {
    while (n--) {
        position = insert(position->next, generate());
    }
}
 
template<typename T>
std::ostream &output(std::ostream &out, const Node &base) {
    for (auto i = base.next; i != &base;) {
        out << i->template value<T>();
        if ((i = i->next) != &base) {
            out << ", ";
        }
    }
    return out;
}
 
template<typename T, typename Predicate>
void eraseIf(Node *begin, Node *end, Predicate condition) {
    while (begin != end) {
        if (condition(begin->template value<T>())) {
            begin = erase(begin);
        } else {
            begin = begin->next;
        }
    }
}
 
template<typename T, typename Predicate>
void duplicateIf(Node *begin, Node *end, Predicate condition) {
    while (begin != end) {
        auto &value = begin->template value<T>();
        if (condition(value)) {
            begin = insert(begin, value);
        }
        begin = begin->next;
    }
}
 
int main() {
    std::random_device rd; // генератор случайных чисел
    std::mt19937 rg(rd()); // больше генераторов случайных чисел
    // равномерное распределение для количества чисел в списке
    std::uniform_int_distribution<std::size_t> sdis(10, 15);
    // равномерное распределение для значений элементов в списке
    std::uniform_real_distribution<float> vdis(-50, 50);
 
    // будущий размер списка
    std::size_t n = sdis(rg);
    // генератор случайного действительного числа
    auto randomFloat = [&]()->float { return vdis(rg); };
 
    // Имеется двусвязный список действительных чисел
    Node list;
 
    // Создать список с числами в диапазоне от –50 до +50
    generateN(n, &list, randomFloat);
 
    // вывод
    output<float>(std::cout, list) << '\n';
 
    // продублировать все положительные числа
    duplicateIf<float>(list.next, &list, [](auto v) { return v > 0; });
 
    // вывод
    output<float>(std::cout, list) << '\n';
 
    // чтоб не было отрицательных
    eraseIf<float>(list.next, &list, [](auto v) { return v < 0; });
 
    // вывод
    output<float>(std::cout, list) << '\n';
 
    // В конце работы все списки должны быть удалены
    clear(list);
    return 0;
}
Добавлено через 47 секунд
Цитата Сообщение от Van_Darkholme Посмотреть сообщение
Все стеки уничтожаются при выходе из блока кода.
А при чем тут стеки? Где двусвязный список? Где действительные числа?
2
22.12.2023, 18:35

Не по теме:

lemegeton, Изначально в условии задачи было написано про стеки и про действительные числа ничего не было, даже индивидуальное задание было другое

0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13177 / 6813 / 1821
Регистрация: 18.10.2014
Сообщений: 17,238
22.12.2023, 18:45
Цитата Сообщение от m__sakura__l Посмотреть сообщение
а как продублировать все положительные числа чтоб не было отрицательных
В задании сказано "продублировать все положительные числа". Про "чтоб не было отрицательных" ни слова не сказано. Откуда это?
0
0 / 0 / 0
Регистрация: 21.12.2023
Сообщений: 8
24.12.2023, 11:54  [ТС]
lemegeton, спасибо но почему я запускаю программу у меня не целые числа а вот так
-26.5359, 9.07419, 24.4545, -6.10307, -10.085, -40.0403, -21.8789, -1.32786, 4.40057, -10.9735
-26.5359, 9.07419, 9.07419, 24.4545, 24.4545, -6.10307, -10.085, -40.0403, -21.8789, -1.32786, 4.40057, 4.40057, -10.9735

9.07419, 9.07419, 24.4545, 24.4545, 4.40057, 4.40057
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
24.12.2023, 19:37
Цитата Сообщение от m__sakura__l Посмотреть сообщение
программу у меня не целые числа а вот так
Может быть потому что в задани написано следующее:
Цитата Сообщение от m__sakura__l Посмотреть сообщение
Имеется двусвязный список действительных чисел.
А действительные числа это float. Накрайняк double.

Добавлено через 12 минут
Цитата Сообщение от Van_Darkholme Посмотреть сообщение
lemegeton, Изначально в условии задачи было написано про стеки и про действительные числа ничего не было, даже индивидуальное задание было другое
Понимаю. )
0
24.12.2023, 22:39

Не по теме:

Цитата Сообщение от Van_Darkholme Посмотреть сообщение
Изначально в условии задачи было написано про стеки и про действительные числа ничего не было, даже индивидуальное задание было другое
"Я родился гениальным и потрясающим ребёнком, но в роддоме меня подменили"

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2023, 22:39
Помогаю со студенческими работами здесь

Дан файл целых чисел. Продублировать в нем все числа, принадлежащие диапазону 5–10
Дан файл целых чисел. Продублировать в нем все числа, принадлежащие диапазону 5–10. я нашла в вашем форуме, о на других языках. я мне на...

Дан файл целых чисел. Продублировать в нем все числа,принадлежащие диапазону 5-10
Дан файл целых чисел. Продублировать в нем все числа,принадлежащие диапазону 5-10. Заранее спасибо.

Дан файл целых чисел. Продублировать в нем все числа, принадлежащие заданному диапазону
Помогите с задачкой на бинарные файлы: Дан файл целых чисел. Продублировать в нем все числа, принадлежащие диапазону 5..10. Заранее...

Двусвязный список. Продублировать все элементы с нечетными значениями
Дано показатель Р1 на первый элемент непустого двухзвьязного списка. Продублировать в списке все элементы с нечетными значениями (новые...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru