Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 23:21   #1
wOOp
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 23
По умолчанию Обработка файлов

Даны три файла вещественных чисел с именами S1, S2 и S3, элементы которых упорядочены по убыванию. Объединить эти файлы в новый файл с именем S4, элементы которого также будут упорядочены по убыванию.

Помогите пжл с данной задачкой =)
Заранее спс
Pascal
wOOp вне форума Ответить с цитированием
Старый 03.04.2012, 15:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

ОЧЕНЬ топорное решение
Код:
uses
  CRT;

type
  fr = file of real;

var
  s1, s2, s3, s4: fr;
  a, b, c: real;
  i:integer;

procedure generate(var f: fr; k: integer);
var
  i: integer;
  a, m: real;
begin
  rewrite(f);
  while (k = 0)
    do
    k := random(100) + 5;
  a := random * 100 - 50;
  for i := 1 to k do
  begin
    m := random * 10 + 1;
    a := a - m;
    write(f, a);
  end;
  close(f);
end;

procedure print(var f: fr);
var
  a: real;
begin
  close(f);
  reset(f);
  while not eof(f) do
  begin
    read(f, a);
    write(a: 5: 3, ' ');
  end;
  writeln;
  writeln;
  close(f);
  reset(f);
end;

const
min=-1000000000;

begin
  assign(s1, 's1.txt');
  assign(s2, 's2.txt');
  assign(s3, 's3.txt');
  assign(s4, 's4.txt');

  //randomize;
  //generate(s1, 4);
  //generate(s2, 5);
  //generate(s3, 6);

  reset(s1);
  reset(s2);
  reset(s3);
  rewrite(s4);

  //print(s1);
  //print(s2);
  //print(s3);

  read(s1, a);
  read(s2, b);
  read(s3, c);
  while (not eof(s1)) and (not eof(s2)) and (not eof(s3))
    do
  begin
    if (a > b) and (a > c) then
    begin
      write(s4, a);
      read(s1, a);
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        read(s2, b);
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          read(s3, c);
        end;
  end;
  while (not eof(s1)) and (not eof(s2))
    do
  begin
    if (a > b) and (a > c) then
    begin
      write(s4, a);
      read(s1, a);
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        read(s2, b);
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          c:=min;
        end;
  end;
  while (not eof(s2)) and (not eof(s3))
    do
  begin
   if (a > b) and (a > c) then
    begin
      write(s4, a);
      a:=min;
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        read(s2, b);
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          read(s3, c);
        end;
  end;
  while (not eof(s1)) and (not eof(s3))
    do
  begin
   if (a > b) and (a > c) then
    begin
      write(s4, a);
      read(s1, a);
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        b:=min;
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          read(s3, c);
        end;
  end;
  while (not eof(s1))
    do
  begin
    if (a > b) and (a > c) then
    begin
      write(s4, a);
      read(s1, a);
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        b:=min;
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          c:=min;
        end;
  end;
  while (not eof(s2))
    do
  begin
   if (a > b) and (a > c) then
    begin
      write(s4, a);
      a:=min;
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        read(s2, b);
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          c:=min;
        end;
  end;
  while (not eof(s3))
    do
  begin
    if (a > b) and (a > c) then
    begin
      write(s4, a);
      a:=min;
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        b:=min;
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          read(s3, c);
        end;
  end;
  for i:=1 to 3 do
  if (a > b) and (a > c) then
    begin
      write(s4, a);
      a:=min;
    end
    else
      if (b > a) and (b > c) then
      begin
        write(s4, b);
        b:=min;
      end
      else
        if (c > a) and (c > b) then
        begin
          write(s4, c);
          c:=min;
        end;

  //print(s4);
  //readln;

  close(s1);
  close(s2);
  close(s3);
  close(s4);
end.
Проверьте, так как я писал в Дельфи и чуть изменил получившийся код, чтобы он работал в Паскале (но самого Паскаля у меня нет).
Процедуры генерайт и принт закомментированы (они требовались для отладки).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка файлов Pepsik Помощь студентам 1 10.07.2011 21:35
Обработка файлов WennY Общие вопросы Delphi 2 30.04.2011 15:10
С++. Обработка файлов teach Помощь студентам 5 02.04.2011 16:41
Обработка файлов Си++ modulrev Помощь студентам 22 19.02.2009 18:53