Я попытался изменить массив в моей программе с помощью вектора, он работал хорошо, когда я использовал массив, но когда я его изменяю, программа не работает правильно. Qt не говорит нет ошибки, и это может работать, но когда я нажмите генерировать или кнопку высчитывает, кажется, программа на провал, и я не знаю, где ошибкипреобразование массивов в векторы, и я получил некоторые необнаруженные ошибки
так вот мои коды
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <math.h>
#include <vector>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
int r, maxt, mint;
std::vector<float> temp;
float avg, sd;
private:
Ui::MainWindow *ui;
public slots:
void min();
void max();
void calc();
void gen();
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.setWindowTitle("Arfyan Rabbani");
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect (ui->Calculate,SIGNAL (clicked()),this,SLOT(calc()));
connect (ui->Generate,SIGNAL (clicked()),this,SLOT(gen()));
connect (ui->MaxSlider,SIGNAL (valueChanged(int)),this,SLOT(max()));
connect (ui->MinSlider,SIGNAL (valueChanged(int)),this,SLOT(min()));
maxt=37;
mint=25;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::calc()
{
float totaltemperature = 0;
for (unsigned int i=0;i<24;i++)
totaltemperature = totaltemperature + temp[i];
avg = totaltemperature/24;
QString average = QString ("Average = %1").arg(avg);
ui->textBrowser_calc->setText(average);
float stdev=0;
for (unsigned int i=0;i<24;i++)
stdev = stdev + pow((temp[i]-avg),2);
sd = sqrt(stdev/24);
QString stand = QString ("Standard Deviation = %1").arg(sd);
ui->textBrowser_calc->append(stand);
}
void MainWindow::gen()
{
r = maxt-mint+1;
ui->textBrowser_data->setText("Temperature of The Room");
for (unsigned int i=0;i<24;i++)
{
temp[i]= mint+rand()%r;
QString t = QString ("Height %1 = %2").arg(i+1).arg(temp[i]);
ui->textBrowser_data->append(t);
}
}
void MainWindow::max()
{
maxt = ui->MaxSlider->value();
}
void MainWindow::min()
{
mint = ui->MinSlider->value();
}
В настоящее время я изучаю, как использовать векторы, поэтому я был бы рад, если бы кто-то мог мне помочь.
спасибо !!
это работает благодаря –