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

Работа со списками

24.07.2015, 13:57. Показов 751. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать программу, которая создает список, элементами которого являются целые числа. Для заданных чисел a,b, выводит в порядке размещения все числа списке меньше чем а, потом все числа из диапазона [a,b] и, наконец, все числа большие выше b. НО список просматривается только 1 раз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2015, 13:57
Ответы с готовыми решениями:

Работа со списками. С++
Очень сильно нужна помощь в этой работе. Прошу всех, кто может помочь. Буду искренне благодарен) ...

Работа со списками
Помогите пожалуйста с лабораторной работой: "Файл содержит следующую информацию (построчно):...

Работа со списками
Пожалуйста помогите реализовать на С++ т.к я затрудняюсь с этим заданием (буду очень сильно...

Работа со списками.
Помогите, пожалуйста, с реализацией добавления в середину двунаправленного списка с головным...

3
Заблокирован
24.07.2015, 14:21 2
Цитата Сообщение от Yuralug Посмотреть сообщение
НО список просматривается только 1 раз.
В процессе просмотра создайте три списка и записывайте туда
Цитата Сообщение от Yuralug Посмотреть сообщение
числа списке меньше чем а, потом все числа из диапазона [a,b] и, наконец, все числа большие выше b
1
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
24.07.2015, 22:39 3
Будет что-то вроде этого:
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
#include <vector>
#include <iostream>
 
using namespace std;
 
int main()
{
    int n,a,b;
    vector<int> list,listInfA,listBInf,listAB;
 
    cout <<"List size = ";
    cin >> n;
 
    cout <<"a = ";
    cin >> a;
 
    cout <<"b = ";
    cin >> b;
 
    int value;
    for(int i=0;i<n;i++){
        cout <<"Element "<<i+1<<": ";
        cin >> value;
        list.push_back(value);
 
        if(value < a){
            listInfA.push_back(value);
        }else{
            if(value > b){
                listBInf.push_back(value);
            }else{
                listAB.push_back(value);
            }
        }
    }
 
    cout <<"---------------------------------------" << endl;
    cout <<"a = "<< a << endl;
    cout <<"b = "<< b << endl;
    cout <<"List: ";
 
    for(size_t i=0;i<list.size();i++){
        cout << list[i] << " ";
    }
    cout << endl;
    cout <<"---------------------------------------" << endl;
    cout <<"(-inf,a): ";
    for(size_t i=0;i<listInfA.size();i++){
        cout << listInfA[i] << " ";
    }
    cout << endl;
    cout <<"[a,b]: ";
    for(size_t i=0;i<listAB.size();i++){
        cout << listAB[i] << " ";
    }
    cout << endl;
    cout <<"[b,inf): ";
    for(size_t i=0;i<listBInf.size();i++){
        cout << listBInf[i] << " ";
    }
    cout << endl;
 
    return 0;
}
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
24.07.2015, 23:40 4
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
#include <iostream>
#include <cstdlib>
 
struct slist {
    int    val;
    slist* next;
};
bool slist_add(slist*& lst, int val);
void slist_clear(slist*& lst);
 
struct triple {
    slist* l1, *l2, *l3;
};
 
void slist_triple(slist*& lst, triple* tp, int a, int b){
    slist* p = lst, *t1 = NULL, *t2 = NULL, *t3 = NULL;
    
    tp->l1 = tp->l2 = tp->l3 = NULL;
    for(; p != NULL; p = p->next){
        if(p->val < a){
            if(tp->l1 == NULL)
                tp->l1 = t1 = p;
            else {
                t1->next = p;
                t1 = p;
            }
        } else if(p->val >= a && p->val <= b){
            if(tp->l2 == NULL)
                tp->l2 = t2 = p;
            else {
                t2->next = p;
                t2 = p;
            }
        } else {
            if(tp->l3 == NULL)
                tp->l3 = t3 = p;
            else {
                t3->next = p;
                t3 = p;
            }           
        }
    }
    lst = NULL;
    if(t1 != NULL)
        t1->next = NULL;
    if(t2 != NULL)
        t2->next = NULL;
    if(t3 != NULL)
        t3->next = NULL;
}
 
 
int main(void){
    slist* lst = NULL;
    for(int i = 0; i < 50; ++i)
        slist_add(lst, std::rand() % 31);
 
    int a = 10;
    int b = 20;
 
    triple tp;
    slist_triple(lst, &tp, a, b);
 
    const slist* p;
    for(p = tp.l1; p != NULL; p = p->next)
        std::cout << p->val << ' ';
    std::cout << std::endl;
 
    for(p = tp.l2; p != NULL; p = p->next)
        std::cout << p->val << ' ';
    std::cout << std::endl;
 
    for(p = tp.l3; p != NULL; p = p->next)
        std::cout << p->val << ' ';
    std::cout << std::endl;
 
    slist_clear(tp.l1);
    slist_clear(tp.l2);
    slist_clear(tp.l3);
    return 0;
}
 
//добавление
bool slist_add(slist*& lst, int val){
    slist* p = new (std::nothrow) slist();
    if(p != NULL){
        p->val  = val;
        p->next = lst;
        lst = p;
    }
    return (p != NULL);
}
 
//удаление
void slist_clear(slist*& lst){
    slist* tmp;
    while(lst != NULL){
        tmp = lst;
        lst = lst->next;
        delete tmp;
    }
}
Результат работы кода
0
24.07.2015, 23:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2015, 23:40
Помогаю со студенческими работами здесь

Работа со списками
Здравствуйте! Нужно реализовать много разных функций по работе со списками. Все работает кроме...

Работа со списками
Подскажите пожалуйста как можно подправить программу. Выдает ошибку, никак не пойму, как можно...

Работа со списками
Немножко понял принцип создания списков , но прога не работает... Что это могут быть за ошибки ? я...

Работа со списками
Работа со списками(обьеденение, добавление и т.п.), при запуске выбивает такие ошибки. :-| С++,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru