Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В данный класс добавить код для построчного чтения из файла https://www.cyberforum.ru/ cpp-beginners/ thread707348.html
помогите пожалуйста в данный класс надо добавить код для построчного чтения из файла Bank_Hall.class...
Проверить, чередуются ли отрицательные и положительные элементы массива C++
Даны целые числа A1...An, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,...или-,+,-,+,...), то ответом должна служить сама...
C++ пользовательские предупреждения
В шарпе можно было легко создать пользовательское предупреждение, написав #warning TextOfWarning. Как сделать то же в плюсах? Нашел в сети несколько извращений на эту тему, но ни одно не работает как...
C++ функции fgetc()/fputc Помогите с задачей, эта тема просто в голову никак не лезет. Используя функции fgetc/fputc, ввести с клавиатуры свои инициалы латинскими буквами, а затем каждый инициал вывести 50 раз в одну... https://www.cyberforum.ru/ cpp-beginners/ thread707337.html
C++ Как изменить программу так, чтобы круг двигался не по прямой, а по какому - нибудь другому закону.Например,по какой-нибудь кривой второго порядка? https://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)Храним промежуточные значения вычислений.
Составить программу для нахождения произведения двух матриц C++
Здравствуйте, вы не могли бы составить программу для нахождения произведения двух матриц? С С++ проблемы, дается с трудом. Заранее спасибо.
C++ Нужно переделать ввод массива Сама задача выглядит так: Дан двумерный массив целых чисел. В каждом его столбце найти количество положит. элементов; Вот решение: #include "stdafx.h" #include <conio.h> #include <iostream> https://www.cyberforum.ru/ cpp-beginners/ thread707281.html
C++ Одномерный массив, половину решил, остальное затруднило https://www.cyberforum.ru/ cpp-beginners/ thread707278.html
Среднесуточная температура за первую неделю октября записана в таблицу. Определите • какого числа были заморозки, если известно, что в нечетные дни заморозков не было; • сколько дней температура...
C++ Используя массив структур - на основе введённых данных создать таблицу Знаю что делаю, что-то не так. Но не могу разобраться. Нужно используя массив of Structures - на основе введённых данных создать таблицу. #include <stdio.h> #include <string> #define NUMELS... https://www.cyberforum.ru/ cpp-beginners/ thread707275.html
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 10
07.12.2012, 20:48  [ТС] 0

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

07.12.2012, 20:48. Просмотров 993. Ответов 10
Метки (Все метки)

Ответ

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;
}
вот прога не робит

Вернуться к обсуждению:
Задача про сортировку с использованием связного списка, нужно найти ошибку
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2012, 20:48
Готовые ответы и решения:

Построить бинарное дерево с использованием связного списка
Построить бинарное дерево с использованием связного списка. Элементы дерева принимают значения...

linkedlist нужно сделать копирование связного списка
classProgram { staticvoid Main(string args) { LinkedList&lt;string&gt; linkedList =...

Задача про треугольник. Найти ошибку
Условие: ввести 3 числа, если они могут быть длинами сторон прямоугольного треугольника, вывести их...

Найти ошибку в задаче на файловый ввод/вывод (задача про МКАД)
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с первого...

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