Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Java


Автор: Aleksiusss 14.4.2006, 11:15
Нужна помощь.

1. Составьте программу для решения квадратного уравнения ax2 + bx + с = 0. Ввод коэффициентов a, b и с должен осуществляться с клавиатуры. Кроме самих корней, программа должна выдавать сообщение на русском языке о количестве корней.

Заранее спасибо.

Автор: LSD 14.4.2006, 13:16
Код
import java.io.*;

public class QuadraticEquation
{
  private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

  public static void main(String[] args) throws Exception
  {
    double a = readValue("Input a ");
    double b = readValue("Input b ");
    double c = readValue("Input c ");
    double[] result = solve(a, b, c);
    if(result.length == 0)
    {
      System.out.println("Equation has no root's");
    }
    else if(result.length == 1)
    {
      System.out.println("Equation has 1 root");
      System.out.println("x = " + result[0]);
    }
    else
    {
      System.out.println("Equation has 2 root's");
      System.out.println("x1 = " + result[0]);
      System.out.println("x2 = " + result[1]);
    }
  }

  private static double readValue(String promt)
  {
    while(true)
    {
      try
      {
        System.out.print(promt);
        return Double.parseDouble(reader.readLine().trim());
      }
      catch(NumberFormatException ex)
      {
        System.err.println("Invalid number format.");
      }
      catch(IOException ex)
      {
        System.err.println(ex);
      }
    }
  }

  private static double[] solve(double a, double b, double c)
  {
    double det = b * b - 4 * a * c;
    if(det > 0)
    {
      double[] result = new double[2];
      result[0] = (-b + Math.sqrt(det)) / (2 * a);
      result[1] = (-b - Math.sqrt(det)) / (2 * a);
      return result;
    }
    else if(det < 0)
    {
      return new double[0];
    }
    else
    {
      return new double[]{-b / (2 * a)};
    }
  }
}

Автор: DEER 14.4.2006, 13:28
Код

class Korni {    
    public static void main (String args []) {    
    BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));        
    System. out. println ("Введите корни");    
    System. out. println ("a=");    
       float a = Float.parseString(bf.readLine()) 
    System. out. println ("b=");    
       float b = Float.parseString(bf.readLine()) 
    System. out. println ("c=");    
       float c = Float.parseString(bf.readLine()) 
     float diskr = b*b-4*a*c;
      if(diskr > 0)
      {
            System. out. println ("Два корня");
            float x1 = (-b+sqrt(diskr))/(2*a)    ;
            System. out. println ("x1="+String.valueOf(x1));
            float x2 = (-b-sqrt(diskr))/(2*a)    ;
            System. out. println ("x2="+String.valueOf(x2));
      }
      else if (diskr == 0)
        {
             System. out. println ("Один корень");
            float x = (-b+sqrt(diskr))/(2*a)    ;
            System. out. println ("x="+String.valueOf(x));
        }
         else System. out. println ("Корни мнимые");
    }    
}

ну вот вроде. может чуток подправить надо будет с преобразованием типов. и аглы
Добавлено @ 13:29
LSD, опередил

Автор: LSD 14.4.2006, 13:47
Ты кстати немного ошибся тут:
Код
if(diskr > 0)    
...
else if (diskr > 0)
...

Во втором условии подразумевалось ==.

Автор: DEER 14.4.2006, 14:29
опечатался, спешил smile

исправил
Добавлено @ 14:33
а как правильно
Код

Float.parseString(bf.readLine()) 

или
Код

Float.parseFloat(bf.readLine()) 


а то тут из средств программирования на JAVA только блокнот

Автор: LSD 14.4.2006, 14:45
Float.parseFloat(bf.readLine()), метода Float.parseString(bf.readLine()) нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)