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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод числа из десятичной в шестнадцатеричную систему счисления http://www.cyberforum.ru/cpp-beginners/thread415435.html
Здраавствуйте, помогите найти ошибку в этом коде. Непонимаю почему при переводе таких чисел как 16,32,64,128 и тд не дописываются нули. #include <iostream> using namespace std; void main () { unsigned int tmp=0, mask = 0xF0000000; cout<<"Enter the number"<<endl;
C++ Даны площади нескольких кругов Помогите сделать программу! Даны площади нескольких кругов. Найти радиус самого маленького из них! Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread415432.html
C++ Программирование цикла с переадресацией
Помогите решить задачку. Программирование цикла с переадресацией, нужно найти номер максимального числа. Работали через прогу Comp Model. есть десять чисел, сравнение начинается с 40-ой ячейки. Не лезьте со своими задачами в чужие темы, создавайте новую!
C++ Библиотека потокового ввода/вывода
А верно ли, что данная библиотека является вещью абсолютно бесполезной для Windows-программирования и в настояящее время используется исключительно для учебных целей?
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread415389.html
Столкнулся с некоторыми задачками, хотелось бы разобраться: Вычислить сумму ряда с позиции M до позиции N. Каждый i-ый член ряда определяется соотношением: \frac{2^{i-1}}{i!}. Результат вывести на экран. Реализация задач на Си. Заранее спасибо. Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят. На каждый вопрос создавайте...
C++ Распечатать те пары слов, расстояние между которыми наименьшее. Расстояние между словами - это количество позиций, в которых буквы различаются. Например, расстояние между словами МАМА и ПАПА или МЫШКА и КОШКА равно двум. --- Народ, помогите пожалуйста решить эту задачу. подробнее

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

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

23.12.2011, 13:35. Просмотров 247. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru