Пользовательские значения ввода в первом столбце с квадратами, отображаемыми во втором столбце для многомерных массивов - PullRequest
0 голосов
/ 24 июня 2018

Требуется небольшая помощь относительно многомерных массивов на языке Си. Я пытаюсь вычислить квадрат каждого значения, введенного пользователем. Однако я хочу, чтобы и значение, и результаты отображались как выходные данные.

Я ищу что-то подобное в этом формате только для определенных строк и столбцов:

Value Squared

5     25
4     16
12    144
20    400
1000  1000000

До сих пор я придумал следующий код, но он выдает ошибку - «недопустимые операнды в двоичном (имеют« int »и« int * »):

    #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;
       printf("VALUE       SQUARED\n");
       for(row=0; row<ROWS; row++) 
       {
       //one row at a time
           printf("Enter value for square[%d]: ", row);
           scanf("%d", &square[row][1]);     //only first column with user-input
           temp = square[row]*square[row];   //compute square of each value
           printf("%5d %15d\n", square[row][temp]);
       }
      //printing values of an array
      for(row=0; row<ROWS; row++)
          for(col=0; col<COLS; col++)
            printf("\t%d", square[row][col]);
      printf("\n");

      return 0;
   }

1 Ответ

0 голосов
/ 24 июня 2018

На самом деле, "недопустимые операнды в двоичном коде (имеют '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;
}
...