Задача Ю1.10. Квадратное уравнение. Найти корни квадратного уравнения, заданного своими коэффициентами, с положительным дискриминантом; подстановкой в уравнение убедиться в погрешности вычислений.
a | b | c | x1 | x2 | p1 | p2 | Комментарий |
15 | 36 | -25 | 0.56257 | -2.96257 | -2e-15 | -7e-15 | Пройден |
0 | 0 | 0 | Уравнение не квадратное | ||||
0 | 0 | 16 | Уравнение не квадратное | ||||
1 | 2 | 3 | Дискриминант не положителен | ||||
1.1112 | 2.2316 | 6.6345 | Дискриминант не положителен | ||||
-24.182 | 15.77 | 36.2 | -0.94015 | 1.59228 | -3e-15 | 3e-15 | Пройден |
Код программы:
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 |
#include <stdio.h> #include <math.h> int main() { double a,b,c,D,x1,x2,p1,p2; scanf("%lf %lf %lf",&a,&b,&c); if (a==0)//проверяем квадратное ли уравнение { printf("Equation is not square"); } else { D=b*b-4*a*c;//дискриминант if(D<=0) printf("Discriminant is not positive"); else { x1=(-b+sqrt(D))/(2*a);//первый корень x2=(-b-sqrt(D))/(2*a);//второй корень printf ("x1 %0.5lf\n",x1); printf ("x2 %0.5lf\n",x2); p1=a*x1*x1+b*x1+c;//погрешность при первом корне p2=a*x2*x2+b*x2+c;//погрешности при втором корне printf("Error in the case of x1 %0.le\n",p1); printf("Error in the case of x2 %0.le\n",p2); } } return 0; } |
Код на Java:
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 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in= new Scanner(System.in); double a=in.nextDouble(); double b=in.nextDouble(); double c=in.nextDouble(); if (a==0) { System.out.println("Equation is not square"); } else { double D=b*b-4*a*c; if(D<=0) System.out.println("Discriminant is not positive"); else { double x1=(-b+Math.sqrt(D))/(2*a); double x2=(-b-Math.sqrt(D))/(2*a); System.out.println(x1); System.out.println(x2); double p1=a*x1*x1+b*x1+c; double p2=a*x2*x2+b*x2+c; System.out.println(p1); System.out.println(p2); } } } } |
Даны коэффициенты [latex]a[/latex], [latex]b[/latex] , [latex]c[/latex]. У задачи есть несколько разных путей решения в зависимости от введенных коэффициентов.
- Уравнение в случае [latex] a=0. [/latex] В случаи ввода нулевого коэффициента при старшем члене программа должна вывести на экран «Уравнение не квадратное».
- Уравнение в случае [latex] a\neq 0. [/latex] при [latex] D<=0. [/latex] В данном случае программа должна вывести на экран «Дискриминант не положителен «.
- Уравнение в случае [latex] a\neq 0. [/latex] при [latex] D>0. [/latex]..Если дискриминант положительный,то уравнение имеет два корня равных [latex]x_1=\frac{-b+\sqrt{D}}{2a}[/latex] и [latex]x_2=\frac{-b-\sqrt{D}}{2a}[/latex] . Подставив корни в уравнение получим погрешность [latex]p_1[/latex] и [latex] p_2. [/latex]
Запустить код на С++ и проверить тесты можно тут
Запустить код на Java и проверить тесты можно тут
1. Что означает р в таблице? Это что-то нужное для тестирования?
2. Если сказано в условии, что уравнение квадратное с положительным дискриминантом, то проверять корректность тестов нет необходимости.
3. Использовать транслитерацию русских слов латинскими буквами в программировании не принято. Если не нравится писать по английски, то можно это делать на других языках, но в соответствующей кодировке.
5. В нашем случае не стоит писать «Введите …». Если очень хочется, то это лучше сделать в комментариях.
1)p-это погрешность в случае линейного уравнения.
2)Ну мы не можем заставить пользователя вводить то,что нам хочется,поэтому рассматриваем все случае.Из них нам подходят,только те,где уравнение квадратное и с положительным дискриминантом.
Исправил алгоритм программы и отчет.
3)Исправил
4)Исправил
Молодец. Но кое-что осталось:
1. Переменная не используется. Уберите пожалуйста.
2. Вопрос тонкий. В некоторых математических задачах проверка соблюдения условий более сложная задача (иногда вовсе неразрешимая). Но соглашусь с Вами. Пусть будет проверка. Только поставьте в этой проверке отступы, так как в остальной программе.
3. Нет, не исправил. Посмотрите на строки 16, 25 и 26.
По отчету. В laTeX нижний индекс кодируют так x_1, x_2, p_1, p_2.
Исправил
Молодец! Зачтено.
Только определитесь с системой отступов. Либо везде так, как в строчках 9-12, либо как в остальной программе. Обе системы отступов приемлемы. Но не нужно их смешивать в пределах одной программы.
-Пожалуйста, исправьте предыдущее замечание.
— Я местами расставил в тексте пробелы после знаков препинания. Давайте в дальнейшем сами.