Значения пользовательского ввода в первом столбце с квадратами, отображаемыми во втором столбце для многомерных массивов

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

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

Значение квадрата 

5 25 4 16 12 144 20 400 1000 1000000 prettyprinted ">     
     
    
    
      #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
");
       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
", square[row][temp]);
       }
      //printing values of an array
      for(row=0; row<ROWS; row++)
          for(col=0; col<COLS; col++)
            printf("	%d", square[row][col]);
      printf("
");

      return 0;
   }

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

square[row]

c,multidimensional-array,integer-arithmetic,

-1

Ответов: 1


1 принят

Фактически, «недействительные операнды в двоичные (имеют« int »и« int * »)», вызванные выражением, tempгде используется только один индекс, поэтому тип метода пытается быть квадратным. Второй индекс должен иметь тип .temp = square[row]*square[row]; printf("%5d %15d ", square[row][temp]);int*int

Но ...

Почему вы используете tempиндекс?

Вместо

square[row][0] = square[row][1]*square[row][1];
printf("%5d %15d
", square[row][1], square[row][0]);

должно быть

square[row][0]

И обратите внимание, что в моем примере square[row][0]используется (с [0]), но на самом деле я предполагаю, что вы намеревались использовать square[row][1]для VALUE и 0для SQUARED, но вы забыли о том, что с начала индексирования C начинается 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
");
   for(row=0; row<ROWS; row++)
   {
      for(col=0; col<COLS; col++)
        printf("%10d", square[row][col]);
      printf("
");
   }

   return 0;
}
с, многомерный-массив, целое число, арифметика,
Похожие вопросы