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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать число, которое будет состоять только из четных восьмеричных цифр исходного http://www.cyberforum.ru/cpp-beginners/thread125555.html
Задание: Дано целое неотрицательное число. Сформировать другое число, которое будет состоять только из четных восьмеричных цифр исходного числа. Заранее спасибо!
C++ Из массива А(n) (n<=15) напечатать первые три отрицательных элемента Из массива А={3.6,-3.2,9.3,4.2,-2.1,6.3,7.8,-8.9}; (n<=15) напечатать первые три отрицательных элемента http://www.cyberforum.ru/cpp-beginners/thread125546.html
Протабулировать значение функции C++
написать на С.Протобулировать значение функции f(x,y)=x+корень 3 степени из 3+y^2, при х изменяющемся от 0 до 1 с шагом 0.1 и у, изменяющемся от 0 до 1 с шагом 0.2.
C++ Деление многочленов. Нахождение остатка
Добрый вечер! Вот собственно код. Код: #include <stdio.h> int *remainder(int *a, int &len1, int *b, int len2); int *remainder(int *p1, int &s1, int *p2, int s2){ int *ptr1=p1; int del; int i;
C++ Указать индексы всех положительных чисел http://www.cyberforum.ru/cpp-beginners/thread125524.html
Вобщем нужна помощь в составлении программы :) Дан массив вещественных случайных чисел в диапазоне от 3 до 20 указать индексы всех положительных чисел :) Добавлено через 12 часов 55 минут хм, странно) либо никто не хочет браться, либо не знает как хД контрольный пример что прилагался к заданию увы не работает , так что мне остается надеяться только на вас.
C++ Полином Подскажите пожалуйста, как мне считать полином с консоли (то есть какую структуру данных использовать?), чтобы я могла задавать значения переменных и по считанному полиному вычислялось его значение. подробнее

Показать сообщение отдельно
xGSx
Сообщений: n/a

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

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