вот только что в паскале, что даже в Си шарпе 0.1+0.1=0.2000001 , и если откинуть всё дальше 1 знака после точки, что 0.1+0.1 таки и дадут 0.2 и никак иначе.
Так ты ж говорил, что тебе 9 знаков надо? И что, получишь ты там свои 9 знаков?
ELITE пишет:
всёравно мне не понятнео, кто и главное зачем лобирует распространение Си и С++ ....и почему они упорно не хотят исправлять его недоработки , тормознутость и глючность....
Ты читать не умеешь или просто идиот? Я ж тебе писал, что это не С, это стандарт реализации чисел с плавающей точкой. Он применяется везде в том числе и в аппаратных реализациях.
ELITE пишет:
что вы можете предложить, как специалисты, в решении возникшей задачи
Тебе - ничего. Во-первых, толком ты не сформулировал задачу. Ты выдал только свои безграмотные подходы к решению, а о задаче надо догадываться. А во-вторых, для реализации 10-разрядной десятичной арифметики у тебя просто нет необходимых знаний.
отсюда вопрос к профи ардуины - как решить сложившуюся проблему для точных вычислений с правильным округлением для чисел в 8 знаков (4 или 6 после точки)
Давайте перейдем от абстрактных знаков после точки к реальному миру и выясним, нахера весь этот сыр-бор. 4 знака после точки в формате GPS (5432.5656) или 6 знаков в формате целых градусов - 54.325656 - обеспечивают точность примерно +- 30см на местности. 30 САНТИМЕТРОВ, Карл!!!
ELITE!!! - поведайте нам модель вашего GPS - это должен быть выдающийся прибор, если вам нужны координаты до 6-ого знака.
Если вернутся на землю, обычные GPS приемники в самых отличных условия дают точность до 3-5м, а в среднем -10-20м. То есть точность определения координат - порядка географической секунды (31м по экватору).И знаки после 5-ого, а то и после 4-ого - это просто ШУМ.
Вывод - максимум, что имеет смысл брать от этих чисел - это пять знаков (точность 3м), а вообще хватит и 4х.
что вы можете предложить, как специалисты, в решении возникшей задачи
я вижу только вариант убрать точку и работать с целым числом.
вы можете подсказать, есть ли еще варианты решения? и какие?
задача-то какая? Для каких расчетов вы используете координаты с такой точностью? Вы там выше писали. что координаты нужны для вывода на экран.
Я не удивлюсь, если окажется. что число вам вообще не нужно - и достаточно строки. Например, чтобы записывать координаты в лог.
С ЖПС получаются данные (посимвольно чар)
далее 2 задачи
1) писаль лог на СД - тут да, я на прямую пишу
2) - обсчитывать полученные данные - а именно вычислять пройденый путь и скорость
ЖПС умеет отдавать скорость - но она очень не точная, особенно при движении на склонах погрешность до 20% может быть, что много - поэтому скорость надо высчитывать исходя из пройденного пути , перепада высоты и времени между полученными данными
она пока сильно упрощена и дает +-1% на плоскости (не учитывает перепад высоты и не учитывает широту)
но тк координаты приходят в формате ХХ.УУУУУУ то отклонение в 1 знак = +- 3 метров на 54 широте
а тк точность вычисления с такой погрешностью идет и в рассчет скорости - то она еще больше прыгает
а все пройденый путь и скорость мне надо максимально точные для отображение на экране
ЖПС модуль GT-1613SKR
при полевых испытаниях на отрезке в 10км погрешность составила порядка 500 метров - это очень много
при этом испытание проводил уже несколько раз - подбирал коэфициенты, но если скорость (с самого ЖПС) еще более-менее точно показывает, то путь рассчитать никак не могу хотябы +- 50 метров на 10км
в качестве "эталона" смартфон, китайский жпс трекер и гармин - между ними +-10 метров на 10 км отклонения
// lat/long in MILLIONTHs of a degree and age of fix in milliseconds
// (note: versions 12 and earlier gave lat/long in 100,000ths of a degree.
void get_position(long *latitude, long *longitude, unsigned long *fix_age = 0);
// date as ddmmyy, time as hhmmsscc, and age in milliseconds
void get_datetime(unsigned long *date, unsigned long *time, unsigned long *age = 0);
// signed altitude in centimeters (from GPGGA sentence)
inline long altitude() { return _altitude; }
// course in last full GPRMC sentence in 100th of a degree
inline unsigned long course() { return _course; }
// speed in last full GPRMC sentence in 100ths of a knot
inline unsigned long speed() { return _speed; }
// satellites used in last full GPGGA sentence
inline unsigned short satellites() { return _numsats; }
// horizontal dilution of precision in 100ths
inline unsigned long hdop() { return _hdop; }
void f_get_position(float *latitude, float *longitude, unsigned long *fix_age = 0);
void crack_datetime(int *year, byte *month, byte *day,
byte *hour, byte *minute, byte *second, byte *hundredths = 0, unsigned long *fix_age = 0);
float f_altitude();
float f_course();
float f_speed_knots();
float f_speed_mph();
float f_speed_mps();
float f_speed_kmph();
Так чего не брать готовые числа? Чего мозг-то выносить?
она пока сильно упрощена и дает +-1% на плоскости (не учитывает перепад высоты и не учитывает широту)
НЕ УЧИТЫВАЕТ ШИРОТУ?????? пляяяяя :)))))))))))))))
Вы в курсе, что длина градуса долготы меняется по широте от 111км на экваторе до нуля на полюсе? Например, на широте Казани одна секунда уже не 31м, а чуть больше 20. Какую точность вы хотите получить, не учитывая широту?
я пробовал разные библиотеки для ЖПС - да они отдают более красиво всё, но и ресурсов больше жрут, а с этим на нано у меня в притык...
используя свой парсер мне удалось съэкономить 15% памяти по сравнению с TinyGPS и TinyGPS++
я заказал себе мегу - но щас китайский НГ и придет она минимум через 1.5 месяца...
и да, приведенная функция рассчета пути взята из TinyGPS
еще проблема библиотек - они отдают числа, но точно также сами не обрабатывают полученную информацию - итого стоит заехать в зону плохого ЖПС сигнала - как скачки могут быть в сотни км - это в любом случае надо отдельно перепроверять и исключать явно неверные данные
ИЛИТЕ, имхо, для такой задачи нужен IQ на пару десятков выше .... Вы постоянно путаетесь в трех соснах. Даже если вы доведете проект до "финала" - уверен, это будет невероятное глюкало, непригодное к реальной жизни.
НЕ УЧИТЫВАЕТ ШИРОТУ?????? пляяяяя :)))))))))))))))
Вы в курсе, что длина градуса долготы меняется по широте от 111км на экваторе до нуля на полюсе? Например, на широте Казани одна секунда уже не 31м, а чуть больше 20. Какую точность вы хотите получить, не учитывая широту?
вот поэтому надо получать для конвертации максимально точные числа, и вводить поправочный коэффициент в зависимости от широты
ЖПС прыгает в пределах 5-6 знака максимум+- 10-20 единиц (с окна) и +- 3-5 единиц на улице (в машине)
Что означает, что 6-й знак в принципе бесполезен, а пятый - только в хороших условиях. Реально даже 4й не вполне точен.
тут я вынужден с вами согласиться, 6й знак практически не важен, но вот 5й уже надо учитывать.
но вот в чем всё дело, с чего это всё началось
при переводе из ЧАР в ФЛОАТ отличия были начиная с 5го знака. а порой и 4й +-1 прыгал
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
Если вы не учитываете поправку на широту, то там ошибка и в километры будет.
Что касается собственно задачи - нормальный программист легко ее решит. Например, можно выделять градусы и минуты в целые числа типа байт, а во флоат - только секунды с долями. И точность перевода будет на 2 порядка выше. чем вам надо.
Я б на вашем месте нанял для проекта программиста. вам самому не вытянуть.
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
Если вы не учитываете поправку на широту, то там ошибка и в километры будет.
Что касается собственно задачи - нормальный программист легко ее решит. Например, можно выделять градусы и минуты в целые числа типа байт, а во флоат - только секунды с долями. И точность перевода будет на 2 порядка выше. чем вам надо.
Я б на вашем месте нанял для проекта программиста. вам самому не вытянуть.
программист есть в "запасе" на случай если я не вытяну, хоя я постараюсь.
да и в проекте есть еще и физический датчик для получения оборотов колеса
с ним я уже всё реализовал и проверил, считает стабильно и с хорошей точностью даже на скоростях более 100км/ч, ну там то ничего сложного нет, вся погрешность вылезает только из поворотов и не точности времени у ардуины - хотя они для моего проекта являются незначительными
но всяже вернусть к флоату
---
немного поразмыслив над проектом и тех заданием решил немного поменять подход
распарсеные данные оставлять в чаре
в нем их отправлять на СД карту в лог
также в нем их выводить на дисплей
а переводить в числовой вид убирая точку вообще - работать с целочисленным. по нему уже и считать путь
также тк отрезки замеров малы (несколько метров) - то толку нет брать сложные формулы - всё округлить до простейшего отрузка на плоскости , а в качестве поправки брать широту с точностью до минут (вполне достаточно) и по таблице (массив значений инт) подставлять нужное
а заодно защиту от ложных данных простую - сравнивать время между полученными точками и путь - если итоговая скорость из этого выше 250км/ч - значит данные не верные пришли и не учитывать их
ELITE - еще одна мысль вдогонку. Советую внимательно разобраться в формате координат, выдаваемых вашим GPS.
Дело в том, что запись 5432.5656 может означать как 54 гр 32' 56.56'', так и чисто 54.325656 градусов в десятичном формате. Это приличная разница. Во первом случае "убрать точку и работать как с целым" не получится.
ELITE - еще одна мысль вдогонку. Советую внимательно разобраться в формате координат, выдаваемых вашим GPS.
Дело в том, что запись 5432.5656 может означать как 54 гр 32' 56.56'', так и чисто 54.325656 градусов в десятичном формате. Это приличная разница. Во первом случае "убрать точку и работать как с целым" не получится.
хм, ушел чистать о форматах жпс координат... чтото из школьного курса он был 1... а тут их оказывается 3 разных...
спаисбо, буду читать что мне в итоге более правильно брать....
а я то думаю, что за фигня, меня на 40 км в сторону уводит на некоторых картах, а на некоторых как надо показывает....
по даташиту приемника формат ddmm.mmmm (Градусы, десятичные минуты)
Я уж не говорю, что массивы t и d абсолютно не нужны, а соответственно и половина Вашего копирования нахрен не нужно. Достаточно всего трёх операций присваивания - сместить символы g[2] и g[3] вправо на 1, а в позицию g[2] поставить '\0'. Сразу получили бы Ваш t по адресу g, а ваш d по адресу g+3
Ничему вас жизнь не учит. Почему опять массив t[] - 6 элементов, массив d[] - 2 элемента?!! Потом опять будете спрашивать. почему функции atoi и atol не работают?
Не говоря уж о том, что весь код - это чесание левой пяткой правого уха.
Наймите программиста, блин!
Или просто не пишите сюда. я уже больше не могу читать эту ахинею.
Предлагаю написать письмо модераторам. чтоб его забанили. Такого идиотизма на пустом месте не припомню. Другому напишешь, что он идиот - тот обидится и уйдет. А этот нет - как не оскорбляй. все равно через день новая тема, одна тупее другой.
То, что раньше было в g[4] Вы просто выбросили за ненадобностью - затёрли нафиг.
А что написано в строке 8 понять невозможно в прицнипе.
Вы не пробовали сначала думать, потом проверять на компьютере, потом снова думать (и так пока проверка не даст хорошего результата) а только потом постить? Чего ж у Вас всё вчено наоборот-то?
То, что раньше было в g[4] Вы просто выбросили за ненадобностью - затёрли нафиг.
А что написано в строке 8 понять невозможно в прицнипе.
Вы не пробовали сначала думать, потом проверять на компьютере, потом снова думать (и так пока проверка не даст хорошего результата) а только потом постить? Чего ж у Вас всё вчено наоборот-то?
ок, вернемся назад, раз этот код вас заинтерисовал
в g[4] была точка - она отброшена нафик была
а 8я строка делает тоже самое, что и [g+3] только результат получается от strstr
Это Вы меня типа проконсультировать решили? Что вот такая фигня "тоже работает".
Конечно, работает. куда ж ей деваться. Но понять, зачем человек в здравом уме это написал решительно невозможно. Впрочем, это если "в здравом уме". Как говорил известный киногерой, "До Вас это не относится" :)
Ну, дело Ваше. Только знайте. Если после g[11] в памяти '\0' или хотя бы "не цифра", то окей. Но если там попадётся цифра, она приклеется к преобразуемому числу - опять будете говорить. что всё криво и глюкаво.
Можно DUE взять там double двойной точности как положено.
кому положено?
вот только что в паскале, что даже в Си шарпе 0.1+0.1=0.2000001 , и если откинуть всё дальше 1 знака после точки, что 0.1+0.1 таки и дадут 0.2 и никак иначе.
Так ты ж говорил, что тебе 9 знаков надо? И что, получишь ты там свои 9 знаков?
всёравно мне не понятнео, кто и главное зачем лобирует распространение Си и С++ ....и почему они упорно не хотят исправлять его недоработки , тормознутость и глючность....
Ты читать не умеешь или просто идиот? Я ж тебе писал, что это не С, это стандарт реализации чисел с плавающей точкой. Он применяется везде в том числе и в аппаратных реализациях.
что вы можете предложить, как специалисты, в решении возникшей задачи
Тебе - ничего. Во-первых, толком ты не сформулировал задачу. Ты выдал только свои безграмотные подходы к решению, а о задаче надо догадываться. А во-вторых, для реализации 10-разрядной десятичной арифметики у тебя просто нет необходимых знаний.
Можно DUE взять там double двойной точности как положено.
Ты и впрямь думаешь, что ему это поможет? По-моему, такому специалисту хоть double, хоть long double - один хрен. С-то всё равно нечестный!
Можно DUE взять там double двойной точности как положено.
кому положено?
Не кому, а чем. Стандартом.
Можно DUE взять там double двойной точности как положено.
Ты и впрямь думаешь, что ему это поможет? По-моему, такому специалисту хоть double, хоть long double - один хрен. С-то всё равно нечестный!
Ну это уже другой вопрос, пусть сам выбирает ввязываться или нет :)
пусть возьмёт dtostre(), укажет нужную точность и прекратит трахать мосг форумчанам.
что вы можете предложить, как специалисты, в решении возникшей задачи
я вижу только вариант убрать точку и работать с целым числом.
вы можете подсказать, есть ли еще варианты решения? и какие?
задача-то какая? Для каких расчетов вы используете координаты с такой точностью? Вы там выше писали. что координаты нужны для вывода на экран.
Я не удивлюсь, если окажется. что число вам вообще не нужно - и достаточно строки. Например, чтобы записывать координаты в лог.
отсюда вопрос к профи ардуины - как решить сложившуюся проблему для точных вычислений с правильным округлением для чисел в 8 знаков (4 или 6 после точки)
Давайте перейдем от абстрактных знаков после точки к реальному миру и выясним, нахера весь этот сыр-бор. 4 знака после точки в формате GPS (5432.5656) или 6 знаков в формате целых градусов - 54.325656 - обеспечивают точность примерно +- 30см на местности. 30 САНТИМЕТРОВ, Карл!!!
ELITE!!! - поведайте нам модель вашего GPS - это должен быть выдающийся прибор, если вам нужны координаты до 6-ого знака.
Если вернутся на землю, обычные GPS приемники в самых отличных условия дают точность до 3-5м, а в среднем -10-20м. То есть точность определения координат - порядка географической секунды (31м по экватору). И знаки после 5-ого, а то и после 4-ого - это просто ШУМ.
Вывод - максимум, что имеет смысл брать от этих чисел - это пять знаков (точность 3м), а вообще хватит и 4х.
что вы можете предложить, как специалисты, в решении возникшей задачи
я вижу только вариант убрать точку и работать с целым числом.
вы можете подсказать, есть ли еще варианты решения? и какие?
задача-то какая? Для каких расчетов вы используете координаты с такой точностью? Вы там выше писали. что координаты нужны для вывода на экран.
Я не удивлюсь, если окажется. что число вам вообще не нужно - и достаточно строки. Например, чтобы записывать координаты в лог.
С ЖПС получаются данные (посимвольно чар)
далее 2 задачи
1) писаль лог на СД - тут да, я на прямую пишу
2) - обсчитывать полученные данные - а именно вычислять пройденый путь и скорость
ЖПС умеет отдавать скорость - но она очень не точная, особенно при движении на склонах погрешность до 20% может быть, что много - поэтому скорость надо высчитывать исходя из пройденного пути , перепада высоты и времени между полученными данными
отсюда я упираюсь в точность рассчета пути
использую функцию
она пока сильно упрощена и дает +-1% на плоскости (не учитывает перепад высоты и не учитывает широту)
но тк координаты приходят в формате ХХ.УУУУУУ то отклонение в 1 знак = +- 3 метров на 54 широте
а тк точность вычисления с такой погрешностью идет и в рассчет скорости - то она еще больше прыгает
а все пройденый путь и скорость мне надо максимально точные для отображение на экране
ЖПС модуль GT-1613SKR
при полевых испытаниях на отрезке в 10км погрешность составила порядка 500 метров - это очень много
при этом испытание проводил уже несколько раз - подбирал коэфициенты, но если скорость (с самого ЖПС) еще более-менее точно показывает, то путь рассчитать никак не могу хотябы +- 50 метров на 10км
в качестве "эталона" смартфон, китайский жпс трекер и гармин - между ними +-10 метров на 10 км отклонения
но тк координаты приходят в формате ХХ.УУУУУУ то отклонение в 1 знак = +- 3 метров на 54 широте
ошибка - 6 знак это 30 см
она у вас прыгает, потому что сами координаты прыгают вплоть до 4-ого знака. И эти погрешности вы расчетом не уберете.
С ЖПС получаются данные (посимвольно чар)
Все нормальные библиотеки умеют выдавать числа.
Например, TinyGPS
Так чего не брать готовые числа? Чего мозг-то выносить?
она пока сильно упрощена и дает +-1% на плоскости (не учитывает перепад высоты и не учитывает широту)
НЕ УЧИТЫВАЕТ ШИРОТУ?????? пляяяяя :)))))))))))))))
Вы в курсе, что длина градуса долготы меняется по широте от 111км на экваторе до нуля на полюсе? Например, на широте Казани одна секунда уже не 31м, а чуть больше 20. Какую точность вы хотите получить, не учитывая широту?
я пробовал разные библиотеки для ЖПС - да они отдают более красиво всё, но и ресурсов больше жрут, а с этим на нано у меня в притык...
используя свой парсер мне удалось съэкономить 15% памяти по сравнению с TinyGPS и TinyGPS++
я заказал себе мегу - но щас китайский НГ и придет она минимум через 1.5 месяца...
и да, приведенная функция рассчета пути взята из TinyGPS
еще проблема библиотек - они отдают числа, но точно также сами не обрабатывают полученную информацию - итого стоит заехать в зону плохого ЖПС сигнала - как скачки могут быть в сотни км - это в любом случае надо отдельно перепроверять и исключать явно неверные данные
Ну, удачи!
ИЛИТЕ, имхо, для такой задачи нужен IQ на пару десятков выше .... Вы постоянно путаетесь в трех соснах. Даже если вы доведете проект до "финала" - уверен, это будет невероятное глюкало, непригодное к реальной жизни.
но тк координаты приходят в формате ХХ.УУУУУУ то отклонение в 1 знак = +- 3 метров на 54 широте
ошибка - 6 знак это 30 см
она у вас прыгает, потому что сами координаты прыгают вплоть до 4-ого знака. И эти погрешности вы расчетом не уберете.
ЖПС прыгает в пределах 5-6 знака максимум+- 10-20 единиц (с окна) и +- 3-5 единиц на улице (в машине)
наприме с окна один из наибольших погрешностей между соседними замерами по логу
НЕ УЧИТЫВАЕТ ШИРОТУ?????? пляяяяя :)))))))))))))))
Вы в курсе, что длина градуса долготы меняется по широте от 111км на экваторе до нуля на полюсе? Например, на широте Казани одна секунда уже не 31м, а чуть больше 20. Какую точность вы хотите получить, не учитывая широту?
вот поэтому надо получать для конвертации максимально точные числа, и вводить поправочный коэффициент в зависимости от широты
ЖПС прыгает в пределах 5-6 знака максимум+- 10-20 единиц (с окна) и +- 3-5 единиц на улице (в машине)
Что означает, что 6-й знак в принципе бесполезен, а пятый - только в хороших условиях. Реально даже 4й не вполне точен.
вот поэтому надо получать для конвертации максимально точные числа, и вводить поправочный коэффициент в зависимости от широты
вывод неверный. Если вы измеряете длину линейкой, которая врет в 1.5 раза - ловить доли миллиметра не имеет ни малейшего смысла.
И то. что до вас это не доходит.... подтверждает мой вывод выше.
ЖПС прыгает в пределах 5-6 знака максимум+- 10-20 единиц (с окна) и +- 3-5 единиц на улице (в машине)
Что означает, что 6-й знак в принципе бесполезен, а пятый - только в хороших условиях. Реально даже 4й не вполне точен.
тут я вынужден с вами согласиться, 6й знак практически не важен, но вот 5й уже надо учитывать.
но вот в чем всё дело, с чего это всё началось
при переводе из ЧАР в ФЛОАТ отличия были начиная с 5го знака. а порой и 4й +-1 прыгал
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
Если вы не учитываете поправку на широту, то там ошибка и в километры будет.
Что касается собственно задачи - нормальный программист легко ее решит. Например, можно выделять градусы и минуты в целые числа типа байт, а во флоат - только секунды с долями. И точность перевода будет на 2 порядка выше. чем вам надо.
Я б на вашем месте нанял для проекта программиста. вам самому не вытянуть.
а иметь погрешность в ЖПС на 5-6 знак и + погрешность при переводе 5-6 знак (а то и 4й) + при вычислениях с плавающей точкой пройденого пути = итого набегает очень большие погрешности... в плоть до десятков метров, даже если сам жпс вернул с точностью 2 метра
Если вы не учитываете поправку на широту, то там ошибка и в километры будет.
Что касается собственно задачи - нормальный программист легко ее решит. Например, можно выделять градусы и минуты в целые числа типа байт, а во флоат - только секунды с долями. И точность перевода будет на 2 порядка выше. чем вам надо.
Я б на вашем месте нанял для проекта программиста. вам самому не вытянуть.
программист есть в "запасе" на случай если я не вытяну, хоя я постараюсь.
да и в проекте есть еще и физический датчик для получения оборотов колеса
с ним я уже всё реализовал и проверил, считает стабильно и с хорошей точностью даже на скоростях более 100км/ч, ну там то ничего сложного нет, вся погрешность вылезает только из поворотов и не точности времени у ардуины - хотя они для моего проекта являются незначительными
но всяже вернусть к флоату
---
немного поразмыслив над проектом и тех заданием решил немного поменять подход
распарсеные данные оставлять в чаре
в нем их отправлять на СД карту в лог
также в нем их выводить на дисплей
а переводить в числовой вид убирая точку вообще - работать с целочисленным. по нему уже и считать путь
также тк отрезки замеров малы (несколько метров) - то толку нет брать сложные формулы - всё округлить до простейшего отрузка на плоскости , а в качестве поправки брать широту с точностью до минут (вполне достаточно) и по таблице (массив значений инт) подставлять нужное
а заодно защиту от ложных данных простую - сравнивать время между полученными точками и путь - если итоговая скорость из этого выше 250км/ч - значит данные не верные пришли и не учитывать их
ELITE - еще одна мысль вдогонку. Советую внимательно разобраться в формате координат, выдаваемых вашим GPS.
Дело в том, что запись 5432.5656 может означать как 54 гр 32' 56.56'', так и чисто 54.325656 градусов в десятичном формате. Это приличная разница. Во первом случае "убрать точку и работать как с целым" не получится.
ELITE - еще одна мысль вдогонку. Советую внимательно разобраться в формате координат, выдаваемых вашим GPS.
Дело в том, что запись 5432.5656 может означать как 54 гр 32' 56.56'', так и чисто 54.325656 градусов в десятичном формате. Это приличная разница. Во первом случае "убрать точку и работать как с целым" не получится.
хм, ушел чистать о форматах жпс координат... чтото из школьного курса он был 1... а тут их оказывается 3 разных...
спаисбо, буду читать что мне в итоге более правильно брать....
а я то думаю, что за фигня, меня на 40 км в сторону уводит на некоторых картах, а на некоторых как надо показывает....
по даташиту приемника формат ddmm.mmmm (Градусы, десятичные минуты)
по даташиту приемника формат ddmm.mmmm (Градусы, десятичные минуты)
В этом случае "убрать точку и перевести в целое" не выйдет.
Надо сначала из строки градусы выделить и убрать, а вот остальное можно либо во флоат, либо целиком в целое
я думаю так - все вычисления делаются над градусами, значит сразу в них и конвертировать , при этом число делить на 2 части
градусы = 2 знака
и минуты *10000 (откидываю точку) и 6 знаков /60 = доли градуса
получу формат DDdddddd
------------
так тест
результат
в одну строку без функций
Жесть!
Что, strncpy - происки гнусных лоббистов C?
Точно float?
Я уж не говорю, что массивы t и d абсолютно не нужны, а соответственно и половина Вашего копирования нахрен не нужно. Достаточно всего трёх операций присваивания - сместить символы g[2] и g[3] вправо на 1, а в позицию g[2] поставить '\0'. Сразу получили бы Ваш t по адресу g, а ваш d по адресу g+3
да, вы правы, надо смещать так
и да, наткнулся на очередные грабли, нельзя переводить чар в инт путем вычитания 48, в строке с 0 по середине результат будет совсем не ожидаемый
:)
щас перепишу
подскажите, а как можно взять часть массива чар? например с 3 по 8 элементы сразу, как подмассив
ELITE !!!!!!!!!!!!!!!
Ничему вас жизнь не учит. Почему опять массив t[] - 6 элементов, массив d[] - 2 элемента?!! Потом опять будете спрашивать. почему функции atoi и atol не работают?
Не говоря уж о том, что весь код - это чесание левой пяткой правого уха.
Наймите программиста, блин!
Или просто не пишите сюда. я уже больше не могу читать эту ахинею.
Отпишите меня от этой темы, умоляю.
и да, наткнулся на очередные грабли, нельзя переводить чар в инт путем вычитания 48, в строке с 0 по середине результат будет совсем не ожидаемый
МОЖНО. кроме юзера ELITE
последняя строка сообщения 78 от Евгения
Отпишите меня от этой темы, умоляю.
+100500!
Предлагаю написать письмо модераторам. чтоб его забанили. Такого идиотизма на пустом месте не припомню. Другому напишешь, что он идиот - тот обидится и уйдет. А этот нет - как не оскорбляй. все равно через день новая тема, одна тупее другой.
Огромное спасибо, нигде еще не встречал, что так можно обращаться к массиву
Памагити! мне это развидеть.
del. Виноват Там точка в середине. Только сдвигать тогда
Это что за бред?
То, что раньше было в g[4] Вы просто выбросили за ненадобностью - затёрли нафиг.
А что написано в строке 8 понять невозможно в прицнипе.
Вы не пробовали сначала думать, потом проверять на компьютере, потом снова думать (и так пока проверка не даст хорошего результата) а только потом постить? Чего ж у Вас всё вчено наоборот-то?
нигде еще не встречал, что так можно обращаться к массиву
Потому что не прочитал НИ ОДНОЙ книжки по языку. Может пора уже, а? Прочитать-то? Ну, чего идиотом себя выставлять?
Мастер обфускации 80lvl.
.
Это что за бред?
То, что раньше было в g[4] Вы просто выбросили за ненадобностью - затёрли нафиг.
А что написано в строке 8 понять невозможно в прицнипе.
Вы не пробовали сначала думать, потом проверять на компьютере, потом снова думать (и так пока проверка не даст хорошего результата) а только потом постить? Чего ж у Вас всё вчено наоборот-то?
ок, вернемся назад, раз этот код вас заинтерисовал
в g[4] была точка - она отброшена нафик была
а 8я строка делает тоже самое, что и [g+3] только результат получается от strstr
извращенно но этот код тоже работает
del. Виноват Там точка в середине. Только сдвигать тогда
точка прекновения и была виной этого обсуждения
извращенно но этот код тоже работает
Это Вы меня типа проконсультировать решили? Что вот такая фигня "тоже работает".
Конечно, работает. куда ж ей деваться. Но понять, зачем человек в здравом уме это написал решительно невозможно. Впрочем, это если "в здравом уме". Как говорил известный киногерой, "До Вас это не относится" :)
Да, кстати, не знаю, что там выдаёт Ваш жпс, но вся эта бодяга будет работать только если после g[11] в памяти идёт 0.
Если такой гарантии нет, его надо туда засунуть перед atol, а потом восстановить старое значение.
Да, кстати, не знаю, что там выдаёт Ваш жпс, но вся эта бодяга будет работать только если после g[11] в памяти идёт 0.
Если такой гарантии нет, его надо туда засунуть перед atol, а потом восстановить старое значение.
с этим всё нормально, сбоев нет.
в общем с текущей задачей всё разрешилось, теперь осталось немного подкорректировать функцию рассчета дистанции между точек .
Ну, дело Ваше. Только знайте. Если после g[11] в памяти '\0' или хотя бы "не цифра", то окей. Но если там попадётся цифра, она приклеется к преобразуемому числу - опять будете говорить. что всё криво и глюкаво.
спасибо, учту обязательно
спасибо, учту обязательно
НЕ УЧТЕТЕ!
Приклейте себе над кроватью плакат буквами в 30см высотой
КАЖДЫЙ ЧАР-МАССИВ ДОЛЖЕН ЗАКАНЧИВАТЬСЯ НУЛЕМ, ИДИОТ!!!!!!!!!!!!