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

Сортировка данных по алгоритму - C++

Восстановить пароль Регистрация
 
Uinslou
Старичок :)
 Аватар для Uinslou
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
23.12.2011, 13:35     Сортировка данных по алгоритму #1
Задание: Написать программу сортировки данных по алгоритму прямого слияния на трех лентах;
Реализовать заданный алгоритм сортировки на языке С++ в виде void-функции.

Вроде более менее правильно написал, вначале правильно сортирует, но потом - бред получается, не могу понять где ошибка помогите плиз.

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
#include<iostream>
#include<fstream>
 
using namespace std;
 
void out_file (ofstream &f, char namefile [], int &filesize);
void read_file (ifstream &f, char namefile []);
void f_ab (fstream &f, fstream &a, fstream &b, char namefile [], int n);
void ab_f (fstream &a, fstream &b, fstream &f, char namefile [], int n);
void read_file_a (ifstream &a);
void read_file_b (ifstream &b);
void QuickSort (int l, int r, int *a, int n);
 
void main()
{
 int n,N;
 int filesize=0;
 setlocale(LC_ALL,"Russian");
 ofstream fout;
 ifstream fin;
 fstream foutin; 
 
 ofstream aout;
 ifstream ain;
 fstream aoutin; 
 
 ofstream bout;
 ifstream bin;
 fstream boutin; 
 
 char namef [15];
 char namea [15];
 char nameb [15];
 cout<<endl<<"Введите имя первой ленты : "<<endl<<"(сюда будет записана строка которую необходимо отсортировать)";
cin>>namef;
 /*cout<<endl<<"Введите имя второй ленты ленты : "<<endl;
 cin>>namea;
 cout<<endl<<"Введите имя третей ленты : "<<endl;
 cin>>nameb;*/
 
 out_file(fout,namef, filesize);
 read_file (fin, namef);
 N=1;
 n=N;
do
{
f_ab(foutin, aoutin, boutin, namef, N);
read_file_a (ain);
read_file_b (bin);
ab_f(aoutin, boutin, foutin, namef, N);
read_file (fin, namef);
N=N*2;
}while(N<=filesize);
 
}
 
void out_file (ofstream &f, char namefile [], int &filesize)
{
 int x;
 f.open (namefile, ios::binary);
 cout<<"Ввод значений (чтобы прекратить ввод введите *)"<<endl<<endl;
 cout<<"Введите x=";
 cin>>x;
 filesize++;
 while (x!=0)
 {
 f.write ((char*) &x, sizeof x);
 cout<<endl<<"Введите x=";
 filesize++;
 cin>>x;
 
 }
 f.close();
 cout<<endl;
 filesize--;
 cout<<"filesize: "<<filesize<<endl;
 
}
 
void read_file_a (ifstream &a)
{
 int x;
 a.open ("a.dat", ios::binary | ios::in);
 cout<<"Output file: ";
 while (a.read((char*) &x, sizeof x))
 { 
 cout<<x<<" ";
 
 }
 cout<<endl;
 a.close();
}
 
void read_file_b (ifstream &b)
{
 int x;
 b.open ("b.dat", ios::binary | ios::in);
 cout<<"Output file: ";
 while (b.read((char*) &x, sizeof x))
 { 
 cout<<x<<" ";
 }
 cout<<endl;
 b.close();
}
 
void read_file (ifstream &f, char namefile [])
{
 int x;
 f.open (namefile, ios::binary | ios::in);
 cout<<"Output file: ";
 while (f.read((char*) &x, sizeof x))
 { 
 cout<<x<<" ";
 
 }
 cout<<endl;
 f.close();
}
 
void f_ab (fstream &f, fstream &a, fstream &b, char namefile [], int n)
{
 int x,i,j;
 f.open(namefile, ios::in|ios::binary);
 a.open("a.dat", ios::out|ios::binary);
 b.open("b.dat", ios::out|ios::binary);
 i=1;
 while (!f.eof())
 {
 if (i%2!=0) //если i – нечетное число 
// i % n равно остатку от деления i на n
 {
 j=1;
 while (j<=n && f.read((char *)&x, sizeof x))
 {
 a.write((char *)&x, sizeof x);
 j++;
 } //end while j
 } //end if
 else
 {
 j=1;
 while (j&l
Вот файл, где описан сам алгоритм:
http://vkontakte.ru/doc18644862_3700...848df8a48e0cf6
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2011, 13:35     Сортировка данных по алгоритму
Посмотрите здесь:

C++ Сортировка данных структуры!
Сортировка данных стуктуры C++
C++ Сортировка двунаправленного линейного списка по алгоритму Хоара
Сортировка данных в структуре C++
C++ Сортировка данных
Сортировка данных в Структуре С++ C++
Сортировка данных класса C++
Сортировка и поиск данных в структуре C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru