Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Ведомость вычисления координат точек теодолитного хода

Тема в разделе "Общие вопросы", создана пользователем Vanesko, 11 мар 2017.

  1. Vanesko

    Регистрация:
    11 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    Доброго времени суток. Пишу программу на 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.
     
    #1
  2. В.Шуфотинский

    В.Шуфотинский Модератор
    Команда форума Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    17.305
    Симпатии:
    4.955
    Если не секрет, кому это, кроме студентов 1 курса, понадобится? Или Вы сам первокурсник?
     
    #2
  3. Vanesko

    Регистрация:
    11 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    Да, можно и так сказать
     
    #3
  4. В.Шуфотинский

    В.Шуфотинский Модератор
    Команда форума Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    17.305
    Симпатии:
    4.955
    Но в обработке ведомости разобрались?
     
    #4
  5. Vanesko

    Регистрация:
    11 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    в обработке разобрался, вопрос встал как на программу невязку переложить
     
    #5
  6. В.Шуфотинский

    В.Шуфотинский Модератор
    Команда форума Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    17.305
    Симпатии:
    4.955
    Так там ведь простейшие формулы. Или что-то Вам в них непонятно?
    Другое дело, что всё это проще сделать в "Excel".
     
    #6
  7. Vanesko

    Регистрация:
    11 мар 2017
    Сообщения:
    4
    Симпатии:
    0
    Формулы простецкие, не спорю) невязка равномерно разбрасывается на все углы, либо по коротким проложениям, а как это условие на delphi положить понятия не имею)
     
    #7
  8. В.Шуфотинский

    В.Шуфотинский Модератор
    Команда форума Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    17.305
    Симпатии:
    4.955
    Ждите тех, кто программирует в delphi.
     
    #8

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление