Добавил:
Если чем-то мне удалось вам помочь, то благодарность принимаю на эту карту: 2200 2460 1776 0607rnДля защищенки 5 сем: https://t.me/+h5cc9QNQe19kODVi Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

экзамен / gayd_dlya_nubov

.pdf
Скачиваний:
4
Добавлен:
10.10.2023
Размер:
984.65 Кб
Скачать

std::cout << “введите сторону b: ”; std::cin >> b;

std::cout << “введите сторону c: ”; std::cin >> c;

}

Кстати, напомню, что двумя слешами “//” в плюсах(и не только) отделяются комментарии к коду, т.е. то, что в строке написано после волшебных символов – программа игнорирует. Это нужно, чтоб другой человек смог понять, что происходит на той или иной строке.

Теперь нам надо посчитать биссектрисы для каждого угла, вызвав функцию 3

раза, но т.к. углы разные, в первый параметр функции запишем разные углы.

В каком порядке записывать остальные углы – нас не ебёт, т.к. по формуле они либо умножаются, либо складываются. Также надо не забыть создать переменные бля биссектрис. Итого пока получаем:

int main()

{

setlocale(LC_ALL, "rus"); double a, b, c;

std::cout << “введите сторону a: ”; std::cin >> a;

std::cout << “введите сторону b: ”; std::cin >> b;

std::cout << “введите сторону c: ”; std::cin >> c;

double biss_a, biss_b, biss_c; biss(a, b, c, biss_a); biss(b, a, c, biss_b); biss(c, a, b, biss_c);

}

Ну и заебись, у нас есть 3 биссектрисы, замурованные в соответствующих переменных, осталось лишь их вывести:

int main()

{

setlocale(LC_ALL, "rus"); double a, b, c;

std::cout << “введите сторону a: ”; std::cin >> a;

std::cout << “введите сторону b: ”; std::cin >> b;

std::cout << “введите сторону c: ”; std::cin >> c;

double biss_a, biss_b, biss_c; biss(a, b, c, biss_a); biss(b, a, c, biss_b); biss(c, a, b, biss_c);

std::cout << “биссектриса против стороны a = ” << biss_a << std::endl; std::cout << “биссектриса против стороны b = ” << biss_b << std::endl; std::cout << “биссектриса против стороны c = ” << biss_c << std::endl; return 0;

}

На бумаге код вроде работает, но на всякий случай запихну его в компилятор, и подтвержу этот факт.

Ну оно вроде 4ё-то показывает, и заебись. Учтём, что я ввёл несуществующий треугольник, и следовательно биссектриса одного угла реально равняется 0.

Разберём ещё один пример.

Из тех букав что я тут разобрал, надо написать функцию с типом double,

чтобы та вычисляла площадь трапеции по основаниям и углу. Затем пихнуть её в мейн, и прогнать с двумя трапециями и выдать результат.

Для начала можем преобразовать 2 формулы в одну, у нас есть:

( )

и

 

Т.к. у нас переменные одинаковые, то оба выражения можно преобразовать в:

( ) ( )

А если вы не прогуливали математику в школе, то знаете, что:

( ) ( )

Из этого получаем:

( )

Ну и заебись, перепишем это в функцию, у нас 3 входных параметра:

основание a, основание b, и угол при основании. Не ебу в какой системе измерения нас просят вводить угол, но будем ебашить в градусах. Тк c++

считает всё в радианах, необходимо будет преобразовать градусы в радианы.

Для того, чтобы преобразовать градусы в радианы – надо градусы умножить на пи, и поделить на 180, что я и сделал в коде. Так как по условиям у функции с тип возвращаемого значения должен быть double, то тут можно просто после функции return расписать необходимую функцию.

double ploshad(double a, double b, double ugol)

{

return ((pow(a, 2) - pow(b, 2))* cos(ugol*3.14/180))/4;

}

Функция есть, теперь переходим ко 2-й части, создавать функцию мейна мы уже умеем, по сему сразу начнём прописывать вывод и ввод данных, а также создадим переменные.

int main()

{

setlocale(LC_ALL, "rus"); double d1, d2, f1, f2, y1, y2;

std::cout << “Введите большее из оснований первой трапеции: ”; std::cin >> d1;

std::cout << “Введите меньшее из оснований первой трапеции: ”; std::cin >> d2;

std::cout << “Введите угол при большем основании первой трапеции: ”; std::cin >> y1;

std::cout << “Введите большее из оснований воторой трапеции: ”; std::cin >> f1;

std::cout << “Введите меньшее из оснований воторой трапеции: ”; std::cin >> f2;

std::cout << “Введите угол при большем основании второй трапеции: ”; std::cin >> y2;

}

Ну вот мы и получили дохуя вводов и выводов. Защиту от дэбила добавлять не просили, по сему её нет, но лучше в графу меньшего основание большее не вписывать. Дело за простейшим. Так как функция у нас со значением double, т.е. при её вызове она превратится в какое-то значение, мы можем её просто вызвать с необходимыми значениями. Получаем примерно такое:

int main()

{

setlocale(LC_ALL, "rus"); double d1, d2, f1, f2, y1, y2;

std::cout << “Введите большее из оснований первой трапеции: ”; std::cin >> d1;

std::cout << “Введите меньшее из оснований первой трапеции: ”; std::cin >> d2;

std::cout << “Введите угол при большем основании первой трапеции: ”; std::cin >> y1;

std::cout << “Введите большее из оснований воторой трапеции: ”; std::cin >> f1;

std::cout << “Введите меньшее из оснований воторой трапеции: ”; std::cin >> f2;

std::cout << “Введите угол при большем основании второй трапеции: ”; std::cin >> y2;

std::cout << “Площадь первой трапеции равна: ” << ploshad(d1, d2, y1) << std::endl;

std::cout << “Площадь второй трапеции равна: ” << ploshad(f1, f2, y2);

}

Пробуем проверить, и консоль показывает буквы, успех. Значения +- схожи с жизнью (попробовал построить эти трапеции в тетради), возможна погрешность из-за неточного числа пи, но нам похуй.

В целом, думаю понятно, как эту залупину решать, итог: просто не проебитесь с записью формулы, на всякий случай лучше использовать по больше скобок. Действия в целом все простые, также стоит не проебаться с требованиями к названиям переменных и типом функции.

Донаты принимаю через: https://www.donationalerts.com/r/presfy

На карту сбер: 4276380152017556

На карту тиньк: 5536914053979864

На eth кошелёк: 0x6bd1c95bf741f53844357487802cc61d9e750bce

Задание №3)

Так, что от нас требуют, нихуя ведь не понятно?

Ну в первую очередь необходима схема алгоритма вычисления. Это та самая блок схема, которую от нас требовали почти на каждой лабе. Напомню как её оформлять:

Это начало/конец функции. Внутри пишется начало это, или конец функции,

затем название функции.

Ввод/вывод данных. Внутри пишется то, вводятся, или выводятся данные,

затем идёт переменная, с которой происходит операция.

Операции над данными. Внутри пишется действие, которое производится.

Если что, ГОСТ не запрещает в одном блоке писать несколько действий сразу.

Условие. Внутри пишем само условие, из него выходит несколько путей

(стрелочек), результаты подписываются рядом с самими путями.

Вызов внешней функции. Внутри пишется операция, содержащая внешнюю функцию.

Начало/конец цикла. Внутри сначала идёт название цикла, затем условия прерывания цикла. Начало цикла – с обрубленными углами сверху, конец – снизу.

Комментарий. Выписывается справа от действия, соединяется с линией.

Перейдём к оформлению блок-схемы для нашей задачи, напомню условия:

Так как необходимо использовать вложенные разветвления, то будем их использовать, хуле. Напомню, что это тупо несколько if’ов.

С помощью прорывной 5D визуализации я нарисовал первый кусок функции по вычислению d, тут алгоритм просто узнаёт, к какому промежутку относится x. Также перед этим создал временную переменную temp_d,

которой мы присвоим подходящее значение, и выведем функцией return.

Далее нас просят с помощью базового алгоритма поиска максимального и минимального значения найти необходимые результаты выражений. Если что, это функции min() и max(), в которые пихается 2 значения. Чтобы сравнить 3 значения, просто используем max(1_значение,(max(2_значение, 3

значение))). Таким образом, находится максимальное значение между 2 и 3,

затем оно сравнивается с 1. Продемонстрирую это в блок-схеме с нашими условиями:

Это итоговый результат блок-схемы, поскольку мы в пятой ступени (там где temp_d присваиваем значение) блок-схемы используем сторонние функции,

такие как min, max, cos, sin, pow, то и блоки с этими действиями нарисованы с отступами по бокам. Затем это присвоенное значение переменной temp_d

выводим с помощью функции return.

Теперь эту функцию необходимо отобразить в коде. Действуем по старой схеме, для начала её объявляем, и создаём там временную переменную.

double vich_d(double x)

{

double temp_d;

}

Соседние файлы в папке экзамен