Задать вопрос
ruprup
@ruprup
Web парсеры пишу. Нужно делать что то большее.

Почему значения не меняются в цикле c++?

Смотрите сделал таблицу и пытаюсь ее заполнить разными элементами, пока что хочу заполнить первый столбец числами с помощью For, но выходит так:
5f814fc173478769614024.png
почему так случается? я так полагаю созданный элемент itm не меняется?
void MainWindow::on_pushButton_clicked()
{
    //Тут создаем таблицу с 20 полями и с 2 заголовками
   // Тут создаем переменные вьюшек
    QString al = ui->a->text();
    QString xnl = ui->xn->text();
    QString xhl = ui->xh->text();
    QString xkl = ui->xk->text();
    



   //Тут переменные сишарповские
    double a = al.toDouble();
    double xn = xnl.toDouble();
    double xh = xhl.toDouble();
    double xk = xkl.toDouble();
    double x;
    double y;
    int counter = 0;
    //
    for(int i = 0; i<ui->tableWidget->rowCount();i++)
        for(x = xn;x<=xk;x = x+xh)
        {

            if (x <= -1) {
                        y = (sqrt(pow(x,2) + a)) - pow(a,2);

                    }
                    else
                    {
                    if(x == -2){
                        y = pow(cos(pow(x,3)), 2) - x / sqrt(pow(a,2)+1);
                    }
                    else{
                        if((x>-1) && (x<=-2.9)){
                            y = pow(sin(x+a),3) / x;

                        }
                    }
                    }
            QTableWidgetItem *itm = new QTableWidgetItem(QString::number(y));
            ui->tableWidget->setItem(i,0,itm);
            x = x+xh;
        }
}
  • Вопрос задан
  • 269 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Griglapidus
C++/Qt
По всей видимости задумкой было заполнить таблицу результатами при разных X. Но по факту каждый раз рнасчитывая новый Y вы складываете их в одну и туже ячейку таблицы и вы всех ячейках вы имеете расчитаные при максимальном X.

В крадце вам нужно зарание посчитать колличество необходимых ячеек в таблице, сделать
ui->tableWidget->setRowCount(newSize); (или что то в этом роде)
и привести ваш цикл к виду:
int i = 0;
for(x = xn;x<=xk;x = x+xh, ++i) {
// Расчет очередного Y
  QTableWidgetItem *itm = new QTableWidgetItem(QString::number(y));
  ui->tableWidget->setItem(i,0,itm);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы