Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
1

Задача на численные методы

30.06.2013, 18:12. Показов 731. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уже на протяжении недели читаю документации и все равно не разобрался по многопоточности!
Имеется простая программа: создается массив цифр (первая строка) далее берется остаток от деления числа на предыдущее (вторая строка) и наконец если остаток от >=50 то присваивается 1 иначе 0 (третья строка).
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QThread>
#include <QString>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
    QThread workerThread;
 
private:
    Ui::MainWindow *ui;
    QString strm;          /*Строка для вставки в генерацию строки*/
    QString strd;           /*Строка для вставки в вычисление строки*/
    QString strz;           /*Строка для вставки в замену строки*/
    QByteArray  mas;   /*Масив для гинерации чисел*/
    int a;                        /*Длина масиива*/
    int b;                        /*Число 1*/
    int c;                        /*Число 2*/
    int d;                        /**/
    int maxValue;         /*Числа до максимального*/
    int minValue;         /*Числа до минимального*/
    int prog;
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
    int generition(int maxValue=100, int minValue=1);
    int delenie(int c, int b /*b!=0*/);
    int zamena(int d);
 
public slots:
    void process();   /*  создает и запускает генерации строки */
    void stop();       /*  останавливает генерации строки */
 
signals:
    void finished();    /* сигнал о завершении  работы */
 
private slots:
    void on_pushButton_1_clicked();
};
#endif // MAINWINDOW_H
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <QTime>
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
int MainWindow::generition(int maxValue, int minValue)
{
    return (qrand() % maxValue + minValue);
    //Генерируем число случайное и прибавляем 1 на тот случай, если будет 0
}
int MainWindow::delenie(int c, int b)
{
    return c%b;
}
int MainWindow::zamena(int d)
{
    if(b%c >= 50) return 1; else return 0;
}
 
void MainWindow::process()
{
    //Чистим строки предварительно для избавления случайных чисел
    strm.clear();
    strd.clear();
    strz.clear();
 
    a=ui->lineEdit->text().toInt(); /*Получаем колличесво элементов*/
 
    for (int i = 0; i < a; ++i)
    {
        b=generition(); //Создаем число a
        c=generition(); //Создаем число b
 
        // Добавляем числа в обратном порядке
        strm +=QString::number(c) + " " + QString::number(b) + " ";
 
        //Делим получинные числа второе на первое
        strd  +=QString::number(delenie(c, b)) + " ";
 
        //Выполняем замену
        strz += QString::number(zamena(d)) + " ";
 
        //Вычисляем прогресс статус-бара
        prog=i*100/a;
 
        //Присваиваем значение статус-бару
        ui->progressBar->setValue(prog);
    }
 
//        ui->textEdit_1->setText(strm);
//        ui->textEdit_2->setText(strd);
//        ui->textEdit_3->setText(strz);
 
    prog=100;
    ui->progressBar->setValue(prog);
}
 
void MainWindow::stop()
{
 
}
 
void MainWindow::on_pushButton_1_clicked()
{
        process();
}
Подкиньте хоть еще чего нибудь.
Были прочитаны статьи
http://habrahabr.ru/post/115830/
http://habrahabr.ru/post/150274/
http://qt-project.org/doc/qt-5... hread.html
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2013, 18:12
Ответы с готовыми решениями:

Численные методы
Необходимо получить первые 4 корня уравнения. Известно какие они должны быть. ...

Численные методы
Делаю курсовую работу, но в паскале я не особо шарю поэтому много вопросов) Вот собственно что...

численные методы
написать модуль, в котором используется функция метода хорд. а также как подключить ее к головной...

Численные методы
Доброго всем времени суток! Мне необходима Ваша помощь в написании нескольких программ: 1)...

3
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
30.06.2013, 22:01 2
одна тема, одна задача...
причем тут многопоточность?
и Qt в целом?
0
2 / 2 / 1
Регистрация: 08.01.2011
Сообщений: 47
01.07.2013, 17:11  [ТС] 3
Если я правильно понял вопрос, то отвечу.
При чем тут, то есть в моей программе многопоточность, то отвечу, что нужно выполнить основное вычисление, то есть создание строк и вставка этих строк в "эдиты" необходимо выполнить в отдельном потоке. Поскольку постольку если выполнить программу на 1000000 чисел, то основное окно программы подвисает.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
class MyThread : public QThread
 {
    Q_OBJECT
protected:
    void run();
 };
void MyThread::run()
{
    //Мой код
}
Выполнял таким образом, но результата не получил.
Еще немного опишу как выполнял свои действия: основной код в котором создаются строки и вставляются в эдиты был помещен в метод run(). После чего создаем элемент моего класса выполняем запуск метода:
C++ (Qt)
1
2
3
4
5
void MainWindow::on_pushButton_1_clicked()
{
    MainWindow prog;
    prog.strar();
 }
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
02.07.2013, 00:19 4
посмотрите в эту сторону, ИМХО для Вашей задачи - самое оно.
0
02.07.2013, 00:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2013, 00:19
Помогаю со студенческими работами здесь

Численные методы. С++
Написать программу для решения системы линейных алгебраических уравнений методом Гаусса. Написать...

Численные методы
Ребята..учусь экстерном,заданий трыднец по предметам,не могу не лит-ры нужной найти по уравнениям в...

Численные методы
Помогите пожалуйста отладить метод Гаусса для данное матрицы: Вот,что уже написал Есть результат...

Численные методы
Здравствуйте! Не могли бы вы мне помочь решить это задание? Нужно решить одним методом. Очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru