powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Квадратное уравнение
10 сообщений из 10, страница 1 из 1
Квадратное уравнение
    #37211917
turtles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста!!!Правильно ли написан код квадратного уравнения работая с консолью или можно его переделать произвести модернизацию кода!!! Можно пример правильного кода квадратного уравнения!!!

Код программы:

Код: plaintext
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.
 import  java.io.IOException;
 import  java.util.InputMismatchException;
 import  java.util.Scanner;

 public   class  Test
{
     static   float  a, b, c;
     static   float  d;
     static   double  x1, x2;

     public   static   void  main(String args [])  throws  IOException
    {
     try {
        System.out.println("Решение квадратного уравнения");
        Scanner s =  new  Scanner(System.in);
        System.out.print("Введите значение a -> ");
        a = s.nextFloat();
        System.out.print("Введите значение b -> ");
        b = s.nextFloat();
        System.out.print("Введите значение c -> ");
        c = s.nextFloat();
        System.out.println("a = " + a + " b = " + b + " c = " + c);

        d = (b * b) - ( 4  * a * c);

        System.out.println("Дискриминант = " + d);

         if (d <  0 )
         System.out.print("Уравнение не имеет решений!!!");
         else 
         if (d ==  0 )
          {
            x1 = (-b) / ( 2  * a);
             System.out.println ("x = " + x1);
           }
            else 
           {
              x1 = (-b + Math.sqrt(d)) / ( 2  * a);
              x2 = (-b - Math.sqrt(d)) / ( 2  * a);
                if  (x1 == x2)
                System.out.println ("x1 = x2 " + x1);
                  else 
                  System.out.println ("x1 =  " + x1 + "  x2 = " + x2);
            }
        } catch (InputMismatchException e){System.out.println("!!!Ошибка ввода!!!");}
      }
}
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212140
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"turtles" <nospam@sql.ru>;> !Правильно ли написан код квадратного уравнения работая с консолью


вы его запускали? работает? решение правильное дает?

Скажи Microsoft'у "Прощай"!

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212226
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Несколько придирок:
1. При D<0 я бы не стал писать ""Уравнение не имеет решений!!!"
т.к. оно на самом деле не имеет вещественных корней, что не мешает ему иметь комплексные корни.

2. Разумеется, в квадратным уравнении a!=0, но почему бы не проверить, что не введен 0 (для вещественных чисел проверку на 0
производят с учетом погрешности) ?

3. Зачем вам понадобились static переменные, когда достаточно локальных?
Неохота создавать экземпляр класса?
Для quick and dirty решения годится, но вы же сами спрашиваете как лучше.

4. Не надо рисовать всякие там System.out.println("a = " + a + " b = " + b + " c = " + c);
Т.к. вы после этого отнюдь не ожидаете реакции пользователя.

Если хочется сделать "красиво", напишите уж что-то вроде: System.out.println("Уравнение " + a + "x2" + b + "x" + c + "= 0; D = " + D);

5. Нельзя сравнивать цифры с плавающей точкой без учета погрешности или, к вашему вящему изумлению, иной раз окажется, что
0.01 != 0.01. Реальный пример и почему это происходит приводить не буду - об этом писано - переписано.

6. Не надо каждый раз вычислять одно и то же. Например, Math.sqrt(d) и 2*a, - это дурно пахнет.

7. Ограничьте точность вывода корней на экран, а то иногда получите "километровый" набор цифр.

8. Что-то делать лучше в отдельном методе, а уж его дергать из main.

9. Вместо float лучше использовать double

10. При вводе неверных значений лучше не выходить из программы, а повторно запрашивать пользователя.
Особенно актуально обрабатывать ошибку, когда в качестве десятичного разделителя использован неверный символ.
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212236
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
turtles,

Да, и пока не забыл, решение квадратного уравнения это не такая большая беда, чтобы об этом умудриться написать на всех вам известных форумах. :)
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212334
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
п.5 в данном случае можно не учитывать (сравнение с нулем - это только сравнение с нулем)
Приоритет умножения выше сложения, поэтому скобки в вычислении дискриминанта не нужны.
Выражение (х1 == х2) верно только в случае, когда дискриминанта равна 0 (при валидных вводных параметрах), поэтому дважды делать проверку на единственное решение не нужно.
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212363
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckдискриминанта равна 0мужской род, есичо )
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212608
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruck,
Это почему это не учитывать ошибку при сравнении с нулем?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
   public   static   void  main(String[] args) {
		 float  b = ( float ) 0 . 1 ;
		 float  a = ( float ) 1 . 0 ;
		 float  c = ( float ) 0 . 0025 ;
		 float  d = (b * b) - ( 4  * a * c);

		System.out.println("d = " + d + "; d == 0? " + (d ==  0 ));
  }

Результат: d =  9 .313226E- 10 ; d ==  0 ? false

Пробуем ручками: 
 0 . 1 * 0 . 1  =  0 . 001 ;
 4 * 1 * 0 . 0025  =  0 . 001 ;

 0 . 001  -  0 . 001  =  0 . 0 

...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212674
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carper,

Небольшая поправка:
В там, где "ручкам" вместо 0.001 следует читать 0.01 :(
...
Рейтинг: 0 / 0
Квадратное уравнение
    #37212920
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carperЭто почему это не учитывать ошибку при сравнении с нулем?
Сорри, d < 0 я увидел, а d == 0 - нет.
Замечание совершенно справедливо.
P.S. Или использовать BigDecimal (что в данном случае неоправданно).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Квадратное уравнение
    #37756298
Denis_m1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение этого задания есть тут: /topic/934687&pg=-1
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Квадратное уравнение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]