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

Задача про сортировку с использованием связного списка, нужно найти ошибку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В данный класс добавить код для построчного чтения из файла http://www.cyberforum.ru/cpp-beginners/thread707348.html
помогите пожалуйста в данный класс надо добавить код для построчного чтения из файла Bank_Hall.class ----------------------------------------------------------------------------------------------------------------------- #include <cstdio> #include <cstdlib> #include <iostream> #include <ifstream> class Bank_Hall // объявление класса Bank_Hall {
C++ Проверить, чередуются ли отрицательные и положительные элементы массива Даны целые числа A1...An, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,...или-,+,-,+,...), то ответом должна служить сама исходная последовательность. Иначе получить все отрицательные члены последовательности, сохранив порядок их следования. Помогите пожалуйстаа http://www.cyberforum.ru/cpp-beginners/thread707343.html
C++ пользовательские предупреждения
В шарпе можно было легко создать пользовательское предупреждение, написав #warning TextOfWarning. Как сделать то же в плюсах? Нашел в сети несколько извращений на эту тему, но ни одно не работает как в шарпе. Вот это было ближе всего к правде, но оно работает только в пределах 1го файла.
функции fgetc()/fputc C++
Помогите с задачей, эта тема просто в голову никак не лезет. Используя функции fgetc/fputc, ввести с клавиатуры свои инициалы латинскими буквами, а затем каждый инициал вывести 50 раз в одну строку. на экране должно быть три строки по 50 символов.
C++ Как изменить программу так, чтобы круг двигался не по прямой, а по какому - нибудь другому закону.Например,по какой-нибудь кривой второго порядка? http://www.cyberforum.ru/cpp-beginners/thread707317.html
#include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include <math.h> int main(void) { /* request auto detection */
C++ Вычислить суммы первых K чисел Фибоначчи для K=1 … N Вычислить суммы первых K чисел Фибоначчи для K=1 … N. a)Не храним промежуточные значения вычислений. b)Храним промежуточные значения вычислений. подробнее

Показать сообщение отдельно
tiesto94
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 10
07.12.2012, 20:48  [ТС]     Задача про сортировку с использованием связного списка, нужно найти ошибку
Kuzia domovenok,
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct Person
{
Person* CurrPer;
char name[20], secname[20], fname[20];
int numgr;
double score;
Person* next;
Person* prev;
 
};
class Group
{
 
public:
    int i,j,n;
Person* Input(Person* current);
void Output(Person* current);
Person* SortName(Person* current);
Person* SortSecName(Person* current);
Person* SortFName(Person* current);
Person* SortNumGroup(Person* current);
Person* SortScore(Person* current);
Person* first, tmp;
 
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Rus");
int Num;
Person* CurrPer=new Person; //выделили память под 1й элемент
Group Gruppa;
CurrPer=Gruppa.Input(CurrPer);
//cout<<CurrPer->name<<" "<<CurrPer->secname<<" "<<CurrPer->fname<<" "<<CurrPer->numgr<<" "<<CurrPer->score<<endl;
cout<<"1 - сортировка по имени"<<endl<<"2 - сортировка по фамилии"<<endl<<"3 - сортировка по отчеству"<<endl<<"4 - сортировка по номеру группы"<<endl<<"5 - сортировка по среднему баллу"<<endl;
cin>>Num;
if(Num==1) Gruppa.SortName(CurrPer);
 
if(Num==2) Gruppa.SortSecName(CurrPer);
 
if(Num==3) Gruppa.SortFName(CurrPer);
 
if(Num==4) Gruppa.SortNumGroup(CurrPer);
//
//if(Num==5) Gruppa.SortScore(CurrPer);
 
Gruppa.Output(CurrPer);
return 0;
}
 
Person* Group::Input(Person* current)
{
Person* first=current; //отдельно сохранили адрес первого элемента, чтобы иметь возможность к нему обращаться
current->prev=0; //показываем, что это первый элемент, и перед ним больше нет элементов
int n=0;
ifstream in ("1.txt"); //открыли файл на считывание
in>>current->name>>current->secname>>current->fname>>current->numgr>>current->score;//считали информацию о первом студенте
n=1;
while(!in.eof()) //пока не достигнут конец файла
{
current->next=new Person; //выделили память под i-й элемент типа person и сохранили его адрес в i-1 элементе
current->next->prev=current; //в i-й элемент в переменную prev записали адрес i-1 элемента
current=current->next; //перешли от i-1 элемента к i-му
in>>current->name>>current->secname>>current->fname>>current->numgr>>current->score;//считали информацию о i-м студенте
 
n++; //считаем количество элементов
}
current->next=0;//у последнего элемента сделали указатель на следующий - 0, чтобы было понятно, что это конец списка
current=first;
while(current) {
    cout<<"#"<<n<<"\t"<<current->name<<"\t"<<current->secname<<"\t"<<current->fname<<"\t"<<current->numgr<<"\t"<<current->score<<"\t"<<endl;
    current=current->next;
}
in.close();
return current;
};
 
void Group::Output(Person* current)
{
ofstream output("2.txt");
if(!current)
cout<<"\nВ списке отсутствуют элементы";
else
while(current)
{
output<<current->name<<"\t"<<current->secname<<"\t"<<current->fname<<"\t"<<current->numgr<<"\t"<<current->score<<"\t"<<endl;
 
current=current->next;
}
};
 
Person* Group::SortName(Person* current)
{
      
    bool sorted=false;
      /* Person* current;*/
       /*Person* tmp;*/
       while (!sorted){
             sorted=true;
             current=first;
             while(current->next){
                   if(strcmp(current->name,current->next->name)>0){
                         sorted=false;
                         //deleting Current
                         if (current->prev) current->prev->next=current->next;
                                                    current->next->prev=current->prev;
                         //inserting Current after current->next;
                                                   current->prev=current->next;
                                                   current->next=current->prev->next;
                                                   current->next->prev=current;
                                                   current->prev->next=current;
                   }
                   else
                        current=current->next;
             }
     }
ofstream output("2.txt");
while(current)
{
    cout<<current->name<<"\t"<<current->secname<<"\t"<<current->fname<<"\t"<<current->numgr<<"\t"<<current->score<<"\t"<<endl;
    current=current->next;
}
return current;
}
Person* Group::SortSecName(Person* current)
{
       bool sorted=false;
      /* Person* current;*/
       /*Person* tmp;*/
       while (!sorted){
             sorted=true;
             current=first;
             while(current->next){
                   if(strcmp(current->secname,current->next->secname)>0){
                         sorted=false;
                         //deleting Current
                         if (current->prev) current->prev->next=current->next;
                                                    current->next->prev=current->prev;
                         //inserting Current after current->next;
                                                   current->prev=current->next;
                                                   current->next=current->prev->next;
                                                   current->next->prev=current;
                                                   current->prev->next=current;
                   }
                   else
                        current=current->next;
             }
     }
return current;
}
Person* Group::SortFName(Person* current)
{
       bool sorted=false;
      /* Person* current;*/
       /*Person* tmp;*/
       while (!sorted){
             sorted=true;
             current=first;
             while(current->next){
                   if(strcmp(current->fname,current->next->fname)>0){
                         sorted=false;
                         //deleting Current
                         if (current->prev) current->prev->next=current->next;
                                                    current->next->prev=current->prev;
                         //inserting Current after current->next;
                                                   current->prev=current->next;
                                                   current->next=current->prev->next;
                                                   current->next->prev=current;
                                                   current->prev->next=current;
                   }
                   else
                        current=current->next;
             }
     }
return current;
}
Person* Group::SortNumGroup(Person* current)
{
       bool sorted=false;
      /* Person* current;*/
       /*Person* tmp;*/
       while (!sorted){
             sorted=true;
             current=first;
             while(current->next){
                   if(current->numgr>=current->next->numgr){
                         sorted=false;
                         //deleting Current
                         if (current->prev) current->prev->next=current->next;
                                                    current->next->prev=current->prev;
                         //inserting Current after current->next;
                                                   current->prev=current->next;
                                                   current->next=current->prev->next;
                                                   current->next->prev=current;
                                                   current->prev->next=current;
                   }
                   else
                        current=current->next;
             }
     }
return current;
}
вот прога не робит
 
Текущее время: 15:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru