Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
xGSx
1

Сортировка слиянием в файле

05.05.2010, 01:24. Просмотров 480. Ответов 0
Метки нет (Все метки)

Требуется в заданном бинарнике отсортировать структуры по "части" name методом слияния. Я никак не могу понять алгоритм этого метода... Вот функция, которая должна сортировать файл, но пока она лишь делит его пополам. Насколько я понял, она должна быть рекурсивной, но вот какие именно данные подавать ей на вход и как с ними работать - в этом я разобраться не могу. В атаче вся программа и "база", с которой она должна работать. Помогите пожалуйста.
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
struct catalog
{ char del; char shifr[10], name[20], fio[15],izdat[15];
int year;char nalic[4];} catal, tmp,tmp1,tmp2;
FILE *f; char filename[]="catalog.dat", filename_tmp[]="tmp.dat";
FILE *t;
char zvez (int i)
{if (i==1) return '*';else return ' ';}
 
int num=24; // Количество структур в файле, задаю явно, для начала
void sort(int num)
 {  int shag=1, schet=0, c1=0, c2=0; catalog cat1,cat2; clrscr();
FILE *file, *f1, *f2;              int zap1, zap2;
 
    int flag=0;
    f1=fopen ("f1.dat","wb");
    f2=fopen ("f2.dat","wb");
    schet=0;
    file=fopen(filename,"rb");
    rewind (file);
    // razbivaem nash fajl na dva
    while ( fread(&tmp, sizeof(catalog), 1, file) )
        {
        if (flag==0)
            {
            fwrite (&tmp, sizeof(catalog), 1, f1); schet++; c1++;
            if (schet==shag) {flag=1; schet=0;}
            }
        else
            {
            fwrite (&tmp, sizeof(catalog), 1, f2); schet++; c2++;
            if (schet==shag) {flag=0; schet=0;}
            }
        }
    fclose (f1); fclose (f2); fclose (file);
 
    f1=fopen ("f1.dat","rb"); rewind(f1);
    f2=fopen ("f2.dat","rb"); rewind(f2);
    file=fopen(filename,"wb"); rewind(file);
    while ( (fread(&tmp1, sizeof(catalog), 1, f1))&&(fread(&tmp2, sizeof(catalog), 1, f2)) )
      {
      if (strcmp(tmp1.name,tmp2.name)<0)
      fwrite (&tmp1,sizeof(catalog),1,file);
      else
      fwrite (&tmp2,sizeof(catalog),1,file);
      }
 
  getch();
 }
Вложения
Тип файла: rar Z71V13.rar (2.7 Кб, 18 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2010, 01:24
Ответы с готовыми решениями:

Сортировка слиянием в текстовом файле
Произвести сортировку файла, в каждой строке которого расположен 1 элемент (число). Результат...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким...

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая...

2 сортировки: пирамидальная сортировка и сортировка слиянием
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2010, 01:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Шейкерная сортировка + сортировка слиянием
вот часть когда,которая выполняет шейкерную сортировку : для символьного и целочисленого массива ....

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

Сортировка слиянием
Нужно сделать счётчик который будет считать количество приравниваний в программе. Я что-то никак не...

сортировка слиянием
Доброго времени суток, помогите пожалуйста с сортировкой слиянием... дело в том что нужно сделать...


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

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

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