Форум программистов, компьютерный форум CyberForum.ru

Как осуществить сортировку вставками в списках? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напечатать те слова массива, в которых нет повторяющихся букв http://www.cyberforum.ru/cpp-beginners/thread179274.html
Привет! Помогите мне, пожалуйста, написать программу. Задание: Задан массив слов. Напечатать те слова этого массива в которых нет повторяющихся букв. Пишите, пожалуйста, на языке С++. Не дублируйте темы - это нарушение правил форума!
C++ Построение магического квадрата Помогите построить магический квадрат (магическим квадратом n-ого порядка называется квадрат размерами nxn со вписанными в него натуральными числами от 1 до n2 так, что сумма их по всем горизонталям, вертикалям и диагоналям квадрата равна одному и тому же числу.) http://www.cyberforum.ru/cpp-beginners/thread179268.html
последовательность чисел b1,...bn C++
Дана последовательность чисел b1,...bn. Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bn^n, расположенные по схеме:
C++ Указатели
Нифига не догоняю тему про указатели, есть книга по C/C++ но там не очень понятным языком написано Киньте плиз ссылку на хороший мануал по указателям с нуля, я читал что если не понял эту тему то дальше язык не поймешь?
C++ Возможно ли выводить текст подчеркнутым (зачеркнутым, курсивом)? http://www.cyberforum.ru/cpp-beginners/thread179246.html
Привет всем. Поискал на форуме - не нашел. Скажите пожалуйста, возможно ли выводить текст на экран в с++ подчеркнутым (зачеркнутым, курсивом и тд.)? Задание - отсортировать массив с интерпретацией, для того, чтобы видеть работу сортировщика. Сортировку я сделал, хочу сделать интерпретацию - как-нибудь выделять элементы, которые будут меняться. Как это можно сделать?
C++ Форматированный вывод значения переменной Подскажите пожалуйста как мне вывести значение переменной функцией std::cout чтоб ей отводилось определенное кол-во знаков. Мне необходимо например вывести вот так std::cout <<"== "<<a<<" == "<<x_<<" == "<<y<<" == "<<z<<" ==\n"; чтоб каждой переменной отводилось например по 7 символов? подробнее

Показать сообщение отдельно
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
29.10.2010, 23:52  [ТС]     Как осуществить сортировку вставками в списках?
помогите разобраться еще с такой проблемой: когда в конце программы использую del_list, первый вызов происходит гладко, все зачищает, а вот когда второй список удалять, получается что указатели уже стерты и выдает ошибку, как можно справиться с этим?
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include<iostream>
#include<Windows.h>
#include<fstream>
 
using namespace std;
 
char fname[] = "e:\\Workers.txt";
 
struct WORKER {
        char familiya[15];
        char imya[15];
        char ot4estvo[15];
        char dolzhnost[25];
        int stage;
} ;
typedef struct WORKER_HOLDER{
    WORKER* worker;
    WORKER_HOLDER* next;
} whold;
 
void WORKER_scan(whold*& head)
{
    if (head==NULL)
    {
        head=new whold;
        head->worker=new WORKER;
        cout<<"введите фамилию: ";cin>>head->worker->familiya;
        cout<<"введите имя: ";cin>>head->worker->imya;
        cout<<"введите отчество: ";cin>>head->worker->ot4estvo;
        cout<<"введите должность: ";cin>>head->worker->dolzhnost;
        cout<<"введите стаж";cin>>head->worker->stage;
        head->next=NULL;
        return;
    }
    whold* p=head;
    while(p->next!=NULL)
        p=p->next;
    p->next=new whold;
    p->next->worker=new WORKER;
    cout<<"введите фамилию: ";cin>>p->next->worker->familiya;
    cout<<"введите имя: ";cin>>p->next->worker->imya;
    cout<<"введите отчество: ";cin>>p->next->worker->ot4estvo;
    cout<<"введите должность: ";cin>>p->next->worker->dolzhnost;
    cout<<"введите стаж";cin>>p->next->worker->stage;
    p->next->next=NULL;
}
void print_list(whold* head)
{
    whold *p=head;
    while (p!=NULL)
    {
        cout<<p->worker->familiya<<' '<<p->worker->imya<<' '<<p->worker->ot4estvo<<endl;
        p=p->next;
    }
}
whold* search(whold* head)
{
    int st;
    cout<<"введите интересуемый стаж: ";
    cin>>st;
    whold* w=head;
    bool flag=false;
    while(w)
    {
        if (w->worker->stage>st)
        {
            flag=true;
            break;
        }
        w=w->next;
    }
    if(flag)
    {
        whold* list=NULL;
        w=head;
        while(w)
        {
            if ((list==NULL)&&(w->worker->stage>st))
            {
                list=new whold;
                list->worker=new WORKER;
                list->worker=w->worker;
                list->next=NULL;
                break;
            }
            w=w->next;
        }
        whold* l=list;
        w=w->next;
        while (w)
        {
            if(w->worker->stage>st)
            {
                l->next=new whold;
                l->next->worker=new WORKER;
                l->next->worker=w->worker;
                l->next->next=NULL;
                l=l->next;
            }
            w=w->next;
        }
        return list;
    }
    return NULL;
}
void del_list(whold* &head)
{
    whold* p;
    while(head!=NULL)
    {
        p = head;
        head = head->next;
        delete p->worker;
        delete p;
    }
}
int main()
{
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251);
 
    whold* head=NULL;
    whold* list=NULL;
        char change;
    do 
    {
        cout<<"\nдобавить запись в базу?(y/n)"<<endl;
        cin>>change;
        cout<<endl;
        switch (change) 
        {
            case y: {
                WORKER_scan(head);
                break;
            }
            case n: {
                cout<<"до новых встреч :-)"<<endl;
                break;
            }
        }
    }
    while(change!='n');
 
        list=search(head);
    if(list)
    {
        cout<<"Результат поиска: \n";
        print_list(list);
    }
    else cout<<"Нет ни одного работника с заданным стажем"<<endl;
    
        del_list(list);
    del_list(head);
    return 0;
}
 
Текущее время: 23:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru