Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.07.2016, 22:25   #1
1ViV1
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 13
По умолчанию метод половинного деления. вылетает программа

Всем привет!
Пытаюсь написать прогу, которая бы решали уравнение методом половинного деления и выводила результат в окошко.

Вот, что получилось:

.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)); 
}

но! Почему-то, когда я нажимаю на Ок! программа вылетает, тут же закрывается. Вроде все правильно, в чем проблема?
1ViV1 вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод итерация и метод половинного деления Delphi gabach Помощь студентам 1 24.12.2014 08:43
метод половинного деления Poli-007 Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2011 00:14
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 06:23
Метод половинного деления Hichcog Помощь студентам 0 13.12.2010 18:33
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08