Всем привет!
Пытаюсь написать прогу, которая бы решали уравнение методом половинного деления и выводила результат в окошко.
Вот, что получилось:
.h
Код:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
//переменные для графики
QPushButton *Ok;
QLabel *initialApproximationX1;
QLabel *initialApproximationX2;
QLabel *Result_;
QLineEdit *initialApproximation_X1;
QLineEdit *initialApproximation_X2;
QLineEdit *Result;
//переменные для счёта
float initialApproximationx1_=0;
float initialApproximationx2_=0;
float Result_of_summ;
private slots:
float calculate();
};
#endif // WIDGET_H
.cpp
Код:
#include "widget.h"
//видимо, все происходит в конструкторе
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
/*_____________________________________________________________________*/
// QPushButton *Ok = new QPushButton(); //просто создатся кнопка
QPushButton *Ok = new QPushButton(this); //кнопка создалась и закрепилась на главном окне программы
/*_____________________________________________________________________*/
Ok->setGeometry(100,70,50,50);
Ok->setText("Ok!");
Ok->show();
//установим первую группу - текст и окошко для нач. приближения x1
QLabel *initialApproximationX1=new QLabel(this);
initialApproximationX1->setText("Enter x1= ");
initialApproximationX1->setGeometry(0,0,100,30);
initialApproximationX1->show();
QLineEdit *initialApproximation_X1=new QLineEdit(this);
initialApproximation_X1->setGeometry(0,30,100,30);
initialApproximation_X1->show();
//установим вторую группу - текст и окошко для нач. приближения x2
QLabel *initialApproximationX2=new QLabel(this);
initialApproximationX2->setText("Enter x2= ");
initialApproximationX2->setGeometry(150,0,100,30);
initialApproximationX2->show();
QLineEdit *initialApproximation_X2=new QLineEdit(this);
initialApproximation_X2->setGeometry(150,30,100,30);
initialApproximation_X2->show();
//установим окошко с результатом
QLabel *Result_=new QLabel(this);
Result_->setGeometry(100,140,70,50);
Result_->setText("Result:");
Result_->show();
QLineEdit *Result=new QLineEdit(this);
Result->setGeometry(90,180,70,30);
Result->show();
connect(Ok,SIGNAL(clicked()),this,SLOT(calculate()));
}
Widget::~Widget()
{
}
//слот, который вызывается при нажатии на кнопку Ok!
float Widget::calculate()
{
initialApproximationx1_=initialApproximation_X1->text().toDouble();
initialApproximationx2_=initialApproximation_X2->text().toDouble();
//метод половинного деления
do {
c=(initialApproximationx1_+initialApproximationx2_)/2;
if (f(initialApproximationx2_)*f(c)<0){
initialApproximationx2_=c;
}
else {
initialApproximationx1_=c;
}
} while((initialApproximationx2_-initialApproximationx1_)>eps);
Result->setText(QString::number(c));
}
но! Почему-то, когда я нажимаю на Ок! программа вылетает, тут же закрывается. Вроде все правильно, в чем проблема?