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

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

17.06.2013, 08:03. Показов 852. Ответов 4
Метки нет (Все метки)

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

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
  crt;
 
var
  f1, f2, f3: file of integer;
  t, n, i, j, a, b, c: integer;
  nf: string;
 
begin
 clrscr;
  repeat
    writeln('klips');
    writeln('');
    writeln('1.Zadanie');
    writeln('2.Vibrat imya kone4nogo faila;');
    writeln('3.Ukazat koli4estvo 4isel v na4alnih failax');
    writeln('4.Slit faili v odin i uporyado4it 4isla');
    writeln('5.exit');
    readln(t);
    clrscr;
    if t = 1 then begin  writeln('Zadanie: Slit dva 4islennix faila v odin tretii uporyado4ennii fail');
    writeln('');
    end;
 
    if t = 2 then
    begin
      writeln('Viberite imya vihodnogo faila');
      clrscr;
      randomize;
      assign(f1, 'Name1.txt');
      rewrite(f1);
      assign(f2, 'Name2.txt');
      rewrite(f2);
 
      write('name of file:');
      readln(nf);
      nf := nf + '.txt';
      assign(f3, nf);
      rewrite(f3);
    writeln('');
    writeln('');
    end;
    if t = 3 then
    begin
      writeln('Ukajite koli4estvo 4isel sperva v pervom a zatem vo vtorom faile');
      write('skolko 4isel vvesti v pervii fail n=');
      readln(n);
      writeln('Soderjanie faila Name1:');
      a := 1;
      for i := 1 to n do
      begin
        a := a + random(5);
        write(f1, a);
        write(a:4);
      end;
      writeln;
      writeln;
      write('skolko 4isel vvesti vo vtoroi fail n=');
      readln(n);
      writeln('soderjanie faila Name2:');
      a := 1;
      for i := 1 to n do
      begin
        a := a + random(5);
        write(f2, a);
        write(a:4);
      end;
      writeln;
      writeln;
    end;
    if t = 4 then
    begin
      writeln('Faili uspeshno svedeni i uporyado4enni po vozrastaniu. Rezultat: ');
      reset(f1);
      reset(f2);
      i := 0;j := 0;
 
      seek(f1, 0);
      read(f1, a);
      seek(f2, 0);
      read(f2, b);
      if a < b then write(f3, a) else write(f3, b);
 
      reset(f3);
      while(i < filesize(f1)) or (j < filesize(f2)) do
      begin
        if (i < filesize(f1)) and (j < filesize(f2)) then
        begin
          seek(f1, i);
          read(f1, a);
          seek(f2, j);
          read(f2, b);
          if a < b then
          begin
            seek(f3, filesize(f3) - 1);
            read(f3, c);
            if a <> c then
            begin
              seek(f3, filesize(f3));
              write(f3, a);
            end;
            inc(i);
          end
          else
          begin
            seek(f3, filesize(f3) - 1);
            read(f3, c);
            if b <> c then
            begin
              seek(f3, filesize(f3));
              write(f3, b);
            end;
            inc(j);
          end;
        end
        else if j > filesize(f2) - 1 then
        begin
          seek(f1, i);
          read(f1, a);
          seek(f3, filesize(f3) - 1);
          read(f3, c);
          if a <> c then
          begin
            seek(f3, filesize(f3));
            write(f3, a);
          end;
          inc(i);
        end
        else if i > filesize(f1) - 1 then
        begin
          seek(f2, j);
          read(f2, b);
          seek(f3, filesize(f3) - 1);
          read(f3, c);
          if b <> c then
          begin
            seek(f3, filesize(f3));
            write(f3, b);
          end;
          inc(j);
        end;
      end;
      close(f1);
      close(f2);
      reset(f3);
      writeln('sliyanie etih failov:');
      while not eof(f3) do
      begin
        read(f3, a);
        write(a:4);
      end;
      close(f3);
      writeln('');
      writeln('');
    end;
  until t = 5
end.

ПРОГРАММА НАПИСАННА НА ПАСКАЛЕ

Зарание прошу прощения за все что может не устроить уважаемых Кодеров Спасибо за внимание
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2013, 08:03
Ответы с готовыми решениями:

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

Даны два файла F1, F2. Сформировать третий файл F
Даны два файла F1, F2. Сформировать третий файл F, в который сначала записать все элементы файла...

Даны два файла. Получить третий, содержащий поочередно строки исходных двух файлов
Imports System.IO Что не так? Второй файл вообще не читает, да и выводит не так даже по первому...

Даны два файла А и В (тип элементов одинаковый). Поменять местами содержимое этих файлов.
Даны два файла А и В (тип элементов одинаковый). Поменять местами содержимое этих файлов.

4
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
17.06.2013, 10:03 2
Цитата Сообщение от klips Посмотреть сообщение
как исправить код, чтобы при открытии любого из 3х файлов мы видели нормальную кодировку?
Создать текстовые, а не типизированные файлы, но в угоду прихоти замаешься с сортировкой.
1
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 3
18.06.2013, 08:24  [ТС] 3
Спасибо за ответ. Я попытался типы файлов, но теперь все время взрывается, вы не могли бы написать правильный код?
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
18.06.2013, 08:33 4
В условии написано
Цитата Сообщение от klips Посмотреть сообщение
Даны два численных файла.
Это на 99% задача на типизированные файлы. А это Ваше
Цитата Сообщение от klips Посмотреть сообщение
Когда мы открываем один из текстовых файликов, мы вместо чисел видим квадратики,
просто глупая прихоть. Типизированные файлы читают программой, а не в Блокноте.
1
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 3
18.06.2013, 08:37  [ТС] 5
Ага, понял. Большое вам человеческое спасибо=)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2013, 08:37
Помогаю со студенческими работами здесь

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

Даны два файла. Переписать в третий файл только те слова, которые есть и в первом и во втором файле.
Помогите создать программу: Даны два текстовых файла, содержащих некоторый текст. Переписать в...

Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы первого и второго файлов
Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы первого и...

Даны два неубывающих массива. Выполнить объединение данных в третий, также неубывающий массив
Примечания: - все программы с массивами должны содержать отдельные подпрограммы для ввода (и,...

Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла
Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго...

Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла
Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго...


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

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

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