Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 44
#1

Организовать список объектов и сортировку списка - C++

10.11.2013, 18:12. Просмотров 293. Ответов 0
Метки нет (Все метки)

Поправьте, пожалуйста, прогу. Ошибка выскакивает, а какая - не понять...
Само задание: Организовать список объектов и сортировку списка. Данные списка вводятся с клавиатуры, после каждого элемента идет запрос на ввод следующего элемента или завершение ввода. При сортировке элементы списка остаются в оперативной памяти на «своих местах», меняются только значения указателей, связывающие элементы. Вывести на экран список до сортировки и после сортировки. Объект- сотрудник (поля: ФИО, дата приема на работу, должность, базовый оклад) Сортировка по окладу методом вставки.
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
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <string>
#include <conio.h>
 
struct sotrudnik
{
    char name[64];
    char priem; 
    char dolzhnost;
    int oclad;
};
 
struct List
{
    sotrudnik inf;
    List *pNext, *pPred; 
};
 
void add(List *&pF, List *p, bool first)
{
    if (pF==0)
    {
        pF=p->pNext=p->pPred=p;
        return;
    }
    p->pNext=pF;
    p->pPred=pF->pPred;
    pF->pPred->pNext=p;
    pF->pPred=p;
    if (first) pF=p;
}
void print(List *pF)
{
    List *p=pF;
    do
    {   
        printf("\nName %s \nPriem %d \nDolzhnost %s \nSize proc\n  %f", p->inf.name, p->inf.priem, p->inf.dolzhnost, p->inf.oclad);
        p=p->pNext;
    }
    while(p!=pF);
}
void addList(List *pZad, List *p)
{
    p->pPred=pZad;
    p->pNext=pZad->pNext;
    pZad->pNext->pPred=p;
    pZad->pNext=p;
}
List * remove(List *&pF, List *p)
{
    if (pF==0) return 0;
    if (pF->pNext==pF) 
    {
        if (p==pF) 
        {
            pF=0;
            return p;
        }
        else return 0; 
    }
    if (p==pF) 
        pF=pF->pNext; 
    p->pPred->pNext=p->pNext;
    p->pNext->pPred=p->pPred;
    return p;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    List *pF=0;
    List *p;
    setlocale(LC_ALL,"rus");
    int i;
    printf("Введите данные");
    do
    {
        p=new List;
        printf("\nВведите ФИО ");
        flushall();
        gets(p->inf.name);
        printf("\nВведите дату приема на работу ");
        flushall();
        scanf("%d",&p->inf.priem);
        printf("\nВведите должность ");
        flushall();
        gets(p->inf.dolzhnost);
        printf("\nВведите процентную ставку ");
        flushall();
        scanf("%lf",&p->inf.oclad);
        add(pF,p,false);
        printf("\nХотите продолжить ввод?\n да - 1\n нет - 0"); 
        flushall();
        scanf("%d",&i);
    }
    while(i!=0);
    setlocale(LC_ALL,"C");
    print(pF);
    setlocale(LC_ALL,"rus");
    // Сортировка методом вставки
    if (pF==pF->pNext) 
    {
        printf("\nСписок отсортирован");
        getch();
        return 0;
    }
    p=pF->pNext; 
    do
    {
        List *p1=p->pNext; 
        List *p2=pF; 
        do
        {
            if (p2->inf.oclad>p->inf.oclad) 
            {
                p=remove(pF, p); 
                if (p==0)
                {
                    printf("Ошибка!");
                    getch();
                    return 0;
                }
                if (p2==pF) add(pF, p,true); 
                else addList(p2->pPred, p);
                break;
            }
            p2=p2->pNext; 
        }
        while(p2!=p);
        p=p1; 
    }
    while(p!=pF);
    printf("\n\nОтсортированный список:");
    setlocale(LC_ALL,"C");
    print(pF);
    getch();
    return 0;
}
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 18:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Организовать список объектов и сортировку списка (C++):

Организовать список объектов и сортировку списк - C++
Помогите пожалуйста написать программу.Вот само задание: Организовать список объектов и сортировку списка. Данные списка вводятся с...

Организовать ввод в однонаправленный список; подсчитать сумму чисел списка - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо подсчитать сумму чисел...

Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Не - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо добавить узел после...

Организовать ввод в однонаправленный список, узел списка состоит из двух полей: целое число и указатель - C++
Здравствуйте, нужна ваша помощь!!! Нужно написать программу Организовать ввод в однонаправленный список. Узел списка состоит из двух...

Как организовать сортировку динамического массива - C++
Ввести num - количество массивов. Ввести размерность очередного массива и его элементы типа double, разместить их в динамической памяти....

В динамическом массиве организовать двунаправленную экстремумную сортировку - C++
в динамическом массиве организовать двунаправленную экстремумную сортировку. как объяснял преподаватель нужно &quot;свапать&quot; максимальный...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 18:12
Привет! Вот еще темы с ответами:

Используя производные классы, определить класс параметризованного списка одного из следующих типов. Применить его для построения списка объектов указа - C++
Используя производные классы, определить класс параметризованного упорядоченного списка. Применить его для построения упорядоченного...

Организовать новый список из различных элементов заданного, включив в информационную часть узла количество его вхождения в первоначальный список - C++
Организовать новый список из различных элементов заданного, включив в информационную часть узла количество его вхождения в первоначальный...

Реализовать поиск и сортировку по заданному полю в списке объектов пользовательского типа - C++
Доброго времени суток. Дали задачу &quot;Запись о багаже пассажира содержит: фамилия, номер рейса, дата время вылета, пункт назначения, кол-во...

Реализовать сортировку массива объектов пользовательского типа по заданному полю (структуры) - C++
Есть перечень студентов, прибывших в лагерь по форме: ФИО, факультет, номер отряда. Упорядочить перечень по номерам отрядов, внутри отряда...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.