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

сортировка прямым слиянием - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Совместный проект http://www.cyberforum.ru/cpp-beginners/thread937160.html
Привет. Есть здесь такие ребята, которые хотят что то замутить в команде? Хочу практики, но самому что то неохота, не могу что то придумать себе. Так вот хотелось бы замутить что то. Кто заинтерисовался отвечайте в тему, или пишите в личку. Ах да, с чем я могу работать: Стандартная библиотека, ООП, Шаблоны... Естественно это не на проф. уровне, так же немного .NET. С этого получается, что профи...
C++ Алгоритм: Как определить размера банка? Вот в чём суть: пишу покер дошёл до того, что игроки ставят ставки, игроки которым не хватает денег на ставку ставят столько, сколько есть но потом в конце при открытии они участвуют в розыгрыше банка соответствующему поставленных ими денег. Как определить этот банк? Вот пример 4 игрока положили в банк по 10 фишек в банке стало 40, дальше: 1 игрок ставит ставку 20 фишек 2 игрок у него... http://www.cyberforum.ru/cpp-beginners/thread937147.html
Какова максимальная длина названия функции C++
я привык все функции называть по смыслу,но вот услышал мнение о том, что это слишком и надо короче к примеру я называл что то типа closest_point_information ну и в таком духе. хочу спросить у бывалых, есть ли какие негласные правила по этому поводу
Звуковой буфер C++
Ребят, теперь косяк с выводом. Одним буффером выводить получается, но я не понимаю как сделать несколько буфферов и чтобы пока один допустим пишется файл в другой заполняются данные. Код прилагаю, хотя думаю толку от него в решении моего вопроса не будет wavform.wFormatTag = WAVE_FORMAT_PCM; wavform.nChannels = 1; wavform.nSamplesPerSec = 44100; wavform.nAvgBytesPerSec = 44100*2;...
C++ Класс стек http://www.cyberforum.ru/cpp-beginners/thread937135.html
Доброго времени! Читаю книгу Р. Лафоре - Объектно-ориентированное программирование С++. В теме: "Массивы как члены классов" приведен такой пример: // stakaray.cpp // класс стек #include <iostream> using namespace std;
C++ Параметр для консольной строки - шрифт Lucida Console Начал писать программу (программы) в которых будет записываться информация в файл на русском языке, но для этого должен быть установлен шрифт консоли Lucida Console, у меня такая проблема, каждая новая программа имеет по умолчанию шрифт Точечный шрифт, т.е. НЕ Lucida Console и соответственно если не переключить на Lucida Console в файл записываются каракули, подскажите как сделать так, что бы при... подробнее

Показать сообщение отдельно
_Колючий_
3 / 3 / 2
Регистрация: 05.08.2012
Сообщений: 88
13.08.2013, 01:22     сортировка прямым слиянием
Попытался реализовать алгоритм, но в коде есть ошибки. По всей видимости напортачил в фазе слияния
Буду благодарен, если укажете в чем я не прав

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
template<class T>
void sort2Phase(string &adress)
{ifstream a, b, c;  ofstream B, C, A;
int countA=0;           //счетчек эллементов в исходном файле
T buf, bufB, bufC;      //буферные переменные
int portion=1;          //Размер порции
int nb, nc;             //счетчики считанных из групп эллементов
 
a.open(adress);         //определение числа эллементов в исходном файле
while (a>>buf)
    countA++;
a.close();
 
 
 
while (portion<countA-countA/2)              
{ 
/////////////////////---------------Фаза разделения---------------/////////////////////
B.open(adress+"Btmp.txt"); C.open(adress+"Ctmp.txt"); a.open(adress);
for (int i=0; i<countA/2;i++)                                                       
{a>>buf; 
B<<buf<<' '; 
}
 
for(int i=countA/2; i<countA; i++)
{a>>buf; 
C<<buf<<' '; 
} 
 
 B.close(); C.close(); a.close();
/////////////////////---------------Фаза слияния-------------------/////////////////////
 
b.open(adress+"Btmp.txt"); c.open(adress+"Ctmp.txt"); A.open(adress);           
nb=nc=1; b>>bufB; c>>bufC; 
while (true)
{
    if ( (!c.eof()) && (b.eof()) )                         //Если конец файла С
    {while (c>>bufC)
        A<<bufC<<' ';
    A.close(); b.close(); c.close(); break;}
    else
    if((c.eof()) && (!b.eof()))                           //Если конец файла В
    {while(b>>bufB)
      A<<bufB<<' ';
    A.close(); b.close(); c.close(); break;}
    else
    if(c.eof() && b.eof())                                //есликонец В и С 
    {
    A.close(); b.close(); c.close(); break;
    }
 
    if((nb<=portion) && (nc<=portion))                   
      {if (bufB<bufC)
         A<<bufB<<' '; b>>bufB; nb++; continue;}
    else {A<<bufC<<' '; c>>bufC; nc++; continue;}
 
    if ((nb>portion) && (nc<=portion))
    {while (nc<=portion)
    {A<<bufC; c>>bufC; nc++;}  continue;}
 
    if ((nb<=portion) && (nc>portion))
    {while (nb<=portion)
    {A<<bufB; b>>bufB; nb++;}  continue;}
 
    if ((nb>portion) && (nc>portion))
    {
    nb=nc=0;  continue; 
    }
}
//////////////////////////////////////////////////////////////
portion=portion*2;                                         //удвоение считываемых порций
}
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru