Задача. Русские неметрические единицы длинны: 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 | Не имеет смысла. | Пройден |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#include <stdio.h> int main(void) { float p, v1, x1, y1, z1; scanf("%f", &p); int v, x, y, z; v1=p/500/3/16/0.04445; //Переводим наш отрезок P из метров в верста. v=(int)v1; //Записываем переменную обозначающую отрезок P в верстах в виде целого числа. x1=(v1-v)*500; //Вычисляем дробную часть от предыдущей величины(верста) и переводим её в сажени. x=(int)x1; //Опять же записываем переменную в виде целого числа. y1=(x1-x)*3; //Вычисляем дробную часть от предыдущей величины(сажени) и переводим её в аршины. y=(int)y1; //Опять же записываем переменную в виде целого числа. z1=(y1-y)*16; //Вычисляем дробную часть от предыдущей величины(аршины) и переводим её в вершки. z=(int)z1; //И вновь записываем переменную в виде целого числа. if(p > 0) printf("Длинна отрезка P -"); else if(p==0) printf("Длинна отрезка P равна нулю"); else printf("Не имеет смысла"); if(v==1) printf(" %d верста", v); else if(v==0) ; else if(v>=2,v<=4) printf(" %d версты", v); else if(v>=5) printf(" %d вёрст", v); if(x==1) printf(" %d сажень", x); else if(x==0) ; else if(x>=2,x<=4) printf(" %d сажени", x); else if(x>=5) printf(" %d саженей", x); if(y==1) printf(" %d аршин", y); else if(y==0) ; else if(y>=2,y<=4) printf(" %d аршина", y); else if(y>=5) printf(" %d аршинов", y); if(z==1) printf(" %d вершок", z); else if(z==0) ; else if(z>=2,z<=4) printf(" %d вершка", z); else if(z>=5) printf(" %d вершков", z); printf("."); return 0; //Это очень важный момент. } |
Идея такой записи пришла мне в голову еще недели 2-3 назад. Я отлично понимаю что есть способы записать все это в более простом виде но…работает(хоть и не очень шустро) и это главное.
Из задачи ясно, что нам нужно перевести некоторый отрезок P из метров в русскую неметрическую систему измерения, в нашем случае как я понял мы должны использовать исключительно 4 меры длинны: верста, сажени, аршины и вершки. Я записал 5 переменных в тип «float» для 5-ти единиц измерения, затем для 4-х из них записал еще 4 переменные в тип «int«, обозначающие соответствующие им, но в виде целого числа переменные. Сделал я это для того чтобы все соответствующие переменные записать в виде целых чисел, а так же для того чтобы выделить разность целого числа и числа с плавающей точкой и перевести её в меньшую единицу измерения, затем сделав тоже самое с последующими переменными до тех пор пока не дойду до наименьшей единицы измерения.