Показать сообщение отдельно
  #2  
Старый 14.12.2007, 04:05
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
program FileOfInteger;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

const
  DATA_FILE_NAME = 'datafile.int';
  MULT_FILE_NAME = 'multfile.int';

//------------------------------------------------------------------------------
// Вывод на экран строки
//------------------------------------------------------------------------------
procedure WriteStr(S: String);
var
  Dst: Array [0..255] Of Char;
begin
  AnsiToOem(PChar(S), Dst);
  Writeln(Dst);
end;

//------------------------------------------------------------------------------
// Форматирование значения для вывода на экран
//------------------------------------------------------------------------------
function FmtVal(X:Integer): String;
begin
  Result := Format('%6d', [X]);
end;

var
  NumCount : Integer;
  F1, F2   : File of Integer;
  X, Y     : Integer;
  i        : Integer;
begin
  WriteStr('Введите число элементов (0 - выход):');
  Readln(NumCount);
  if NumCount = 0 then Halt;

  Randomize;

  // Записываем числа в файл ---------------------------------------------------
  // Открыть файл для записи
  Writeln;
  WriteStr('Генерация и запись в файл:');
  AssignFile(F1, DATA_FILE_NAME);
  Rewrite(F1);
  // Сгенерировать и записать числа
  for i := 0 to NumCount - 1 do begin
    X := Random(10);    // Сгенерировать
    Writeln(FmtVal(X)); // Показать число на экране

    Write(F1, X);       // Записать в файл
  end;
  // Закрыть файл
  CloseFile(F1);

  Writeln;
  WriteStr('Суммирование и запись в файл:');

  // Читаем числа из получившегося файла, перемножаем и пишем в другой ---------
  // Открываем первый файл на чтение, второй на запись
  AssignFile(F1, DATA_FILE_NAME);
  Reset(F1);
  AssignFile(F2, MULT_FILE_NAME);
  Rewrite(F2);
  Read(F1, X);          // Прочитать первое число
  for i := 1 to NumCount - 1 do begin
    Read(F1, Y);        // Прочитать следующее число
    Write(FmtVal(X) + ' * ' + FmtVal(Y) + ' = ');

    X := X * Y;         // Перемножить
    Writeln(FmtVal(X)); // Отобразить произведение на экране

    Write(F2, X);       // Записать произведение в файл

    X := Y;             // Сохраняем число для следующего шага
  end;
  // Закрыть файлы
  CloseFile(F1);
  CloseFile(F2);

  Writeln;
  WriteStr('Нажмите Enter.');
  Readln;
end.
Ответить с цитированием