Запутался в двух соснах.
Без else все работает, но не так как нужно.
С else компилятор дает ошибку expected ‘;’ before ‘}’ token
Нужно чтобы после else выполнялось лишь при условии a==0
if(a!=0) QMessageBox::information(this,"New Info","Your table is not full"); //goto metka;}
//else
QString matr[4][2]; int i,j;
for (i=0; i<2; i++)
for(j=0; j<4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i,j);
matr[i][j]=item->text();
QMessageBox::information(this,"info",matr[i][j]);
}
//metka:
Непонятно в чем именно проблема из этого описания, { } пропущен что ли?
if (a != 0)
{
}
else
{
}
И советую использовать { } даже когда не обязательно (одна инструкция внутри), чтобы избежать лишних ошибок ошибок при дальнейшем редактировании )
Так во всех популярных соглашениях по оформлению кода.
Применил фигурные скобки. Ошибки исчезли, но не могу добиться того, чтобы при наличии незаполненной ячейки таблицы не выполнялось копирование содержимого таблицы в двумерный массив, т.е. мне надо невыполнение в этой ситуации второго цикла.(после else
void MainWindow::on_pushButton_clicked()
{
QString array[4][2];
int a=0;
for(int i=0; i<2; i++)
for(int j=0; j<4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i,j);
if(ui->tableWidget->item(i,j)==0)
{
ui->tableWidget->setItem(i,j, new QTableWidgetItem("The Cell is Empty"));
a=a+1;
}
}
if(a!=0) { QMessageBox::information(this,"New Info","Your table is not full");} //goto metka;}
else
{
QString matr[4][2];
int i,j;
for (i=0; i<2; i++)
for(j=0; j<4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i,j);
matr[i][j]=item->text();
QMessageBox::information(this,"info",matr[i][j]);
}
}
//metka:
}
При первом нажатии на Button показывает пустые ячейки таблицы.
При повторном нажатии на Button, не смотря на то, что оставил ячейки пустыми,
выполняется копирование в массив.
Чтобы не путаться для начала код надо форматировать нормально (отступы в первую очередь).
Например, после засовывания в онлайн-форматер стало так:
void MainWindow::on_pushButton_clicked()
{
QString array[4][2];
int a = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i, j);
if (ui->tableWidget->item(i, j) == 0)
{
ui->tableWidget->setItem(i, j, new QTableWidgetItem("The Cell is Empty"));
a = a + 1;
}
}
if (a != 0)
{
QMessageBox::information(this, "New Info", "Your table is not full");
} // goto metka;}
else
{
QString matr[4][2];
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i, j);
matr[i][j] = item->text();
QMessageBox::information(this, "info", matr[i][j]);
}
}
// metka:
}