Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 53) Ответы по файлам


Информационный Канал Subscribe.Ru

 
Школа программирования

Программирование с нуля - это совсем просто!

53) Ответы по файлам

40. В файл пишем - из файла загружаем.

  procedure TFMainForm.BSaveToFileClick(Sender: TObject);
  var FOut:TextFile;
      i:integer;
  begin
     AssignFile(FOut, ' sample.txt ' ); // Указываем файл
     Rewrite(FOut); // Открываем файл для записи
     for i:=1 to Memo_InputFile.Lines.Count-1 do // Начинаем считывать
  строки из Мемо
         if Memo_InputFile.Lines.Strings[i]<> ' ' then //Если строка не "пустая"
  то
             Writeln(FOut,Memo_InputFile.Lines.Strings[i]); // Добавляем её к
  файлу
     CloseFile(FOut); // Закрываем файл после того как его заполнили
  end;

  procedure TFMainForm.BLoadFromFileClick(Sender: TObject);
  var FInp:TextFile;
      STmp:String;
  begin
    LB_OutputFile.Clear; // Очишаем LisBox
    AssignFile(FInp, ' sample.txt ' ); // Указываем файл
    Reset(FInp); // Открываем файл для чтения
    while not(Eof(FInp)) do // Считываем данные из файла пока он не
  закончен
     begin
      readln(FInp,STmp); // Считываем одну строчку из файла во
  временную переменную
      LB_OutputFile.Items.Append(STmp); // Заносим эту строку в ListBox
     end;
    CloseFile(FInp); // Закрываем файл после того как считали из него
  все строки
  end;
Артем

Далее.

  var Ff:TextFile;
      s:String;
  var i:Integer;

  procedure TForm1.Button1Click(Sender: TObject);
  begin
  AssignFile(Ff, ' c:\1\projects\txt\N40.txt ' ); //Связать имя Ff с
  названием файла
  Rewrite(Ff); //Открываем файл на запись
  //Memo1.Lines.SaveToFile( ' c:\1\projects\txt\N40.txt ' ); //Сохранить все
  разом
  for i:=0 to Memo1.Lines.Count-1 do
          begin
          s:=Memo1.Lines[i];
          WriteLn(Ff,s); //Записать строку в файл
          end;
  CloseFile(Ff); //Закрыть файл
  end;

  procedure TForm1.Button2Click(Sender: TObject);
  begin
  AssignFile(Ff, ' c:\1\projects\txt\N40.txt ' );
  Reset(Ff); //Открыть файл на чтение
  while not eof(Ff) do //Пока не достигнут конец
  файла
          begin
          Readln(Ff,s);
          ListBox1.Items.Add(s);
          end;

  CloseFile(Ff);

  end;
Надежда

Далее.

  var
    Form1: TForm1;
    Fo,Fi :textfile;
    var s : string;
    i : integer;

  procedure TForm1.Button1Click(Sender: TObject);
  begin
  assignfile(Fo, ' d:\xxx\strochka.txt ' );
  rewrite(Fo); //создаем файл
  for i:=0 to memo1.Lines.Count-1 do
  writeln(Fo,memo1.Lines[i]); //записываем текст в него из МЕМО
  closefile(fo); //и закрываем
  end;
  procedure TForm1.Button2Click(Sender: TObject);
  begin
   assignfile(Fo, ' d:\xxx\strochka.txt ' );//открываем файл с текстом МЕМО
   reset(Fo); while not eof(Fo) do begin
   readln(Fo,s);
   listbox1.items.Add(s); end; //считываем в список
   closefile(Fo); //закрываем
     assignfile(Fi, ' d:\xxx\strochka1.txt ' );
  rewrite(Fi); //еще файл создаем
    for i:=0 to listbox1.items.Count-1 do
  writeln(Fi,listbox1.items[i]); //туда пишем то что в списке
  closefile(fi);//и тоже закрываем
  end;
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  form1.Color:=3932436;
  end;
  Краски подбирал при помощи своей подбирательной
  программы,знали бы Вы,Сергей,во что она сейчас превратилась.И ни
  одного бага.
Алексей

Предыдущую версию я посмотрел, очень даже симпатично! По ее мотивам еще сделала Лена, у нее дизайн очень оригинальный. Опубликую их, как базовый курс закончим. И других уже немало накопилось, народное творчество :)

Так что присылайте! Надо бы ее еще перевести на английский, комментарии добавить, и забросить на sourceforge.net. Как первый наш (ваш :) международный проект :)

          var Fo: TextFile;
              S: string;
   
  procedure TForm1.Button1Click(Sender: TObject);
  begin // создаем файл
  S:= Memo1.Text; //текст
   AssignFile( Fo, ' C:\Documents and Settings\Alex\Desktop\Проба\ 001.txt '
  );
   Rewrite( Fo );
   WriteLn(Fo, S);
   CloseFile( Fo );
  end;
   
  procedure TForm1.Button2Click(Sender: TObject);
  begin
  AssignFile( Fo, ' C:\Documents and Settings\Alex\Desktop\Проба\ 001.txt ' );
    Reset( Fo );
    while not eof( Fo ) do
    begin
   
      Readln(Fo,S);
      ListBox1.Items.Add( S ); //Добавляем строку в список,
      //но работает только в латинской раскладке
      //в кириллице - полная абракадабра.
     end;
   
    CloseFile(Fo);
   
  end;
Алексей

Может, для шрифта надо явно указывать русифицированный набор символов - в подсвойстве Charset свойства Font списка можно выбрать значение RUSSIAN_CHARSET вместо по умолчанию DEFAULT_CHARSET.

Далее.

  procedure TForm1.Button1Click(Sender: TObject);
        var f:TextFile;
            s:string;
            i,n:integer;
  begin
            n:=Memo1.Lines.Count;
            AssignFile(F, ' c:\temp\text.txt ' );
            Rewrite(F);
              for i:= 0 to n do
               begin
                     s:=Memo1.Lines[i];
                     WriteLn(F,s);
               end;
            CloseFile(F);
  end;
  procedure TForm1.Button2Click(Sender: TObject);
            var f:TextFile;
            s:string;
            i,n:integer;
  begin
            AssignFile(F, ' c:\temp\text.txt ' );
            Reset(F);
              while not eof(F) do
               begin
                     Readln(F,s);
                     ListBox1.Items.Add(s);
               end;
            CloseFile(F);
     end;
  end.
  Артем

Далее.

   // записать в файл
  procedure TForm1.Button1Click(Sender: TObject);
   var Fl: TextFile;
       s:string;
       i:integer;
  begin
   AssignFile(Fl, ' D:\проекты delphi\файл\40.txt ' ); // путь к файлу для
  записи
   rewrite(Fl); //открыть файл для записи
    // текст для записи в файл
     for i:=0 to Memo1.Lines.Count do // от нулевой строки до последней
       begin
       s:=Memo1.Lines[i]; // каждая строка текста
       Writeln(Fl,s); // записывается в строку файла
       end;
    CloseFile(Fl); // закрыть файл

  end;

  // чтение из файла
  procedure TForm1.Button3Click(Sender: TObject);
  var Fl:TextFile;
      s:string;

  begin

    AssignFile(Fl, ' D:\проекты delphi\файл\40.txt ' ); // путь к файлу для
  чтения
    Reset(Fl);
       while not eof (Fl) do // пока не обнаружен конец файла
          begin
           Readln(Fl,s); // читается каждая строка файла
           ListBox1.Items.Add(s); // и записывается в строку списка
          end;
        CloseFile(Fl); // закрыть файл
  end;

   //
  procedure TForm1.FormActivate(Sender: TObject);
  begin
  Memo1.Lines.Clear; // удалить с поля Memo надпись "Memo1"
  end;

Лена

41. Сортировка двух файлов.

  var SortedList:TStringList;
  procedure CreateFile(FileName:string);
  // Генерируем начальные значения файла FileName
  var i,count:integer;
      FOut:TextFile;
  begin
      AssignFile(FOut,FileName);// Указываем на файл FileName
      Rewrite(FOut); // Открываем его для записи
      count:=Random(901)+100; // Задаем количество елементов в
  файле от 100 до 1000
      for i:=1 to count do Writeln(FOut,IntToStr(Random(900)+100)); //
  Записываем сами элементы в файл
      CloseFile(FOut); // Закрываем файл

  end;

  procedure SaveToFile(ASortedList:TStringList;FileName:string);
  // процедура сохраняет список ASortedList в файл FileName
  var Fout:TextFile;
      i:integer;
  begin
     AssignFile(Fout,FileName); // Указываем на файл FileName
     Rewrite(Fout); // Открываем его для записи
     for i:=0 to ASortedList.Count-1 do // перебираем все элементы списка
          Writeln(FOut,ASortedList.Strings[i]); // Записываем их в файл
     CloseFile(Fout); // Закрываем файл
  end;

  procedure Sorting(var ASortList:TStringList;FileName1,FileName2:string);
  // Процедура Окончательной сортировки выходного списка ASortList
  содержащего
  // в себе элементы файлов FileName1,FileName2
  var SL_First,SL_Second:TStringList;
      i,j:integer;

  procedure LoadFromFileSorted(var SL_Loaded:TStringList; FileName:string);
  // Процедура загружает список SL_Loaded из файла FileName и
  сортирует его
  var FInp:TextFile;
      STmp:string;

  begin
    AssignFile(FInp,FileName);// Указывем на файл FileName
    Reset(FInp); // Открываем его для чтения
    while not(Eof(FInp)) do // Пока не кончился файл
       begin
          Readln(FInp,STmp); // Считываем элемент файла во временную
  переменную STmp
          SL_Loaded.Append(STmp); //Добавляем однустроку к списку
       end;
    SL_Loaded.Sort; // Сортируем созданные список
    SaveToFile(SL_Loaded, ' sort_ ' +FileName);
    CloseFile(FInp); // Закрываем файл
  end;

  begin
      SL_First:=TStringList.Create; // Создаем первый список в нем будут
  хранится данные из FileName1
      SL_Second:=TStringList.Create;// Создаем первый список в нем
  будут хранится данные из FileName2

      LoadFromFileSorted(SL_First,FileName1); // Загружаем и сортируем
  значения первого списка
      LoadFromFileSorted(SL_Second,FileName2);// Загружаем и
  сортируем значения второго списка

      // Начинаем объединять оба списка, т.к. они оба отсортированы то
  можно сразу же сортировать при объединении
      i:=0;j:=0;// Устанавливаем начала списков
      while (i<SL_First.Count) and (j<SL_Second.Count) do // Пока не
  пересмотрим элементы до конца одного из списков делать
         if (SL_First.Strings[i]<=SL_Second.Strings[j]) then
            // элемент первого списка больше второго тогда
             begin
              ASortList.Append(SL_First.Strings[i]);// к обединеному списку
  добовляем элемент первого списка
              i:=i+1; // берем следующий элемент
             end
                else // Иначе
             begin
              ASortList.Append(SL_Second.Strings[j]);// к обединеному списку
  добовляем элемент второго списка
              j:=j+1; // берем следующий элемент
             end;

      if i=SL_First.Count then // Если закончились елементы первого
  списка то
         while j<SL_Second.Count do // Пока не закончились элементы
  второго списка делать
             begin
              ASortList.Append(SL_Second.Strings[j]);// к обединеному списку
  добовляем элемент второго списка
              j:=j+1; // берем следующий элемент
             end
               else // Иначе
         while i<SL_First.Count do // Пока не закончились элементы
  первого списка делать
             begin
              ASortList.Append(SL_First.Strings[i]);// к обединеному списку
  добовляем элемент первого списка
              i:=i+1; // берем следующий элемент
             end;

      SL_Second.Free; // Уничтожаем второй список
      SL_First.Free; // Уничтожаем первый список
  end;

  begin

      Randomize; // запускаем генератор псевдослучайных чисел
      CreateFile( ' Input1.txt ' ); // Создаем файл с первым списком
      CreateFile( ' Input2.txt ' ); // Создаем файл со вторым списком

      SortedList:=TStringList.Create; // Создаем Список в котором будет
  храниться отсортированное объединение обойх списков из файлов
      Sorting(SortedList, ' Input1.txt ' , ' Input2.txt ' ); // загружаем в него данные
  из файлов и сортируем
      SaveToFile(SortedList, ' output.txt ' ); // Сохраняем список в файл
      SortedList.Free; // Уничтожаем список
  end.
Я в основном привык до всего доходить своей головой, но если есть возможность научиться то стараюсь не упустить. но на апервом месте стоит самообразование потому как доходя до чего то своей головой можно по пути найти много интересных и оригинальных решений. Мне интересен не столько сам процес написания программы и отладки (хотя это сомо по себе занятие очень увлекательное и можно просидеть за машиной много времени ламая голову что-же не так и отчего программа не хочет работать так как мне надо). Сколько её решение - алгоритм работы. Так с накоплением опыта в программировании переходиш к более инженерному решению (собирая программу из уже отлаженных и проверенных блоков, используя какую-то одну технологию пр конструировании программы), а ведь возможно и решение этой же задачи каким-то другим более оригинальным способом который будет намного компактней, а если программа компактна в ней меньше ошибок и она быстрее работает (хотя это не всегда так и приходиться искать "золотую середину" между качеством и скоростью). Именно поэтому меня очень интересуют многи темы связанные между собой и программироанием начиная с вопросов связанных с конструирование баз данных и кончая графовыми решениями задачь (и т.д. и т.п. можно продолжать былобы очень долго). Главно не бояться нового и задавать вопросы ЧТО, КАК и ГДЕ. Хотя их может быть очень много.
Артем

Артем совершенно прав, думать, как сделать ту или иную задачу, очень полезно! Нарабатывать запас алгоритмических подходов. Тренироваться лучше двумя путями:

a) на задачах Олимпиад по программированию, вот мой любимый ресурс Пермских олимпиад http://comp-science.hut.ru/olimp.html. Просто просматриваете все задачи, и для каждой думаете, как бы вы ее запрограммировали. Интересные задачи - придуманные вами способы решения - присылайте, будем их в рассылке размещать.

б) Точно также, только на реальных продуктах. Берете любую программу и думаете, как бы вы сделали точно-такую же (лучше лучше). Хорошо в этом плане тренироваться на играх, в них обычно самые сложные алгоритмы.

На реальных продуктах более жизненно, конечно, потому что олимпийские задачки хороши в плане развития алгоритмического мышления, но на практике часто бывают такие задачи, которые никакому олимпиадоведу не снились :)

  var
    Form1: TForm1;
  var f1,f2,f3:TextFile;
  var s:String;

  function dice (M:Integer;N:Integer):Integer; //Случайное целое от M до N
  var r:Integer;
  begin
  if N>M then r:=random(N-M+1)+M else r:=0;
  Result:=r;
  end;

  procedure TForm1.Button1Click(Sender: TObject);
  var i1:Integer;
  begin
  AssignFile(f1, ' c:\1\projects\txt\f1.txt ' );
  Rewrite(f1);
  i1:=dice(100,1000);
  for i1:=0 to i1 do
          begin
          s:=IntToStr(dice(100,999));
          WriteLn(f1,s);
          end;
  CloseFile(f1);
  Button1.Enabled:=False;
  end;

  procedure TForm1.Button2Click(Sender: TObject);
  var i2:Integer;
  begin
  AssignFile(f2, ' c:\1\projects\txt\f2.txt ' );
  Rewrite(f2);
  i2:=dice(100,1000);
  for i2:=0 to i2 do
          begin
          s:=IntToStr(dice(100,999));
          WriteLn(f2,s);
          end;
  CloseFile(f2);
  Button2.Enabled:=False;
  end;

  procedure TForm1.Button3Click(Sender: TObject);
  begin
  ListBox1.Sorted:=True; //Режим сортировки включен
  AssignFile(f1, ' c:\1\projects\txt\f1.txt ' );
  Reset(f1);
  while not eof(f1) do
          begin
          Readln(f1,s);
          ListBox1.Items.Add(s);
          end;
  AssignFile(f2, ' c:\1\projects\txt\f2.txt ' );
  Reset(f2);
  while not eof(f2) do
          begin
          Readln(f2,s);
          ListBox1.Items.Add(s);
          end;
  Button3.Enabled:=False;
  end;

  procedure TForm1.Button4Click(Sender: TObject);
  var i:Integer;
  begin
  AssignFile(f3, ' c:\1\projects\txt\f3.txt ' );
  Rewrite(f3);
  for i:=0 to ListBox1.Items.Count-1 do
          begin
          s:=ListBox1.Items.Strings[i];
          WriteLn(f3,s);
          end;
  CloseFile(f3);
  Button4.Enabled:=False;
  end;
Надежда

Далее.

    var F1,F2,F3:TextFile;
        S1,S2,S3:String;
        C1,C2,C3,A:Integer;
   
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    //Создаем первый файл
   AssignFile( F1, ' C:\Documents and Settings\Alex\Desktop\Проба\ 001.txt '
  );
   Rewrite( F1 );
   C1:= 100+Random(901); //число строк от 100 до 1000(100+900)
    for C1 := 1 to C1 do
      begin
      S1 := IntToStr(100+Random(900));//случ. знач.от 100 до 999
      Writeln(F1,S1); //записываем файл
      end;
      CloseFile( F1 ); //закрываем файл
           //Создаем второй файл аналогично первому
   AssignFile( F2, ' C:\Documents and Settings\Alex\Desktop\Проба\ 002.txt '
  );
   Rewrite( F2 );
   C2:= 100+Random(900);
    for C1 := 1 to C2 do
      begin
      S2 := IntToStr(100+Random(900));
   
      Writeln(F2,S2);
      end;
   
   CloseFile( F2 );
  end;
   
  procedure TForm1.Button2Click(Sender: TObject);
  begin
         //читаем файлы
  AssignFile( F1, ' C:\Documents and Settings\Alex\Desktop\Проба\ 001.txt ' );
    Reset( F1 ); //открываем файл
    while not eof( F1 ) do
    begin
      Readln(F1,S1); //читаем файл
      ListBox1.Items.Add( S1 ); //Добавляем строку в список
    end;
     CloseFile(F1); //закрываем файл
   

    AssignFile( F2, ' C:\Documents and Settings\Alex\Desktop\Проба\ 002.txt '
  );
    Reset( F2 );
    while not eof( F2 ) do
    begin
      Readln(F2,S2);
      ListBox1.Items.Add( S2 ); //Добавляем строку в список
  end;
     CloseFile(F2); //закрываем файл
     ListBox1.Sorted:= True; //включаем сортировку в списке
     C3:= ListBox1.Count-1;//число строк в списке
   
       // создаем новый файл
     AssignFile( F3, ' C:\Documents and Settings\Alex\Desktop\Проба\
  003.txt ' );
   Rewrite( F3 );
      for A := 0 to C3 do //здесь С3 заменить на(ListBox1.Count-1)
       begin
     S3:= ListBox1.Items.Strings[A];// данные из списка 1
     //переводим в строки
     ListBox2.Items.Add( S3 ); //записываем строки в список 2
     Writeln(F3,S3); //записываем файл
     end;
     CloseFile( F3 ); //закрываем файл
  end;
Алексей

Вот здесь кстати (да и в других примерах) можно взять все описания переменных

    var F1,F2,F3:TextFile;
        S1,S2,S3:String;
        C1,C2,C3,A:Integer;

и перетащить их внутрь описания класса. ПРосто слово var убираем, и все.

type TForm1 = class(TForm)
...
public
    F1,F2,F3:TextFile;
        S1,S2,S3:String;
        C1,C2,C3,A:Integer;
end;

Далее.

  Если бы не эта фраза "Можно в консоли делать."-я бы 41-ю за
  полчаса сделал,с помощью listbox.А так-часа 4-5 с помощью
  F1,программы Артема для 27 задания,но в основном,не
  поверите,-при помощи интуиции,а как еще можно иначе догадаться
  uses classes добавить?

  program Project41;
  {$APPTYPE CONSOLE}
  uses
    classes,
    SysUtils;
  var str : Tstringlist;
     Fo : Textfile;
     s : string;
     i : integer;
  begin
  randomize;
  str:=Tstringlist.Create;//создаем временный список
  {интересно,что если его не создавать то какая-то ерунда получается}
  assignfile(Fo, ' d:\xxx\file1.txt ' );//создаем первый файл
  rewrite(Fo);
   for i:=1 to random(5)+5 do begin
   s := inttostr(random(900)+100);
   writeln(Fo,s); str.Add(s);end;//заполняем его и заодно временный
  список
   closefile(Fo);
     assignfile(Fo, ' d:\xxx\file2.txt ' );
  rewrite(Fo);
   for i:=1 to random(5)+5 do begin
   s := inttostr(random(900)+100);
   writeln(Fo,s);str.Add(s); end; // то же самое
   closefile(Fo);
     str.Sorted:=true;// сортируем временный список
     assignfile(Fo, ' d:\xxx\file1&2sorted.txt ' );
  rewrite(Fo);//создаем третий файл
     for i:=0 to str.Count-1 do begin
     s:=str.Strings[i];
     writeln(Fo,s);end;//и записываем туда отсортированный список
  closefile(Fo);
     str.Free;//удаляем временный список,хотя я так думаю что это не
  обязательно,правильно?
    end.
Алексей

Да, в консоли без Tstringlist сложно было бы. Но мы Tstringlist еще не проходили :)

Впрочем, по этому примеру можно легко разобраться, даже не зная, что это такое :)

  var F,F1,F2:TextFile; // файлы для записи
  var i,j,b,n1,n2,s:integer; // счетчики цикла, буфер обмена
                             // количество чисел, строка для записи
  var d:array[1..202] of integer; // массив чисел, для сортировки и записи
  в общий файл

  begin
  randomize; // генератор случайных чисел
   n1:=random(91)+10; // случайное количество чисел для записи в
  первый файл
   n2:=random(91)+10; // случайное количество чисел для записи во
  второй файл
   writeln( ' n1= ' ,n1, ' ' , ' n2= ' ,n2); // вывод количества записанных чисел на
  экран

   AssignFile(F1, ' D:\проекты delphi\41к\1.txt ' ); // путь к первому файлу
   Rewrite(F1); // открыть файл на запись

   writeln(F1, ' количество чисел: ' ,IntToStr(n1)); // первая строка файла -
  количество записанных чисел

   for i:=1 to n1 do // от 1 до n1 раз найти случайное число
     begin
       s:=random(91)+10; // случайное число
       writeln(f1,IntToStr(s)); // записывается в файл
       d[i]:=s; // и в массив чисел
     end;
   CloseFile(F1); // закрыть файл

   AssignFile(F2, ' D:\проекты delphi\41к\2.txt ' ); // путь ко второму файлу
   Rewrite(F2); // открыть файл на запись

   writeln(F2, ' количество чисел: ' ,IntToStr(n2)); // первая строка файла -
  количество записанных чисел

   for i:=n1+1 to n1+n2 do // номер первого числа второго файла
  равен
                                       // номеру , следующему за последним первого
  файла
     begin
       s:=random(91)+10; // случайное число
       writeln(F2,IntToStr(s)); // записывается в файл
       d[i]:=s; // и в массив чисел
     end;
   CloseFile(F2); // закрыть файл

  for i:=1 to (n1+n2)-1 do //сортировка массива чисел
    begin
       for j:=i+1 to (n1+n2) do
         begin
           if d[j]<d[i] then
             begin
               b:=d[i];
               d[i]:=d[j];
               d[j]:=b;

             end;
          end;
       end;

   AssignFile(F, ' D:\проекты delphi\41к\1+2.txt ' ); // путь к общему файлу
   Rewrite(F); // открыть файл для записи
   writeln(F, ' количество чисел: ' ,IntToStr(n1+n2));
   for i:=1 to (n1+n2) do // отсортированный массив построчно
     begin
       writeln(F,IntToStr(d[i])); // заносится в файл
     end;
    CloseFile(F); // закрыть файл

  readln;
  end.
Лена

И в заключение объектный вариант Андрея:

  #include <iostream>
  #include <fstream>
  #include <stdlib.h>
  #include <conio.h>
  using namespace std;
  //---------------------------------------------------------------------
  /* 01.02.05 */
  //--------------------------------------------------------------------
  int main()
  {
     randomize();
     cout<<"Открываем первый файл..."<<endl;
     cout<<"Вводим значения"<<endl;
     cout<<"Нажмите любую клавишу для продолжения работы..."<<endl;
     getch();
     int nIndex1, nIndex2; // Номера строк в файлах 1 и 2.
     ofstream oFile1("File1.txt", ios::app);
     if( oFile1.is_open())
     {
        int nStrings[1000]; // Строки.
        nIndex1=(rand()%1001)+100; // Случайно выбираем количество
  строк.
        for( short nI=0; nI<=nIndex1; nI++)
        {
           nStrings[nI]=(rand()%1000)+100; // Каждой строке - случайное
  значение.
           oFile1<<nStrings[nI]<<"\n"; // Запись в файл.
           cout<<nI<<": "<<nStrings[nI]<<endl;
        }
        oFile1.close();
     }
     else
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     //------------------------------------------------------------------
     cout<<"Открываем второй файл..."<<endl;
     cout<<"Вводим значения"<<endl;
     cout<<"Нажмите любую клавишу для продолжения работы..."<<endl;
     getch();
     ofstream oFile2("File2.txt", ios::app);
     if( oFile2.is_open())
     {
        int nStrings[1000]; // Строки.
        nIndex2=(rand()%1001)+100; // Случайно выбираем количество
  строк.
        for( short nI=0; nI<=nIndex2; nI++)
        {
           nStrings[nI]=(rand()%1000)+100; // Каждой строке - случайное
  значение.
           oFile2<<nStrings[nI]<<"\n"; // Запись в файл.
           cout<<nI<<": "<<nStrings[nI]<<endl;
        }
        oFile2.close();
     }
     else
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     //------------------------------------------------------------------
     char cFile1Content[5000]; // Буфер вывода из первого файла.
     ifstream iFile1("File1.txt"); // Поток вывода из первого файла.
     if( !iFile1)
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     cout<<"Создаём результирующий файл..."<<endl;
     ofstream oFileResult1("FileResult.txt", ios::app);
     if( !oFileResult1)
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     cout<<"Нажмите любую клавишу для продолжения работы..."<<endl;
     getch();
     while( !iFile1.eof()) // Пока файл не закончится...
     {
        iFile1.getline(cFile1Content, 5000); // считываем строки.
        oFileResult1<<cFile1Content<<endl; // Запись в файл.
        cout<<cFile1Content<<endl;
     }
     iFile1.close();
     oFileResult1.close();
     //------------------------------------------------------------------
     char cFile2Content[5000]; // Буфер вывода из второго файла.
     ifstream iFile2("File2.txt"); // Поток вывода из второго файла.
     if( !iFile2)
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     ofstream oFileResult2("FileResult.txt", ios::app);
     if( !oFileResult2)
     {
        cout<<"Невозможно открыть файл!"<<endl;
        cout<<"Нажмите любую клавишу для выхода...";
        getch();
        return 1;
     }
     cout<<"Нажмите любую клавишу для продолжения работы..."<<endl;
     getch();
     while( !iFile2.eof()) // Пока файл не закончится...
     {
        iFile2.getline(cFile2Content, 5000); // считываем строки.
        oFileResult2<<cFile2Content<<endl; // Запись в файл.
        cout<<cFile2Content<<endl;
     }
     iFile2.close();
     oFileResult2.close();
     cout<<"Нажмите любую клавишу для выхода...";
     getch();
     return 0;
  }
Андрей


(c) 2004-2005 Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
http://russianenterprisesolutions.com/sbo/

 

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.prognull
Отписаться

В избранное