Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 20:57   #1
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию Применение конструкторов [Java]

Задание: класс представляющий квадратное уравнение с методами вычисления его дискриминанта и его корней.
Программа должна содержать конструктор без параметров и конструктор с параметрами, и необходимое количество методов класса.
В принципе программу уже написал, но она немного не соответствует требованиям. Помогите задействовать конструкторы (они закоментированны)
Код:
class Main {
/*  private final int a;
    private final int b;
    private final int c;
   Main(){         // Конструктор без параметров
     a=1;
     b=2;
     c=1;
   }
   Main (int a, int b, int c){   //Конструктор с параметрами
       this.a=a;
       this.b=b;
       this.c=c;
   }*/
static float discrm(int a, int b, int c) {      //Метод вычисления дискримината
       int  D=(b*b)-4*a*c;
         return D;
     }
static float dmaxX1(int a, int b, float kD){    //Если два корня, то возвращает первый
    float x1 = (-b + kD)/(2*a);
         return x1;
   }
static float dmaxX2(int a, int b, float kD){    //Если два корня, то возвращает вторый
    float x2 = (-b - kD)/(2*a);
         return x2;
   }
static float dzeroX(int a, int b){              //Если Д==0,то корни равны. Вычисляем один из них
    float x1 = -b/(2*a);
         return x1;
   }
    /**
     * @param args the command line arguments
     */
    public static void start(String[] args) {       //  ГЛАВНАЯ ФУНКЦИЯ, с нее все и начинается
      float  kD, x1, x2;
      int a = 1, b = 2, c = 1, D;   
         D=(int) discrm(a, b, c);     //Дискриминант
         kD = (float) Math.sqrt(D);   //Корень дискриминанта
             if (D>0)  {                    //Если два корня
                 x1 = dmaxX1(a, b, kD);
                 x2 = dmaxX2(a, b, kD);
              System.out.println("X1 = "+x1+";\nX2 = "+x2+";");
             }  else if(D==0) {             //Если один корень
                 x1 = dzeroX(a, b);
               System.out.println("X = "+x1+";");
             }  else if (D<0) {             //Если корней нет
               System.out.println("Корней нет");   
             }
    }
}
И еще, if (D>0) { для вычисления х1 и х2 я вызываю два разных метода, можно ли их объединить в одну возвращая параметру за счет создания объекта (например Main p = new Main() ; ), я пробовал но у меня не получается создать объект в одном классе.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 28.03.2010, 21:21   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Ну в принципе у вас все хорошо, тоько вы забыли объвить, разместить в памяти созданные объекты.

Код:
class KvadYr {
    private final int a;
    private final int b;
    private final int c;
   KvadYr(){         // Конструктор без параметров
     a=1;
     b=2;
     c=1;
   }
KvadYr (int a, int b, int c){   //Конструктор с параметрами
       this.a=a;
       this.b=b;
       this.c=c;
   }
static float discrm(int a, int b, int c) {      //Метод вычисления дискримината
       int  D=(b*b)-4*a*c;
         return D;
     }
static float dmaxX1(int a, int b, float kD){    //Если два корня, то возвращает первый
    float x1 = (-b + kD)/(2*a);
         return x1;
   }
static float dmaxX2(int a, int b, float kD){    //Если два корня, то возвращает вторый
    float x2 = (-b - kD)/(2*a);
         return x2;
   }
static float dzeroX(int a, int b){              //Если Д==0,то корни равны. Вычисляем один из них
    float x1 = -b/(2*a);
         return x1;
   }


}
public class Main{
    public static void main(String[] args){
KvadYr myYr=new KvadYr(3,5,1);
float  kD, x1, x2;
int a = 1, b = 2, c = 1, D,dis;
D=(int) myYr.discrm(a, b, c);
kD = (float) Math.sqrt(D);
if (D>0)  {
                 x1 = myYr.dmaxX1(a, b, kD);
                 x2 = myYr.dmaxX2(a, b, kD);
                 System.out.println("X1 = "+x1+";\nX2 = "+x2+";");
} else if(D==0) {
    x1 =myYr.dzeroX(a, b);
    System.out.println("X = "+x1+";");
} else if (D<0) {             //Если корней нет
               System.out.println("Корней нет");
             }

 }
}
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 28.03.2010, 21:29   #3
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

MalCer большое спасибо за помощь.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
применение ComboBox Improviz Компоненты Delphi 2 21.02.2010 12:52
Использование конструкторов и деструктора при проектировании пользовательского класса НеважНо Общие вопросы C/C++ 1 22.01.2010 14:56
Создание классов с использованием конструкторов различного типа Катюшенька Помощь студентам 0 30.04.2009 20:21
Конфликт конструкторов vector (компилятор MinGW) Zefick Общие вопросы C/C++ 4 19.04.2009 08:31
составление запросов в 2003 только при помощи SQL, ни мастеров, ни конструкторов использовать не нужно Baxxter Microsoft Office Access 3 09.12.2008 12:35