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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка рёбер по длине http://www.cyberforum.ru/cpp-beginners/thread1003619.html
Ориентированный взвешенный граф задан перечнем дуг (ориентированных рёбер). Отсортировать эти дуги по возрастанию длин, сохранив (в дополнительных полях) номера этих дуг во входных данных. Входные данные Первая строка содержит количество вершин N ( 2 ≤ N ≤ 30000 ) и количество дуг (ориентированных рёбер) M ( 1 ≤ M ≤ 123456 ). Каждая из последующих M строк содержит ровно три целых числа u , v...
C++ классы и подклассы #include <iostream.h> #include <string.h> class Otdel_kadrov { public: char family; char inicialy; float oklad; float god_rozhd; http://www.cyberforum.ru/cpp-beginners/thread1003617.html
C++ Класс строка и переопределение операций
Класс Строка должен включать данное типа строка символов - S и уметь обрабатывать параметр методов типа строка символов - S1. Для этого в нём должны быть реализованы следующие операции над строками. 1.Выполнение операции “больше” для двух строк. 2.Сокращение строки S на длину строки S1 слева. 3.Замена в строке всех прописных букв русского алфавита на строчные. 4.Замена в строке первых n...
Секретарша C++
Однажды, неловкая секретарша перепутала личные дела учащихся. Теперь их снова необходимо упорядочить сначала по классам, а внутри класса по фамилиям. В первой строке дано число N (1 ≤ N ≤ 1000) – количество личных дел. Далее для каждого из N учащихся следующие данные (каждое в своей строке): фамилия и имя, класс, дата рождения. Фамилия и имя – строки не более чем из 20 символов, класс – строка...
C++ Сортировка массива методом простого обмена http://www.cyberforum.ru/cpp-beginners/thread1003587.html
Привет,программисты! Мне поставлена задача выполнить сортировку одномерного массива методом простого обмена. Массив я задаю с помощью датчика рандомных чисел. Мой датчик: #include<iostream.h> #include<stdlib.h> #include<conio.h> void main()
C++ С++ оператор присвоения Всем доброго времени суток. Я написал класс в котором имеется приватный указатель или вернее 2 мерный массив. Выглядит он вот так вот: class Bitmap { protected: Pixel** pixels = nullptr; Vector2 Size; подробнее

Показать сообщение отдельно
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
10.11.2013, 18:12     Организовать список объектов и сортировку списка
Поправьте, пожалуйста, прогу. Ошибка выскакивает, а какая - не понять...
Само задание: Организовать список объектов и сортировку списка. Данные списка вводятся с клавиатуры, после каждого элемента идет запрос на ввод следующего элемента или завершение ввода. При сортировке элементы списка остаются в оперативной памяти на «своих местах», меняются только значения указателей, связывающие элементы. Вывести на экран список до сортировки и после сортировки. Объект- сотрудник (поля: ФИО, дата приема на работу, должность, базовый оклад) Сортировка по окладу методом вставки.
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;
}
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru