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

Быстрая сортировка содержимого больших файлов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, стоят ли цифры числа в натуральном ряду через одну http://www.cyberforum.ru/cpp-beginners/thread227378.html
Задача 4.22 Составить функцию, которая для целого числа определяет, стоят ли его цифры в натуральном ряду через одну. В вызывающей функции main() организовать ввод целого числа N из диапазона от 1 до 9 и среди всех N-значных целых чисел найти числа, запись которых состоит из цифр, стоящих в натуральном ряду через одну. Вывести их на экран и подсчитать количество таких чисел. В вызывающей...
C++ от чего зависит скорость выполнения программы от чего больше всего зависит скорость выполнения программы? http://www.cyberforum.ru/cpp-beginners/thread227377.html
C++ не пойму в чем ошибка в классе
Всем привет, вот возник вопрос про ООП, написал два класса, один из которых унаследует другой, в обоих есть конструктор, но они отличаются интерфейсом, VC++ выдаешь ошибку, жалуется на конструктор подкласса, насколько известно нельзя конструкторы объявлять виртуальными, тогда как решить эту проблему? //--------------------------------------------------------------------------- #pragma hdrstop...
Исправьте ошибки в программе( C++ ) C++
#include <iostream> #include <string.h> #include <stdio.h> #include <math.h> #include <clocale> using namespace std; int main() { setlocale(LC_ALL,"Russian");
C++ Ошибка - ссылка на неразрешенный внешний символ http://www.cyberforum.ru/cpp-beginners/thread227352.html
Написал две программы подряд. В них выскакивает одна и та же ошибка 1>------ Построение начато: проект: 4, Конфигурация: Debug Win32 ------ 1>Компоновка... 1>MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup 1>G:\4\Debug\4.exe : fatal error LNK1120: 1 неразрешенных внешних элементов 1>Журнал построения был сохранен в...
C++ Класс "Array": массив не выводится Проблема: не выводится мой массив. В чем у меня ошибки? class array { public: array(int number); ~array(); void print(); private: int *arr; подробнее

Показать сообщение отдельно
TokiTori
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 4
13.01.2011, 12:21  [ТС]     Быстрая сортировка содержимого больших файлов
Ухтыжйооожыыыык!!!!!111 Как все было тривиально: в циклах начинающхся на 23 и 28 строках забыл пересчитать ci и cj... неделя времени на это ушла:
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
#include <iostream>
 
using namespace std;
 
FILE *f;
 
void doSort(long start, long end) {
    if (start>=end)
        return;
    long i=start, j=end;
    long cur=i-(i-j)/2;
    char ci,cj,ccur;
    while (i<j) {
        fseek(f,i,0);
        fread(&ci,sizeof(char),1,f);
        
        fseek(f,j,0);
        fread(&cj,sizeof(char),1,f);
        
        fseek(f,cur,0);
        fread(&ccur,sizeof(char),1,f);        
        
        while (i<cur && (ci-ccur<=0)) {
            i++;
            fseek(f,i,SEEK_SET);
            fread(&ci,sizeof(char),1,f);
        }
        while (j>cur && (ccur-cj<=0)) {
            j--;
            fseek(f,j,SEEK_SET);
            fread(&cj,sizeof(char),1,f);
        }
        
        if (i<j) {                 
            //заново читаем i-ый и j-ый символы
            fseek(f,i,0);
            fread(&ci,sizeof(char),1,f);
 
            fseek(f,j,0);
            fread(&cj,sizeof(char),1,f);
            
                
            //меняем j-ый символ на i-ый
            fseek(f,j,0);
            fwrite(&ci,sizeof(char),1,f);
            
            //меняем i-ый символ на j-ый            
            fseek(f,i,0);
            fwrite(&cj,sizeof(char),1,f);
 
            if (i==cur)
                cur=j;
            else if (j==cur)
                cur=i;
        }
    }
    doSort(start, cur);
    doSort(cur+1, end);
}
 
 
int main(int argc, char *argv[]){
    
    f = fopen("c:/1.txt", "rb+");
    if (f == 0) {
        cout<<"Can't open file";
        return 1;
    }
 
    fseek(f, 0, SEEK_END);
    long file_size = ftell(f);
    cout<<"Sorting file: "<<file_size<<" bytes."<<"\n";
 
    doSort(0,file_size-1);
    fclose(f);
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 9 часов 32 минуты
Тему можно считать закрытой.
 
Текущее время: 19:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru