0 / 0 / 2
Регистрация: 18.09.2010
Сообщений: 19
1

Слияние элементов файлов F1 и F2 в файл F3

10.10.2010, 11:59. Показов 2156. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано два файла F1 и F2, каждый с которых содержит числа, благоустроенные за ростом. Разработать программу, которая выполнит слияние элементов файлов F1 и F2 в файл F3 так, что его элементы также будут благоустроены за ростом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2010, 11:59
Ответы с готовыми решениями:

Слияние 2х файлов в третий файл
Составить программу сцепления двух файлов с созданием третьего файла Т.е. первый файл записывается...

Даны два численных файла. Выполнить слияние этих файлов. Сохранить упорядоченно по возрастанию в третий файл исключая повторения
Добрый день. Прблемка следущая: я написал программку для слияния двух файлов в третий((((Даны два...

Слияние двух отсортированных по убыванию значений элементов файлов F1 и F2
Разработать программу слияния двух отсортированных по убыванию значений элементов файлов F1 и F2....

Файл: Слияние файлов
Есть два текста, в которых записано последовательности положительных целых чисел по возрастанию....

3
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.10.2010, 19:10 2
Pascal
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
program Project1;
 
const
  Fn1 = 'file1.txt';
  Fn2 = 'file2.txt';
  Fn3 = 'file3.txt';
  N = 100;
var
  F1, F2, F3 : Text;
  i, j, k, Num : Integer;
  Arr : array[1..N] of Integer;
begin
  (*Связываем файловые переменные с файлами.*)
  Assign(F1, Fn1);
  Assign(F2, Fn2);
  Assign(F3, Fn3);
 
  (*Записываем в первые 2 файла числа по возрастанию.*)
 
  (*В первый файл записываем чётные числа: 0..10.*)
  Rewrite(F1);
  i := 0;
  while i <= 10 do begin
    (*Перед записью очередного числа выполняем переход на следующую строку.
    Это действие не выполняем только для самого первого числа.*)
    if i > 0 then Writeln(F1);
    Write(F1, i);
    i := i + 2;
  end;
  (*Записываем в файл содержимое файлового буфера. Это действие
  выполняется только для текстовых файлов.*)
  Flush(F1);
 
  (*Во второй файл записываем нечётные числа: 1..9.*)
  Rewrite(F2);
  i := 1;
  while i <= 10 do begin
    if i > 1 then Writeln(F2);
    Write(F2, i);
    i := i + 2;
  end;
  Flush(F2);
 
  (*Открываем первый файл, читаем из него числа и записываем их в массив Arr.*)
  Reset(F1);
  i := 0;
  while not Eof(F1) do begin
    i := i + 1;
    Read(F1, Arr[i]);
  end;
 
  (*Теперь выполняем слияние на массиве. Для этого откроем второй файл.
  Будем последовательно читать из него числа и искать позицию в массиве,
  куда можно вставить очередное прочитанное число. Далее, вставляем
  число в массив. При этом, если требуется, будем сдвигать остальные числа
  массива на одну позицию вправо - чтобы освободить место для вставки.*)
 
  Reset(F2);
  while not Eof(F2) do begin
    (*Читаем очередное число из второго файла.*)
    Readln(F2, Num);
    (*Ищем позицию в массиве, на которой расположено число большее или равное
    тому, которое прочитано из файла. Если такое число найдётся в массиве, тогда
    j будет содержать индекс этого числа. Если такое число
    не найдётся, тогда j окажется на 1 больше, чем i. - Т. е. j будет указывать
    на место, расположенное после последнего значимого элемента массива.*)
    j := 1;
    while (j <= i) and (Arr[j] < Num) do begin
      j := j + 1;
    end;
    if j > i then begin
      (*Вставляем прочитанное из файла число справа от последнего значимого
      элемента массива.*)
      Arr[j] := Num;
    end else begin
      (*Сдвигаем элементы массива, расположенные в позициях i..j
      на 1 позицию вправо.*)
      for k := i downto j do begin
        Arr[k + 1] := Arr[k];
      end;
      (*Вставляем на освободившуюся позицию прочитанное из файла число.*)
      Arr[j] := Num;
    end;
    (*Т. к. мы добавили в массив новое число, то количество значимых элементов
    массива увеличилось на единицу.*)
    i := i + 1;
  end;
 
  (*Теперь записываем элементы массива в третий файл.*)
  Rewrite(F3);
  for j := 1 to i do begin
    if j > 1 then Writeln(F3);
    Write(F3, Arr[j]);
  end;
  (*Так как далее следует закрытие файлов, то Flush() в данном случае
  выполнять не обязательно.*)
  Flush(F3);
 
  Close(F1);
  Close(F2);
  Close(F3);
 
  Writeln('Задача выполнена. Результаты записаны в файлы:');
  Writeln(Fn1, ', ', Fn2, ', ', Fn3);
 
  Readln;
end.
1
Почетный модератор
64279 / 47578 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
10.10.2010, 19:33 3
Mawrat, Сделай копию в Тему Сортировки, а то у нас там только слияние массивов.
0
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.10.2010, 19:37 4
Хорошо, добавлю. А, Юр, у меня в разделе Pascal нет расширенного доступа - я не могу ту тему на изменение открыть...
---
Права уже есть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2010, 19:37
Помогаю со студенческими работами здесь

Выполнить слияние двух рассортированных бинарных файлов в третий упорядоченный файл
Доброго времени суток уважаемые форумчане!!!! У меня есть следующая задача - Выполнить слияние...

Слияние двух отсортированных по убыванию значений элементов файлов F1 и F2
Разработать программу слияния двух отсортированных по убыванию значений элементов файлов F1 и F2....

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

Слияние файлов.
В файле f элементы упорядочены по возрастанию.требуется слить эти файлы в один файл,также...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru