(*~\Глагол\Отделы\ЧисАн\32\к\Ряд\ВводВывод\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                                 ОТДЕЛ крВектВВ;
(*============================================================================*
 * НАЗНАЧЕНИЕ: (ввод из файла)/(вывод в файл) и печать на экран векторов
 *============================================================================*)

ИСПОЛЬЗУЕТ 
 дМатем   ИЗ "..\..\..\..\..\..\Отделы\ЧисАн\32\д\",
(*
 дВектор  ИЗ "..\..\..\..\..\..\Отделы\ЧисАн\32\д\",
*)
крМатем   ИЗ "..\..\..\..\..\..\Отделы\ЧисАн\32\к\Ряд\",  
крВектор  ИЗ "..\..\..\..\..\..\Отделы\ЧисАн\32\к\Ряд\",

  ИзФайла ИЗ "..\..\..\..\..\..\Отделы\Обмен\ВводВывод\",
   ВФайл  ИЗ "..\..\..\..\..\..\Отделы\Обмен\ВводВывод\",
  НаЭкран ИЗ "..\..\..\..\..\..\Отделы\Обмен\ВводВывод\";

ВИД
(*
                     Вид- = РЯД ИЗ крМатем.Вид; (* вектор  из комплексных чисел в виде ряда *)
  Доступ- = ДОСТУП К Вид;              (* доступ к вектору из комплексных чисел в виде ряда *)
*)
        (* вид Вещ - это удвоенная точность 32 разряда (6 десятичных знаков)  *)
  Вещ = дМатем.Вещ;                   (* локально *)


(*=рррррррррррррррррррррррр= реализация задач =рррррррррррррррррррррррррррррр=*)


(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА ОткрытиеФайла-(имяФайла-:ЦЕПЬ):ИзФайла.ДкПотоку;
(*
 * Цель:  если возможно, то открыть поток на чтение, иначе АВОСТ
 *----------------------------------------------------------------------------*
 * До:    <имяФайла> - имя считываемого файла
 * Ответ: открытый на чтение поток (ДОСТУП к Потоку)
 *)
ПЕР
       потокД:ИзФайла.ДкПотоку;
УКАЗ
       потокД:=ИзФайла.Открыть(имяФайла);
  ЕСЛИ
       потокД = ПУСТО
  ТО
(*
    НаЭкран.ОшибкаВпотоке-(имяФайла,' " не найден.^');
*)
    НаЭкран.ВсяЦепь('^Файл "');
    НаЭкран.ВсяЦепь(имяФайла);
    НаЭкран.ВсяЦепь('" не найден.^');
    СТОП(1) 
  КОН;
          потокД.цВидЗнаков:=ИзФайла.знУни;
  ВОЗВРАТ потокД
КОН ОткрытиеФайла;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА изФайла-(ч:ИзФайла.ДкПотоку):крМатем.Доступ;
(* Цель: прочитать из потока размер комплексного вектора (столбцов)
 *       создать комплексный вектор и заполнить его данными из этого потока
 *----------------------------------------------------------------------------*
 * До:    <ч> - открытый на чтение поток
 * Ответ: созданный комплексный вектор   *)
ПЕР
  j,столбцов:ЦЕЛ;
  дT,мT:Вещ;
          кВыхВекД:крМатем.Доступ;
УКАЗ
                   столбцов:=ИзФайла.Цел32(ч);
  СОЗДАТЬ(кВыхВекД,столбцов);                (* вектор-столбец из рядов [0,1] *)

  ОТ j:=0 ДО столбцов-1 ВЫП
                         дT:=ИзФайла.Вещ32(ч);
                         мT:=ИзФайла.Вещ32(ч);
    крМатем.алгебрВид(дT,мT,кВыхВекД[j])
  КОН;
  ВОЗВРАТ кВыхВекД
КОН изФайла;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА наЭкран-(описание-:ЦЕПЬ; кВект-:крМатем.Вид);
(* Цель:  вывести на экран содержимое комплексного вектора <кВект> 
 *----------------------------------------------------------------------------*
 * До:    <описание> - описатель печати элемента комплексного вектора (см. Текст.отд)
 *        <кВект>    - комплексный вектор-строка из рядов [0,1]               *)
ПЕР
  j:ЦЕЛ;
УКАЗ
  ОТ j:=0 ДО РАЗМЕР(кВект)-1 ВЫП
      НаЭкран.Вещ4числа(описание,кВект[j][0],кВект[j][1],0,0)
  КОН; 
      НаЭкран.ВсяЦепь('^')  (* перевод строки *)
КОН наЭкран;
 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА наЭкранДвух-(описание-:ЦЕПЬ; кВек1-,кВек2-:крВект.Вид);
(* Цель:  вывести на экран содержимое двух векторов <кВек1>,<кВек2> = матрицы <М> 
 *----------------------------------------------------------------------------*
 * До:  <описание> - описатель печати элементов векторов (см. Текст.отд),
 *                   например <описание>="^ %12.5f; %12.5f     %12.5f; %12.5f"
 *      <кВек1>,
 *      <кВек2>    - пара векторов из комплексных рядов [0,1]                 *)
ПЕР
  i:ЦЕЛ;
УКАЗ
  ОТ i:=0 ДО РАЗМЕР(кВек1)-1 ВЫП
    НаЭкран.Вещ4числа(описание,кВек1[i][0],кВек1[i][1],
                               кВек2[i][0],кВек2[i][1])
  КОН
КОН наЭкранДвух;
 
КОН крВектВВ.
