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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В данный класс добавить код для построчного чтения из файла http://www.cyberforum.ru/cpp-beginners/thread707348.html
помогите пожалуйста в данный класс надо добавить код для построчного чтения из файла Bank_Hall.class...
C++ Проверить, чередуются ли отрицательные и положительные элементы массива Даны целые числа A1...An, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,...или-,+,-,+,...), то ответом должна служить сама... http://www.cyberforum.ru/cpp-beginners/thread707343.html
C++ пользовательские предупреждения
В шарпе можно было легко создать пользовательское предупреждение, написав #warning TextOfWarning. Как сделать то же в плюсах? Нашел в сети несколько извращений на эту тему, но ни одно не работает как...
функции fgetc()/fputc C++
Помогите с задачей, эта тема просто в голову никак не лезет. Используя функции fgetc/fputc, ввести с клавиатуры свои инициалы латинскими буквами, а затем каждый инициал вывести 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

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

24.11.2012, 12:11. Просмотров 717. Ответов 10
Метки (Все метки)

Имеется файл состоящий из данных о студентах(ФИО, номер группы, средний бал). Построить сортированный список(по имени хотя бы) по любому из параметров. Написал программу, должна по сути вывести в другой файл сортированный список по имени. Синтаксических ошибок нет, не компилируется

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
#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
{
int i,j,n;
public:
Person* Input(Person* CurrPer);
void Output(Person* CurrPer);
Person SortName(Person* CurrPer);
Person* first, tmp;
 
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Rus");
Person* CurrPer=new Person; //выделили память под 1й элемент
Group Gruppa;
CurrPer=Gruppa.Input(CurrPer);
Gruppa.SortName(CurrPer);
Gruppa.Output(CurrPer);
return 0;
}
 
Person* Group::Input(Person* CurrPer)
{
 
 
Person* first=CurrPer; //отдельно сохранили адрес первого элемента, чтобы иметь возможность к нему обращаться
CurrPer->prev=0; //показываем, что это первый элемент, и перед ним больше нет элементов
int n=0;
ifstream in ("1.txt"); //открыли файл на считывание
in>>CurrPer->name>>CurrPer->secname>>CurrPer->fname>>CurrPer->numgr>>CurrPer->score; //считали информацию о первом студенте
while(!in.eof()) //пока не достигнут конец файла
{
CurrPer->next=new Person; //выделили память под i-й элемент типа person и сохранили его адрес в i-1 элементе
CurrPer->next->prev=CurrPer; //в i-й элемент в переменную prev записали адрес i-1 элемента
CurrPer=CurrPer->next; //перешли от i-1 элемента к i-му
 
in>>CurrPer->name>>CurrPer->secname>>CurrPer->fname>>CurrPer->numgr>>CurrPer->score; //считали информацию о i-м студенте
n++; //считаем количество элементов
}
CurrPer->next=0; //у последнего элемента сделали указатель на следующий - 0, чтобы было понятно, что это конец списка
in.close();
return CurrPer;
};
 
void Group::Output(Person* CurrPer)
{
ofstream output("2.txt");
if(!CurrPer)
cout<<"\nВ списке отсутствуют элементы";
else
while(CurrPer)
{
output<<CurrPer->name<<"\t"<<CurrPer->secname<<"\t"<<CurrPer->fname<<"\t"<<CurrPer->numgr<<"\t"<<CurrPer->score<<"\t"<<endl;
CurrPer=CurrPer->next;
}
};
 
Person Group::SortName(Person* CurrPer)
{
 
for(i=0;i<n;i++)
{
CurrPer=first;
for(j=0;j<n-i-1;j++)
{
if(strcmp(CurrPer->name,CurrPer->next->name)==1)
{
 
tmp=*CurrPer;
strcpy_s(CurrPer->name,CurrPer->next->name);
strcpy_s(CurrPer->secname,CurrPer->next->secname);
strcpy_s(CurrPer->fname,CurrPer->next->fname);
CurrPer->numgr=CurrPer->next->numgr;
CurrPer->score=CurrPer->next->score;
 
 
CurrPer=CurrPer->next;
 
strcpy_s(CurrPer->name,tmp.name);
strcpy_s(CurrPer->secname,tmp.secname);
strcpy_s(CurrPer->fname,tmp.name);
CurrPer->numgr=tmp.numgr;
CurrPer->score=tmp.score;
 
}
else CurrPer=CurrPer->next;
}
}
cout<<first;
return *first;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru