Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
#1

Метод сортировки в файле - C++

12.10.2009, 17:48. Просмотров 1112. Ответов 16
Метки нет (Все метки)

Значит так,помогите сделать такое : есть файл(*.txt) в середине есть 1000 строчек
(допустим цифри ,int) так вод надо не считивая все 1000 чисел в память (тоисть работать в середине в файле)
сортировать все числа (по зросту или по упадку как хотите)
Нужен сам код и немного к нему коментов =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2009, 17:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Метод сортировки в файле (C++):

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода...

Сравнительный анализ Методов Сортировки(метод прямого выбора,метод слиянием,сортировка подсчетом)
Ввод данных: 1. с клавиатуры, 2.с файла (C:\Users\'NAME'\Desktop), 3.случайным...

Изменить метод "быстрой сортировки" на метод "сортировки вставками"
Как изменить метод "интеративной быстрой сортировки" на метод "сортировки...

Алгоритм сортировки в файле
Никак не могу придумать как отсортировать массив значений. Есть файл, в котором...

Метод сортировки
Доброго времени суток господа, имеется программа которая сортирует...

Метод пузырьковой сортировки
Подскажите как сделать сортировку одномерного массива методом пузырька по...

16
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
12.10.2009, 21:20  [ТС] #2
Народ хтото поможет??
0
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
12.10.2009, 22:36 #3
Почему такое странное и загадочное условие ?
0
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
12.10.2009, 22:38  [ТС] #4
ну вот проще:
Есть файл в ньом 1000 чисел.Нада отсортировать весь файл по зростанию (путь будет по зростнию) не загружая все 1000 чисел в память
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
12.10.2009, 22:43 #5
Un.Rewa,
Значит так,помогите сделать такое ...
... Народ хтото поможет?? ...

А не то что? :fear:
0
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
12.10.2009, 22:44  [ТС] #6
я плакать буду
0
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
13.10.2009, 09:09 #7
Ну хорошо.
Загружаем 500 чисел в память.
Сортируем.
Пишем в файл1.
Загружаем еще 500 чисел в память.
Сортируем.
Пишем в файл2.
Потом эти два файла соединяем в файл3, используя метод сортировки слияем двух файлов файл1 и файл2.
Такой ?

Я просто не очень пойму как можно сортировать числа, если их в память не загружать
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
13.10.2009, 09:14 #8
я понял задание так: получить фаил с неизменёнными первыми 1000 символами и с отсортированными последующими.
угадал?
0
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
13.10.2009, 10:28  [ТС] #9
Ладно ишо раз Есть файл в ньом 1000 чисел їх нада отсортовать в файл №2 но незагружая при етом все цифри в память а работать с ними в файле (ну типо берем 2 числа сравниваєм і пишем в файл№2 хотя алгоритм недоделан і хз как он должен роботать дальше))))

Добавлено через 12 минут
Цитата Сообщение от odip Посмотреть сообщение
Ну хорошо.
Загружаем 500 чисел в память.
Сортируем.
Пишем в файл1.
Загружаем еще 500 чисел в память.
Сортируем.
Пишем в файл2.
Потом эти два файла соединяем в файл3, используя метод сортировки слияем двух файлов файл1 и файл2.
Такой ?

Я просто не очень пойму как можно сортировать числа, если их в память не загружать
ну вот идея неплохая яно лутше брать по 10 чисел ну теперь нужен код
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
13.10.2009, 10:34 #10
Un.Rewa,
ну теперь нужен код

Смотри в подпись TanT
0
denver
1610 / 279 / 5
Регистрация: 19.09.2009
Сообщений: 701
13.10.2009, 10:38 #11
Ладно, еще раз. Есть файл в нем 1000 чисел их надо отсортировать в файл №2, но не загружая при этом все цифры в память, а работать с ними в файле (ну типа, берем два числа сравниваем и пишем в файл №2) хотя алгоритм не доделан и хз как он должен работать дальше...
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
13.10.2009, 10:49 #12
Я вот что предлагаю:
1. ищём в исходном файле минимальный элемент (а лучше сразу ещё подсчитывая их количество)
2. пишём в новый фаил (с учётом найденного количества элементов)
3. уменьшаем счётчик всех элементов на найденное количество (как я понял начальное количество элементов известно)
4. ищем следующий "минимальный" элемент, то есть следующий элемент, который был бы минимальным при отсутствии элементов найденных в п. 1. до него
5. повторяем п2 - п4 пока не выберем все элементы из исходного файла
6. фанфары и овации
0
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
13.10.2009, 21:08  [ТС] #13
=) напишите пожалуйста хтота код))
0
KillKenny
0 / 0 / 0
Регистрация: 28.09.2015
15.10.2009, 11:03 #14
можно ли обойтись без создания второго файла? есть ли способ менять две строчки текстового файла местами?
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
15.10.2009, 11:20 #15
Цитата Сообщение от KillKenny Посмотреть сообщение
можно ли обойтись без создания второго файла? есть ли способ менять две строчки текстового файла местами?
да,
1. считать данные из файла, сохраняя их в буфере,
2. обработать данные из файла,
3. переписать исходный фаил.
0
KillKenny
0 / 0 / 0
Регистрация: 28.09.2015
17.10.2009, 17:47 #16
почему не работает следующая функция?

после close() open() почему-то указатель остается в конце файла. помогите пожалуйста...


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
void Farm::sortFile(char* ch1, char* ch2)
    {   
        ifstream f;
        f.open(ch1);
        int fcount;
        f>>fcount;
        if (!ch2)
        {
            ch2="files/temp.txt"; //??
        }
        ofstream fo;
        fo.open(ch2);
        fo<<fcount<<"\n";
        int scount=0;
        Plant* P1=new Plant;
        Plant* P2=new Plant;    
        Plant* P3=new Plant;    
        P1->scan_f(f);
        while(!f.eof())
        {
            P2->scan_f(f);
            if ((*P1)>(*P2))
            {
                (*P1)=(*P2);
            }
        }
//      f.seekg(0,ios::beg);
        f.close();
        f.open(ch1);
//      ifstream f(ch1);
        int test;
        f>>test;
        while(!f.eof())
        {
            P2->scan_f(f);
            if (*P2 == *P1)
            {
                scount++;           
                P1->print_f(fo);
            }
        }
        while (scount<fcount)
        {
            f.close();
            f.open(ch1);
            f>>fcount;
            P2->scan_f(f);
            while(!((*P2)>(*P1)))
            {
                P2->scan_f(f);
            }
            while(!f.eof())
            {
                P3->scan_f(f);
                if (((*P2)>(*P3)) && ((*P3)>(*P1)))
                {
                    *P2=*P3;
                }
            }
            f.close();
            f.open(ch1);
            f>>fcount;
            while(!f.eof())
            {
                P3->scan_f(f);
                if (*P3 == *P2)
                {
                    scount++;           
                    P1->print_f(fo);
                }
            }
            *P1=*P2;
        }
        delete P1;
        delete P2;
        delete P3;
        f.close();
        fo.close(); 
    }
0
Un.Rewa
0 / 0 / 0
Регистрация: 28.09.2009
Сообщений: 13
21.10.2009, 15:33  [ТС] #17
хм)
0
21.10.2009, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2009, 15:33
Привет! Вот еще темы с решениями:

Метод линейной сортировки
Помогите решить задачу. Даны n эл-ов упорядочить массив по возрастанию. ...

Метод сортировки обменом
Используя метод сортировки обменами,получить из вектора Х размерности 1 вектор...

Метод поразрядной сортировки.
Помогите решить задачу, для её решения необходимо реализовать метод поразрядной...

Шаблонный метод сортировки
Имеется шаблонный класс список. И несколько классов. Возможно ли сделать...


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

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

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