Математические функции
Повторение: создание исполняемой программы из исходного кода на Си:
- Трансляция: файл на Си → объектный файл (все операторы Си переведены на машинный язык)
- Компоновка: объектный файл → исполняемый файл (к объектному файлу добавлена исполняющая подсистема Си и другие подпрограммы, непосредственно либо в виде указания библиотеки, откуда эти подпрограммы может загрузить операционная система)
Вот здесь более подробный рассказ о компоновке: FrBrGeorge/LinkingC
- Использование математических функций:
В начале программы — #include <math.h>; в этом файле содержатся описания математических функций
В тексте программы можно использовать функции из списка, например, так:
здесь должен был быть рассказ про atan2(), но тригонометрия была не у всех
- Подключение математической библиотеки при компиляции в geany:
открыть любой файл на Си и вызвать «Сборка ⇒ Установить команды сборки»
Выставить " -lm" в конце каждой команды сборки, если там этой строеи нет
Цикл по вводу с маркером конца. Например, вводятся пары чисел, а конец ввода — не пара чисел. Воспользуемся свойством функции scanf() не выдавать ошибки, а только возвращать количество успешно введённых переменных:
- Короткая и удобная запись. Использование тоже удобное: просто вводим мусор вместо пары чисел.
Домашнее задание
Прочитать про функции libm из учебника (более подробно см. тут).
Настроить сборочное окружение (см. выше), чтобы при сборке подключалась библиотека m
- (упражнение) Вводятся тройки вещественных чисел через пробел. Считая эти тройки сторонами параллелепипеда, найти наибольшее значение его диагонали. Конец ввода — любая строка, не являющаяся числом.
- Ввести 8 чисел — координаты точек A, B, X, и Y. Проверить, лежат ли точки X и Y в одной полуплоскости относительно прямой, проходящей через A и B
Пары кубов. Ввести натуральное число N. Проверить, можно ли представить это число в виде суммы кубов двух неотрицательных целых чисел.
Обязательно сделать эту задачу простым методом (вложенные циклы) в качестве упражнения
Подсказка. Для для любого A, такого что $$ A < root(3)(N) $$, из всех вариантов B интересно проверить только два, такие, что $$A^3+B^3<=N$$, а $$A^3+(B+1)^3>=N$$. Остальные значения: $$A^3+(B-1)^3$$ и $$A^3+(B+2)^3$$, очевидно, не подойдут сразу.
Придумать более эффективный метод решения задачи