На самом деле, "недопустимые операнды в двоичном коде (имеют 'int' и 'int *')" вызваны выражением square[row]*square[row]
, где square[row]
использует только один индекс, поэтому тип int*
пытается получить квадрат. Второй индекс должен иметь тип int
.
Но ...
Почему вы используете temp
в качестве индекса?
Вместо
temp = square[row]*square[row];
printf("%5d %15d\n", square[row][temp]);
должно быть
square[row][0] = square[row][1]*square[row][1];
printf("%5d %15d\n", square[row][1], square[row][0]);
И обратите внимание, что в моем примере square[row][0]
использует (с [0]), но на самом деле я предполагаю, что вы намеревались использовать square[row][0]
для VALUE и square[row][1]
для SQUARED, но вы забыли о факте что в С индексация начинается с 0
. Таким образом, чтобы последняя часть вашего кода работала правильно, измените «входную часть» и перенесите вывод заголовка в таблицу непосредственно перед «выходной частью»
#include <stdio.h>
#define ROWS 5 //number of defined rows
#define COLS 2 //number of defined columns
int main(void)
{
int square[ROWS][COLS];
int row, col, temp;
// "input part"
for(row=0; row<ROWS; row++)
{
// TODO: type this again after reading my aswer above
}
// "output part"
printf("VALUE SQUARED\n");
for(row=0; row<ROWS; row++)
{
for(col=0; col<COLS; col++)
printf("%10d", square[row][col]);
printf("\n");
}
return 0;
}