Форум программистов, компьютерный форум 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++ Для действительной матрицы размера m x n определить числа b0, b1,…, bm Для действительной матрицы размера m x n определить числа b0, b1,…, bm равные соответственно: суммам элементов строк. Матрица размещается в динамической памяти, а все операции обработки выполняются через указатели. Размерность матрицы вводится пользователем. подробнее

Показать сообщение отдельно
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
22.10.2010, 11:38  [ТС]     Как осуществить сортировку вставками в списках?
вобщем, попробовал перелопатить на свой лад, вот что получилось :
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
#include<iostream>
#include<string.h>
#include<ctype.h>
#include<Windows.h>
#include<stdlib.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;
    WORKER* next;
} ;
 
typedef char* pch;
typedef WORKER* pw;
 
void WORKER_add(pw &head,ifstream &fin)
{
    if (head==NULL)
    {
        head=new WORKER;
        head->next=NULL;
        fin >> head->familiya;
        fin >> head->imya;
        fin >> head->ot4estvo;
        fin >> head->dolzhnost;
        fin >> head->stage;
    }
    else 
    {
        pw p;
        p=head;
        while (p->next!=NULL)
            p=p->next;
        p->next=new WORKER;
        p->next->next=NULL;
        fin >> p->next->familiya;
        fin >> p->next->imya;
        fin >> p->next->ot4estvo;
        fin >> p->next->dolzhnost;
        fin >> p->next->stage;
    }
}
pw input_data(pw &head)
{
    ifstream fin;
    fin.open(fname);
    if (!fin)
    {
             cout<<"\aОткрытие файла не удалось! Попытайтесь снова!";
             return head;
    }
    else    
    {
        while(!fin.eof())
                WORKER_add(head,fin);
        fin.close();
     }
     return head;
}
pw min_fam(pw start)
{
    pw p,min;
    min=start;
    for(p=start;p;p=p->next)
        if(strcmp(p->familiya, min->familiya) < 0)
            min=p;
    return min;
}
struct _tmp{
    char familiya[15];
    char imya[15];
    char ot4estvo[15];
    char dolzhnost[25];
    int stage;
};
void exchange(pw &p,pw &min)
{
    _tmp A;
    A.dolzhnost=p->dolzhnost;
    A.familiya=p->familiya;
    A.imya=p->imya;
    A.ot4estvo=p->ot4estvo;
    A.stage=p->stage;
    p->dolzhnost=min->dolzhnost;
    p->familiya=min->familiya;
    p->imya=min->imya;
    p->ot4estvo=min->ot4estvo;
    p->stage=min->stage;
    min->dolzhnost=A.dolzhnost;
    min->familiya=A.familiya;
    min->imya=A.imya;
    min->ot4estvo=A.ot4estvo;
    min->stage=A.stage;
}
pw sort(pw &head)
{
    pw p,min;
    p=head;
    for(p;p->next;p=p->next)
        if(min=min_fam(p)!=p)
            exchange(p,min);
    return head;
}
 
int main()
{ 
        SetConsoleCP(1251); 
        SetConsoleOutputCP(1251);
 
        pw head=NULL;
                head=input_data(head);
        head=sort(head);
        pw p =head;
        cout<<"База работников:\n";
        while (p!=NULL)
        {
            cout<<p->familiya<<' '<<p->imya<<' '<<p->ot4estvo<<endl;
            p=p->next;
        }
        
        return 0;
}
да, еще проблема что не компилируется не пойму, его не устраивает(Великого Компилятора) левые операнды в exchange'е.

Добавлено через 16 часов 16 минут
Помогите пожалуйста!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru