Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с файлами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Domin9es
Здравствуйте! Помогите с задачкой. Файлы а и в, компоненты которых являются целыми числами, упорядочены по неубыванию. Получить в файле с все числа файлов а и в без повторений. Файл с должен быть упорядочен по неубыванию. Файлы а и в заполняются вручную.
Гость
Тов. Domin9es.
Поиск, поиск и еще раз поиск! (Как завещал Великий Ленин и как учит Коммунистическая Партия!).
Ну, стопудово уже решалось! И не раз.
Ozzя
Пред. сообщ. - моё. Почему-то форум выплюнул. nea.gif
Domin9es
Перерыл поиск. Ненашел. mad.gif mad.gif mad.gif

Все из одного файла в другой!!!
Michael_Rybak
Что у тебя не получается с задачей?
Domin9es
Нашел сортировку, но с использованием готового файла. Помогите переделать на забивание значений вручную и удаление повторяющегося элемента

Var
   f1,f2,f3: text;
   max,min,i,t,j: integer;
   b: boolean;
   arr: array [1..100] of integer;
begin
i:=0;
{$I-}
 assign(f1,'C:\1.txt'); reset(f1);
 assign(f2,'C:\2.txt'); reset(f2);
 assign(f3,'C:\3.txt'); rewrite(f3);
  while not eof(f1) do begin
   readln(f1,arr[i]);
   inc(i);
  end;
  while not eof(f2) do begin
   readln(f2,arr[i]);
   inc(i);
  end;
    repeat
    b := True;
    for j := 1 to i-1 do
    if arr[j] > arr[j+1] then begin
    t := arr[j];
    arr[j] := arr[j+1];
    arr[j+1] := t;
    b := False
    end
    until b;
for j:=1 to i-1 do writeln(f3,arr[j]);
close(f3);
readln

volvo
Это тебя устраивает? То, что надо считать все в массив, потом отсортировать массив в памяти, и вернуть назад в файл? Обычно сортировка файла подразумевает нечто другое... Я бы порекомендовал посмотреть вот на этот вариант:

Сортировка последовательных файлов слиянием (для твоего случая придется чуть-чуть подкорректировать программу)
Domin9es
Я не пойму что делает эта программа. Она переписывает три первых введенных числа каждой строки. blink.gif

Проверьте эту программу

var a,b,c:file of integer;
    x,y,t:integer;
begin
  assign(a,'a.int');
  assign(b,'b.int');
  assign(c,'c.int');
  { Vvod znacheniy v faylu a,b -
  (esli ne nuzhno - mozhno udalit)}
  writeln('Vvedite chisla iz fayla A, v konce - 0');
  rewrite(a);
  readln(x);
  while x<>0 do
  begin
    write(a,x);
    readln(x);
  end;
  close(a);
  writeln('Vvedite chisla iz fayla B, v konce - 0');
  rewrite(b);
  readln(x);
  while x<>0 do
  begin
    write(b,x);
    readln(x);
  end;
  close(b);
  {Formirovanie fayla C};
  reset(a); reset(b); rewrite(c);
  read(a,x); read(b,y);
  if x<y then t:=x-1 else t:=y-1;
  while not(eof(a)) and not(eof(b)) do
  begin
    while (x<=t) and not(eof(a)) do read(a,x);
    while (y<=t) and not(eof(b)) do read(b,y);
    if (x<y) and (x>t) then
    begin
      t:=x;
      write(c,t);
    end
    else if (y>t) then
    begin
      t:=y;
      write(c,t);
    end;
  end;
  while not(eof(a)) do
  begin
    read(a,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(a);
  while not(eof(b)) do
  begin
    read(b,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(b); close(c);
  {Vivod sodergimogo fayla C na ekran
  (esli ne nuzhno - mozhno udalit)}
  writeln('Itogovyj fayl:');
  reset(c);
  while not(eof(c)) do
  begin
    read(c,x);
    write(x:5);
  end;
  readln;
end.



Удаляет неповторяющиеся элементы sad.gif
volvo
Цитата
Удаляет неповторяющиеся элементы
Например, какие? Что вводишь, покажи...
Domin9es
1ый файл 1 1 2 56 8 0
2ой файл 4 8 3 19 6 0

Выдает 1 2 4 8 19
volvo
Задание перечитай: файлы должны быть упорядочены по неубыванию... Для упорядоченных файлов этот алгоритм работает...
Гость
Я видимо недопонял задание, но неупорядочены по убыванию это про компоненты файлов?
Domin9es
Упорядочены по неубыванию- это как, по возрастанию? blink.gif
compiler
Цитата(Domin9es @ 27.12.2007 14:28) *
Упорядочены по неубыванию- это как, по возрастанию? blink.gif
не совсем, у иебя могут идти одинаковые элементы подряд, то есть
a b c d ,при условии a<=b<=c<=d, например 0 1 1 2
Domin9es
=>програма верна smile.gif smile.gif smile.gif
Domin9es
Объясните алгоритм!!! Само формирование файла с непонятно
 reset(a); reset(b); rewrite(c);
  read(a,x); read(b,y);
  if x<y then t:=x-1 else t:=y-1;
  while not(eof(a)) and not(eof(b)) do
  begin
    while (x<=t) and not(eof(a)) do read(a,x);
    while (y<=t) and not(eof(b)) do read(b,y);
    if (x<y) and (x>t) then
    begin
      t:=x;
      write(c,t);
    end
    else if (y>t) then
    begin
      t:=y;
      write(c,t);
    end;
  end;
  while not(eof(a)) do
  begin
    read(a,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(a);
  while not(eof(b)) do
  begin
    read(b,x);
    if x>t then
    begin
      t:=x;
      write(c,t);
    end;
  end;
  close(b); close(c);

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.