Ю1.19

Задача Ю1.19. Найти координаты вершины параболы [latex]y = a{ x }^{ 2 }+bx+c[/latex]

[latex]a[/latex] [latex]b[/latex] [latex]c[/latex] [latex]x[/latex] [latex]y[/latex] Комментарий
 1 -2  -3 1 -4 Пройден.
0 2 2 Не пройден
так график y(x)
не является параболой и программа оповещает об ошибке
1 0 4 0 4 Пройден.
2 1 3 -0.25 2.875 Пройден.

Мы знаем координаты вершины параболы вычисляются по формулам:
1)[latex]{ x }_{ 0 }=-\frac { b }{ 2a } [/latex]

2)[latex]{ y }_{ 0 }=a{ x }_{ 0 }^{ 2 }+b{ x }_{ 0 }+c[/latex]

(Для простоты в программе [latex]{ x }_{ 0 }[/latex] и [latex]{ y }_{ 0 }[/latex] заменены на [latex]{ x }[/latex] и [latex]{ y }[/latex] соответственно)

Теперь учтем ситуации в проработке которых могут возникнуть сложности:
Если [latex]{ a }=0[/latex], то график [latex]y(x)[/latex] не является параболой,
о чем на должен проинформировать компилятор.
Это все проблемы связанные с графиком.

Теперь проанализируем же может вызвать противоречия или ошибки,
для этого проанализируем элементы С++ которые могут вызвать ошибки или неточности:
Наиболее рационально использовать тип double, но у этого типа есть некоторая неточность, а именно (-0) — может быть принята за вполне нормальное число со знаком и компилятор безо всяких угрызений совести выведет «-0», а не 0 ( было бы логичнее ). Именно по этой причине мы вначале выполним [latex]{ x }_{ 0 }=\frac { b }{ 2a } [/latex], а потом уже, если [latex]{ x }[/latex] окажется не равным нулю, то мы умножим его на [latex]-1[/latex].
Это все сложности которые могут повстречаться на на пути реализации данной программы, так ничего не мешает нам написать данную программу.

Related Images:

3 thoughts on “Ю1.19

  1. Укажите, пожалуйста, рубрику и метки (ключевые слова).

    С -0 действительно странно, x=0; x*=-1; cout <<x; стабильно выдает -0. Причем, верно, что -0==0, но неверно, что -0<0.

    В конце вывода желательно перейти на новую строку (endl) — например, e-olimp.com.ua к этому аспекту критичен (при проверке задач).

Добавить комментарий