ідбудеться помилка формату даних. Рішення - введення в процедуру зчитування даних з клавіатури перевірку на помилку формату, і в разі виконання цієї умови ініціалізація повторення цієї процедури.  
 5) При розрахунку даних можуть відбутися невідомі помилки, внаслідок яких значення істинного і ортодроміческое курсу можуть прийняти значення - 2147483648 градусів і - 2147483648 хвилин. Рішення для ортодроміческое курсу - при його обчисленні замінити перехідні в нуль знаменники на 10-9. При розрахунку поправки також додано виняток для тангенса, якщо значення кута, від якого він береться, одно 90 градусам (значення тангенса 900 при розрахунку замінюється на значення тангенса 890). 
 ) Безпосередньо перед виведенням додана перевірка на перевищення значення в 360 градусів для вихідних даних. 
   6.4 Лістинг програми 
   Щоб проаналізувати роботу розроблюваної системи, вона була змодельована на платі National Instruments. Розробка програмного забезпечення здійснювалася на мові С #. 
   using System; 
  using System.Collections.Generic; 
  using System.Linq; System.Text; NationalInstruments.DAQmx; 
  ConsoleApplication 
  {Program 
  {
  //модуль ініціалізацііAnalogMultiChannelReader init ()//ініціалізація 0 і 1 каналів 
  {Reader; DS=DaqSystem.Local; [] PhChNames; AICh; T=new Task ( Вимірювання напруги ); i;=DS.GetPhysicalChannels (PhysicalChannelTypes.AI, PhysicalChannelAccess.External) ; (i=0; i lt; 4; i ++)=T.AIChannels.CreateVoltageChannel (PhChNames [i], Voltage mesure + i, AITerminalConfiguration.Nrse, - 10, 10, AIVoltageUnits.Volts);=new AnalogMultiChannelReader (T.Stream); Reader; 
 } 
  //модуль вводу даннихdouble SetAng (string s)//введення кутових вихідних даних 
  {gr, min, res;: 
  {. WriteLine ( Введіть + s) ;. Write ( Введіть градуси: t ); 
  gr=Convert.ToDouble (Console.ReadLine ()) ;. Write ( Введіть хвилини: t t );=Convert.ToDouble (Console.ReadLine ()) * (1/60.0);=gr + Math.Sign (gr) * min;// З урахуванням знакаres; 
 } (FormatException) 
  {. Write ( Помилка введення ); thisplace; 
 } 
 } 
				
				
				
				
			  //модуль ізмереніяvoid GetData (AnalogMultiChannelReader Reader, out double i, out double KU) 
  {// Зчитування даних з датчіковint amount=100; 
  const int Ki=2; int Kku=36; [] data, S; k, j;=new double [4];=new double [4]; (k=0; k lt ; amount; k ++) 
  {= Reader.ReadSingleSample (); (j=1; j lt; 4; j ++) [j] +=data [j]; 
 }=(S [1]/amount) * Ki; =(S [2]/amount) * Kku; 
 } 
  //модуль виведення результату 
  static void PrintAng (double ang)//Висновок кутових величин 
  {gr, min;=(int) ang;=(int) Math.Round ((ang - gr) * 60); (min == 60) 
  {++;=0; 
 }. WriteLine ( {0: d3} градусів і {1: d2} хвилин raquo ;, gr, min); 
 } 
  void PrintData (double i, double KU)//Виведення даних отриманих з датчиків 
  {. SetCursorPosition (1, 1) ;. SetCursorPosition (1, 3) ;. Write ( Крен пеленгатора (канал 1): t t ); (i) ;. SetCursorPosition (1, 4) ;. Write ( Курсовий кут (канал 2): t t ); (KU); 
 } 
  double GetA (double fi, double l, double d, double t)//Розрахунок азимута 
  {fir, lr, dr, res; B1, C, A1, A;=(fi/180) * Math.PI;=(l/180) * Math.PI;=(d/180) * Math.PI;=Math.Sin (t) * Math.Cos (dr);=Math.Cos (fir) * Math.Sin (dr) - Math.Sin (fir) * Math.Cos (dr ) * Math.Cos (t); (B1 == 0) B1=0.000000001;=Math.Atan (C/B1); ((B1 gt; 0) amp; (Math.Sin (t) gt; 0)) res=2 * Math.PI - A1; ((B1 lt; 0) amp; (Math.Sin (t) lt; 0)) res=Math.PI - A1; ((B1 lt; 0) amp; (Math.Sin (t) gt; 0)) res=Math.PI - A1; ((B1 gt; 0) amp; (Math.Sin (t) lt; 0)) res=-A1; res=1;=( res * 180)/Math.PI; res; 
 } double GetB (double Fi, double F_or, double L_or, double l)//Розрахунок колійного кута 
  {res, F_orr, Fir, L_orr, lr; _orr=(F_or/180) * Math.PI;=(Fi/180) * Math.PI; _orr=(L_or/180) * Math.PI;=(l/180) * Math.PI; ((Math.Sin (L_orr - lr) == 0) || (Math.Tan (L_orr - lr) == 0)) 
  {= Math.Atan (Math.Cos (Fir) * Math.Tan (F_orr) * (1/0.000000001) - Math.Sin (Fir) * (1/0.000000001)); 
 } 
  {= Math.Atan (Math.Cos (Fir) * Math.Tan...