Ю1.14

Задача. Русские неметрические единицы длинны: 1 верста = 500 саженей; 1 сажень = 3 аршина; 1 аршин = 16 вершков; 1 вершок = 44,45 мм. Длинна некоторого отрезка составляет P метров. Перевести её в русскую неметрическую систему.

Тесты:

P(м) Результат Комментарий
 0  Длинна отрезка P равна нулю.  Пройден
 1  Длинна отрезка P — 1 аршин 6 вершков.  Пройден
 99  Длинна отрезка P — 46 саженей 1 аршин 3 вершка.  Пройден
345999 Длинна отрезка P — 324 вёрст 166 саженей 2 аршина 4 вершка.  Пройден
-9999  Не имеет смысла.  Пройден
Вот код.

 

Идея такой записи пришла мне в голову еще недели 2-3 назад. Я отлично понимаю что есть способы записать все это в более простом виде но…работает(хоть и не очень шустро) и это главное.

Из задачи ясно, что нам нужно перевести некоторый отрезок P из метров в русскую неметрическую систему измерения, в нашем случае как я понял мы должны использовать исключительно 4 меры длинны: верста, сажени, аршины и вершки. Я записал 5 переменных в тип «float» для 5-ти единиц измерения, затем для 4-х из них записал еще 4 переменные в тип «int«, обозначающие соответствующие им, но в виде целого числа переменные. Сделал я это для того чтобы все соответствующие переменные записать в виде целых чисел, а так же для того чтобы выделить разность целого числа и числа с плавающей точкой и перевести её в меньшую единицу измерения, затем сделав тоже самое с последующими переменными до тех пор пока не дойду до наименьшей единицы измерения.

 

Related Images:

5 thoughts on “Ю1.14

  1. — Добавьте метки (ключевые слова). Рубрику я уже сам поставил.
    — Сделайте пожалуйста ссылку на Вашу программу в ideOne, чтобы читатель (и я!) могли с ней поэкспериментировать.
    — Строки 7-14 сдвинуты вправо не по правилам. Они должны начинаться с одной табуляции. Но я понимаю, что Вы хотели сказать и строки 8, 10, 12, 14 можно оставить как есть (хоть это не привычно и сбивает). А остальные нужно поставить как положено
    — Сдвиг для демонстрации структуры вложенных операторов обязателен. Чтобы разобраться, что у Вас происходит я был вынужден его сделать сам. И теперь все читатели тоже? Нет, так нельзя! Расставьте везде сдвиги.
    — 1 сажень, 2-4 сажени, 5-9 саженей. С остальными похожая картина.

    ====
    P.S. Вы обратили внимание на то, что задача из раздела «Линейные вычисления»? Она может решаться в одну (пусть и длинную) строчку. Я не против тех усложнений, которые Вы в неё вносите. Все они вполне разумны. Но как следствие к решению предъявляются требования раздела «Программы с ветвлением». Поэтому так много замечаний.
    Вам следует выбрать как поступить. Или довести до завершения начатую работу по ветвлениям, либо отказаться от них и сделать первое простенькое задание. Мне больше нравится идея продолжения работы. Но это труднее, чем просто выбросить все if-else.

  2. – Сделайте пожалуйста ссылку на Вашу программу в ideOne, чтобы читатель (и я!) могли с ней поэкспериментировать.
    — Вы тесты придумывали и считали вручную или просто выдаёте результаты работы программы за тесты? Что можно таким образом проверить?
    У вас в тестах 1 метр это два вершка, а 300 километров это 32 версты. Вас ничего не смущает?

    • Перепутал сантиметры с миллиметрами =/, впредь буду внимательнее.
      Уже исправил, ссылку тоже добавил.

  3. Точно! Что перепутал, это не беда. А вот то, что на готовых тестах не проверил программу — это плохо.
    Однако теперь зачтено, молодец!

    P.S. Решил все же проверить. Набрал в Google «3 версты 14 саженей 2 аршина 7 вершков» получил 3232 метра. Оказалось Вы в 14-й строке вершки не округляете к ближайшему целому функцией round(), а просто отбрасываете дробную часть.

Добавить комментарий