Найти - Пользователи
Полная версия: Решение геодезической задачи в Python
Начало » Python для новичков » Решение геодезической задачи в Python
1 2
alexhyd18
Всем добрый день.
Мне (я чайник в программировании) поставлена задача сработать программу уравнивания нивелирного хода. Образец находится здесь.
Нужно извлечь с текстового файла превышения точек (название точки и значение превышения через пробел, точность измерения до 0.5 мм), выполнить расчёты и вывести итоговые данные в другой текстовый файл с сохранением. Всё бы ничего, если не пункты 3-4)) Ввод длины хода, как понимаю, проще с клавиатуры.
Желателен итог для Python 2.7.
Надеюсь на помощь, заранее спасибо!
PEHDOM
Зря надеетесь, никто не будет за вас писать программу. Вот если у вас во время написания появяться вопросы\затруднения тогда велкам.
вот вам для затравки простой пример как открыть файл и считать с него построчно информацию
 f = open('sample.txt')
for line in f:
    print(line)
alexhyd18
PEHDOM
Зря надеетесь, никто не будет за вас писать программу.

Я не так написал, перефразирую))
Есть получаемое число, которое является целым, либо дробным (есть случай только с получением значения 1.5, 7.5, 12.5 и так далее). И существует целый перечень чисел (как положительных, так и отрицательных, но не в этом суть). Вопрос состоит в том, что нужно это получаемое число по возможности равномерно разнести по перечню других чисел. Причём целыми числами. К примеру, величина получилась 8.5, и нужно разнести для девяти чисел - для семи получится “поправка” единичка, в одной - полтора (одна остаётся ни с чем). Или если величина 12, а перечень чисел равен семи - то (допустим) для пяти чисел из перечня поправка будет равна двум, а для остальных - единичка.
Как это сделать в питоне? И как сконструировать распределение из первого примера?
FishHook
Чё?
alexhyd18
FishHook
Чё?
Ещё короче))
Берётся число Х (не вводится, рассчитывается; оно либо целое, либо с дробной частью в .5). Надо разложить его на N слагаемых, поравномернее (а изначально даётся каталог чисел, и здесь присутствуют два случая: когда слагаемых N достаточно, чтоб распределить число X по списку; когда слагаемых N недостаточно). При этом все слагаемые, кроме, быть может, одного или нескольких, должны быть целыми. Слагаемые должны быть либо равны как минимум единице (а дальше 1.5, 2, 2.5 и так далее), либо нулю. Слагаемое 0.5 исключено.
PEHDOM
а еще попроще, что значит “поравномернее”?
Приведите простой банальный пример и формулу по котторой это нужно считать.
alexhyd18
PEHDOM
а еще попроще, что значит “поравномернее”? Приведите простой банальный пример и формулу по которой это нужно считать.
Хорошо, пример)
Выводится из расчёта число X (ну допустим, 9.5). Оно было рассчитано из перечня других чисел (слагаемые N - допустим, их 11).
Задача 1. Разложение числа X (то бишь, 9.5) на N (11)
То есть, полностью (из условий, которые я написал ранее) полностью на все слагаемые разложить это число не получится. В этот и состоит “равномерность” распределения числа X. То есть, простым языком, в данном случае потребуется на 11 слагаемых приходится 8 значений по единице и одна, равная 1.5 (остальным ничего не достаётся, ну или ноль). Ну и хаотично разбросать.
Задача 2. Разложение числа X (тут пусть будет 14) на N (8).
Здесь распределение коснётся для всех слагаемых. Вопрос - каким образом. Здесь потребуемся на 8 слагаемых приходится 6 значений по два и 2 значения по единичке. Вопрос разброса полученных значений тоже присутствует.
В этом суть моего вопроса. Формулы для решения такой задачи в математике и геодезии нет.
PEHDOM
уточнение в 2-й задаче обязательно должно быть 6 по 2 и 2 по 1 или можно например: одно значение 3, пять по 2 и два по 1?
alexhyd18
PEHDOM
уточнение в 2-й задаче обязательно должно быть 6 по 2 и 2 по 1 или можно например: одно значение 3, пять по 2 и два по 1?
Минимальная вариация.
PEHDOM
не уверен что получилось то что надо, учитывая постановку задачи…
 def expand(X,S,N):
    '''
    параметры:
    X - число которое нужно разложить на слагаемые
    S - сумма уже разложенных слагаемых
    N - колличество слагаемых на которое нужно разделить X-S
    Возвращает одно  целое слагаемое или 1.5 если X-S = 1.5
    '''
    delta = 1.5 # минимальное дробное значение
    rest = X-S
    if rest == (delta):
        return (delta)
    if N == 1:
        return (rest)
    elif N <=0:
        return 0
        #return None
    else:
       d = round(rest/N)
       return(d)
X=float(input('Enter X'))
N=int(input('Enter N'))
s= 0
lst= list()
n = N
while n > 0:
    d = expand(X,s,n)
    lst.append(d)
    s += d
    n -= 1
print('Веедено:', X, 'К-во слагаемых:', N, '\nПеречень слагаемых',lst, '\nСумма слагаемых:',s)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB