Напишите программу для отображения таблиц конвертации температуры. Для построения таблиц будут использоваться символы равно (=
) и вертикальные линии (|
). В таблице также должна быть строка заголовка:

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
Программа должна построить две таблицы. В первой таблице два столбца, в первом значится температура по Цельсию °C, а во втором — по Фаренгейту °F. Значения должны быть от 40° C до 100° C шагами в 5°. Для заполнения столбцов требуется использовать методы конвертации, описанные в уроке о методах.
После заполнения одной таблицы заполните вторую таким образом, чтобы столбцы были инвертированы. То есть конвертация должна проводиться из градусов по Фаренгейту в градусы по Цельсию.
Код, что вы напишите для создания таблицы, в будущем можно будет использовать вновь, уже для других программ, содержимое которых нужно отобразить в таблице с двумя столбцами. Используйте функции для разделения кода который создает таблицы от кода для вычисления значений температуры каждой строки.
Реализуйте функцию drawTable
, что принимает функцию первого класса в качестве параметра и вызывает ее для получения данных каждой созданной строки. Результатом передачи другой функции к drawTable
должны быть другие отображаемые данные.
Напишите программу самостоятельно. После этого можете свериться с нашим вариантом.
Программа для конвертации температуры в Golang
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 |
package main import ( "fmt" ) type celsius float64 func (c celsius) fahrenheit() fahrenheit { return fahrenheit((c * 9.0 / 5.0) + 32.0) } type fahrenheit float64 func (f fahrenheit) celsius() celsius { return celsius((f - 32.0) * 5.0 / 9.0) } const ( line = "=======================" rowFormat = "| %8s | %8s |\n" numberFormat = "%.1f" ) type getRowFn func(row int) (string, string) // drawTable создает таблицу с двумя столбцами. func drawTable(hdr1, hdr2 string, rows int, getRow getRowFn) { fmt.Println(line) fmt.Printf(rowFormat, hdr1, hdr2) fmt.Println(line) for row := 0; row < rows; row++ { cell1, cell2 := getRow(row) fmt.Printf(rowFormat, cell1, cell2) } fmt.Println(line) } func ctof(row int) (string, string) { c := celsius(row*5 - 40) f := c.fahrenheit() cell1 := fmt.Sprintf(numberFormat, c) cell2 := fmt.Sprintf(numberFormat, f) return cell1, cell2 } func ftoc(row int) (string, string) { f := fahrenheit(row*5 - 40) c := f.celsius() cell1 := fmt.Sprintf(numberFormat, f) cell2 := fmt.Sprintf(numberFormat, c) return cell1, cell2 } func main() { drawTable("°C", "°F", 29, ctof) fmt.Println() drawTable("°F", "°C", 29, ftoc) } |

Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»