LINUX.ORG.RU

Представление данныех в коде

 


0

1

С++ изучаю недавно, прошу сильно не ругать. В качестве практики хочу написать программу вычисляющую размер по роликам и длину общей нормали для цилиндрического зубчатого колеса с допусками для онных. Реализация номиналов значений выполнена. Дело за малым: вычислить допуска. Прошу совета: как эти данные лучше записать в коде и организовать к ним доступ в частных случаях? Спасибо.

Ответ на: комментарий от Harald

курсач, сессия? :)

нет, это страница из ГОСТ 9178-81. На работе хочу внедрить.

Silencer
() автор топика
Ответ на: комментарий от yoghurt

Как иерархию интервальных контейнеров

Спасибо, буду ковырять в эту сторону.

Silencer
() автор топика
Ответ на: комментарий от yoghurt

самая упоротая библиотека в бусте, из тех, что попадались мне на глаза...

Даже mpl не так впечатлил :)

pon4ik ★★★★★
()

Ты лучше скажи: как эти данные используются при расчёте «размера по роликам». Что это вообще такое? Может и не понадобится никаких интервалов.

bogus_result
()

Можно сделать умно (с интервалами и т.п.), а можно следать просто и надёжно.

Пять равно-размерных таблиц (H, G, E, F, D) с предзабитыми данными. (Их можно и автоматом сгенерить.)

Плюсы — скорость доступа (просто по индексам, без всяких расчётов).

Минусы — их надо бы генерить. Ручками слишком мутроно и высокая вероятность ошибки.

Но т.к. это одноразовое дело (так быстро данные меняться не будут) — то вполне решение.

В общем, классический CPU vs RAM. Выбирай.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от anonymous

ясен красен, ведь интервалы, это открытие года, лично для меня :)

pon4ik ★★★★★
()
Ответ на: комментарий от bogus_result

как эти данные используются при расчёте «размера по роликам»

эти данные используются при расчете наименьшего оклонения длины общей нормали

Silencer
() автор топика
Ответ на: комментарий от Silencer

как эти данные используются при расчёте?

эти данные используются при расчёте...

Вопрос о представлении данных я решаю только после того, как пойму как именно буду их использовать при расчёте.

bogus_result
()

вычисляющую размер по роликам и длину общей нормали для цилиндрического зубчатого колеса с допусками для онных. Реализация номиналов значений выполнена. Дело за малым: вычислить допуска.

наименьшего оклонения длины общей нормали

А человеческим языком можно?

invy ★★★★★
()
Ответ на: комментарий от Silencer

Формулу напиши. Ты думаешь тут все спецы по техмеху?

Stahl ★★☆
()
Ответ на: комментарий от bogus_result

Вопрос о представлении данных я решаю только после того, как пойму как именно буду их использовать при расчёте.

Ну очевидно же, что ТСу просто нужна табличная функция от целого вектора параметров (заголовок + 1е столбцы таблицы), и использовать её можно как любую другую.

Вопрос только в том, как её закодить - в лоб, сгенерить, etc.

yoghurt ★★★★★
()
Ответ на: комментарий от invy

А человеческим языком можно?
Формулу напиши.

Наименьшее отклонение от длины общей нормали (W) представляет собой верхний допуск на ее номинальное значение. Нижний допуск (или наибольшее отклонение) от W складывается со значением из другой таблицы с предыдущим значением. Оба допуска со знаком «минус», поэтому наименьшее - верхний, а наибольшее - нижний. Формул тут никаких нет, точнее есть, только они не совсем правдиво отражают суть табличных данных, даже несмотря на интервалы при выборе табличных значений.

Silencer
() автор топика
Ответ на: комментарий от yoghurt

Ну очевидно же, что ТСу просто нужна табличная функция от целого вектора параметров

да да

Silencer
() автор топика
Ответ на: комментарий от yoghurt

ИМХО бы явно разделил описание таблицы (максимально похожее на гост), конструктор функции по её описанию, и использование функции. Никаких особенных структур данных вроде не надо. Описание действительно можно сгенерить.

bogus_result
()
Ответ на: комментарий от bogus_result

По внутреннему представлению функции (не по её описанию): я бы замутил сначала функцию DiameterLimits getDiameterLimits(int diameter) которая понятно что возвращает. А таблицу тогда можно в HashMap засунуть. Ключем будет тройка (char, DiameterLimits, int), значением - искомый допуск.

bogus_result
()
Ответ на: комментарий от bogus_result

Вспомогательная DiameterLimitsMap будет иметь интерфейс:

DiameterLimits getDiameterLimits(int diameter)
DiameterLimitsMap add(int limit)
Iterator iterator()

Она будет использоваться как при конструировании функции из описания таблицы так и при работе функции.

А описание удобно видеть и делать максимально близко к виду таблицы по строкам. Его наверное сообразите как сделать.

bogus_result
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.