Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
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
0

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

24.11.2012, 12:11. Просмотров 993. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2012, 12:11
Готовые ответы и решения:

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

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.