Пример 2: программа, которая выводит значения функции на заданном отрезке с помощью списка listWidget

 

Спроектируйте окно как показано на рисунке. Нижний элемент — listWidget.

Перейдите в режим Edit.

Откройте файл dialog.h и напишите в классе Dialog объявление функции:

double f(double);

Откройте файл dialog.cpp и напишите определение функции как показано ниже:

 

 

#include "dialog.h"

#include "ui_dialog.h"

#include <math.h>

#include <QtGui>

Dialog::Dialog(QWidget *parent):

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

}

Dialog::~Dialog()

{

delete ui;

}

 // в качестве примера возьмем функцию y = 1/x:

double Dialog::f(double x)

{

return 1/x;

}

 // слот для кнопки «Вычислить»:

 

void Dialog::on_pushButton_clicked()

{

QTextCodec* codec = QTextCodec::codecForName("UTF-8");

QTextCodec::setCodecForCStrings(codec);

double a = ui->lineEdit->text().toDouble(); // прочитали a

double b = ui->lineEdit_2->text().toDouble(); // прочитали b

double h = ui->lineEdit_3->text().toDouble(); // прочитали шаг

int n = 0; // количество цифр после точки при выводе результата

double copy = h; // копия шага

while (copy < 1) { copy *= 10; n++;}

// количество цифр после точки в зависимости от шага

double y = 0;

ui->listWidget->clear(); // очищаем список

for (double x = a; x <= b; x += h) // проходим заданный отрезок

{

  if (finite(y = f(x))) // если значение функции вычислено корректно

   ui->listWidget->addItem(QString(" x = %1 y = %2 ").arg(x,0,'f', n).arg(y,0,'g',5)); // выводим значение аргумента и функции

  else ui->listWidget->addItem(QString(" x = %1 значение не определено").arg(x,0,'f', n)); // выводим сообщение

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: