Я пытаюсь изучать C ++ с помощью создателя Qt, и теперь я не могу вывести правильный результат.
Моя программа должна читать числа из QTableWidget и выводить самые низкие значения. И иногда это работает, но часто есть что-то вроде 201-e302. Я не знаю почему. Я должен сделать это с динамическими c массивами. Это задача моего учителя.
Вот мой код:
QPair<int, double*> Widget::count()
{
double *arr = new double[0];
bool ok;
int len = 0;
//Reading numbers from QTablewidget
for (int row = 0; row < ui->table->rowCount(); row++)
for (int col = 0; col < ui->table->columnCount(); col++)
{
if(ui->table->item(row, col) and
ui->table->item(row, col)->text().length() != 0)
{
double *temp = new double[len + 1];
for (int j = 0; j < len; j++)
{
temp[j] = arr[j];
}
temp[len] = ui->table->item(row, col)->text().toDouble(&ok);
arr = temp;
delete [] temp;
len++;
}
else
{
QPair<int, double*> res = qMakePair(0, arr);
QMessageBox::information(this, "Error", "Fill every cell");
return res;
}
}
//
QPair<int, double*> res = qMakePair(len, arr);
return res;
}
void Widget::on_min_but_clicked()
{
int len = count().first;
double* arr = count().second;
if (len != 0)
{
double min = arr[0];
for (int i = 0; i < len; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
ui->min_lineedit->setText(QString::number(min));
}
}