Доброго времени суток. Пишу программу на Delphi по работе с ведомостью. Не могу сообразить как раскидать невязку. Текст программы прикладываю. program vedomost; uses Math; const rad = Pi/180.0; // для перевода из радианов в градусы n=5; // кол-во углов var i:integer; Ugol_izm: Array[1..n] of extended; // массив измеренных углов Ugol_isp: Array[1..n] of extended; // массив исправленных углов Direk_ugol: Array[1..n] of extended; // массив дирекционных углов L: Array[1..n] of extended; //массив горизонтальных проложений deg,min:integer; // градусы и минуты ugol:integer;// расчетный угол sum_izm: extended;//сумма измеренных углов nev:extended; // вспомогательная переменная для нахождения невязки Procedure MinDeg(var x:extended); //процедура перехода к градусам и минутам var g,m:integer; grad: extended; begin grad:=RadToDeg(x); Writeln(grad); g:=trunc(grad); m:=trunc(frac(grad)*60); Writeln(g,'°', m,''+#39); end; begin begin ugol:=180*(n-2); //расчет теоретической суммы углов end; Writeln('Теоретическая сумма внутренних углов равна: ', ugol); Writeln('Введите измеренные углы (градусы и минуты через пробел)'); for i := 1 to n do begin Readln(deg,min); Writeln(deg, '°', min,''+#39 ); Ugol_izm:=(deg + min/60)*rad; end; sum_izm:=0; for i := 1 to n do {подсчет измеренных углов} begin sum_izm:=sum_izm+Ugol_izm; end; MinDeg(sum_izm); nev:=sum_izm-DegToRad(ugol);// нахождение невязки Writeln('Невязка'); MinDeg(nev); // разбрасывание невязки Writeln('Введите дирекционный угол'); Readln(deg,min); for i := 2 to n do begin Direk_ugol[1]:=(deg + min/60)*rad; Direk_ugol:= Direk_ugol[i-1]+Pi-Ugol_isp; if Direk_ugol>=2*Pi then Direk_ugol:=Direk_ugol-2*Pi; Writeln('Дирекционный угол',RadToDeg(Direk_ugol)); end; Read; end.
Так там ведь простейшие формулы. Или что-то Вам в них непонятно? Другое дело, что всё это проще сделать в "Excel".
Формулы простецкие, не спорю) невязка равномерно разбрасывается на все углы, либо по коротким проложениям, а как это условие на delphi положить понятия не имею)