С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Uinslou
Старичок :)
728 / 315 / 5
Регистрация: 03.04.2011
Сообщений: 1,430
#1

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

23.12.2011, 13:35. Просмотров 257. Ответов 0
Метки нет (Все метки)

Задание: Написать программу сортировки данных по алгоритму прямого слияния на трех лентах;
Реализовать заданный алгоритм сортировки на языке С++ в виде 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2011, 13:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка данных по алгоритму (C++):

Сортировка двунаправленного линейного списка по алгоритму Хоара - C++
ПОМОГИТЕ СРОЧНО!!!! нужно отсортировать двунаправленный линейный список по алгоритму Хоара менять местами можно только указатели!! код...

Чтение из файла определённого места и сортировка данных исходя из этих данных - C++
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

Сортировка данных - C++
#include &lt;iostream&gt; using namespace std; char shift(char *in) { char item, *out = in; item = in; *in++; while (*out++...

Сортировка данных в массиве - C++
Такой вопрос: написал прогу по структурам. Вроде код правильный, но при сортировке записи перемешиваются и получается бред. Быть может в...

Сортировка данных структуры! - C++
требуется чуть-чуть, а никак :-((. Добавить сортировку по полю пробег!!!! Microsoft VS Studio 2005 C++. я знаю что тут типа как строчек 5...

Сортировка данных класса - C++
Всем привет,есть класс &quot;книга&quot; у меня не получилось сделать несколько пунктов, 1.При добавлении авторов сохраняется последний автор,так...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2011, 13:35
Привет! Вот еще темы с ответами:

Сортировка данных стуктуры - C++
Здравствуйте, пытался сортировать данные стуктуры, но ничего не выходило, либо выводятся нули, либо вообще ничего. #include &lt;stdio.h&gt;...

Передача данных и сортировка - C++
Сделал шаблонную очередь,но так и не понял как мне передать данные в класс sort и как сделать сортировку строк по алфавиту в этом классе. ...

Сортировка в базе данных - C++
Покажите пример реализации сортировки в базе данных. вижла, с++, консоль. самый простейший. не могу найти ничего похожего. заранее...

Сортировка данных в структуре - C++
Написал код для структуры, содержащей список фамилий, имен, номеров телефона, дней рождения Нужно сортировать список по номеру телефона ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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