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

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

21.12.2023, 18:20. Показов 4591. Ответов 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
12932 / 6800 / 1820
Регистрация: 18.10.2014
Сообщений: 17,211
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru