Задача.
Длина отрезка задана в дюймах (1 дюйм = 2,54 см). Перевести значение длины в метрическую системы, т.е. выразить её в метрах, сантиметрах и миллиметрах. Например, 21 дюйм = 0 м 53 см 3,4 м.
Тесты.
Ввод | Вывод |
0 | 0 м 0 см 0 мм |
0.3 | 0 м 0 см 7.62 мм |
21 | 0 м 53 см 3.4 мм |
40.5 | 1 м 2 см 8.7 мм |
100 | 2 м 54 см 0 мм |
5000 | 127 м 0 см 0 мм |
Код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <math.h> using namespace std; int main() { double L1, L, m, cm, mm; for (int i = 1; i <= 6; i++) { scanf("%f", &L1); // Вводим значение длины в дюймах L = L1*25.4; // Переводим дюймы в миллиметры m = floor(L/1000); cm = floor((L - 1000*m)/10); mm = L - 1000*m - 10*cm; printf("%4.2f дюймов = %.0f м %.0f см %.2f мм \n", L1, m, cm, mm); } return 0; } |
Код (Java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); double L1, L, m, cm, mm; L1 = in.nextDouble(); L = L1 * 25.4; m = Math.floor(L / 1000); cm = Math.floor((L - 1000*m) / 10); mm = L - 1000*m - 10*cm; System.out.format("%.0f дюймов = %.0f м %.0f см %.2f мм", L1, m, cm, mm); } } |
Решение.
Обозначим через [latex] x [/latex] длину в дюймах, которую вводит пользователь; через [latex] y [/latex] длину в миллиметрах. Согласно формуле перевода, [latex] y = 25.4 \cdot x[/latex].
Один метр есть тысяча миллиметров. Чтобы получить целое число метров, содержащихся в [latex] y[/latex] , разделим [latex] y[/latex] на тысячу и извлечём целую часть: [latex] m = \left[\frac{x}{1000} \right][/latex].
Один сантиметр есть десять миллиметров. Избавимся от метров, разделим полученное число на десять и извлечём целую часть — получим целое число сантиметров, содержащихся в [latex] y [/latex]: [latex] y = \left[\frac{y-1000\cdot m}{10} \right] [/latex]
Оставшееся — число миллиметров: [latex] mm = y — 1000 \cdot m — 10 \cdot cm [/latex] .
В общем случае, лучше использовать вещественный тип double, обеспечивающий более высокую точность. Хотя в этой программе это несущественно.
Засчитано, 10 баллов.