Я получаю следующую ошибку: «Индекс массива не является целым числом». но массив имеет тип int. что я делаю не так? - PullRequest
0 голосов
/ 20 мая 2019

Функция отклонения выдает мне следующую ошибку: «Индекс массива не является целым числом».Если вы можете помочь мне найти причину ошибки, я буду признателен.

    #ifdef _MSC_VER
    #define _CRT_SECURE_NO_WARNINGS
    #endif
    #include "stdio.h"
    #include "stdlib.h"
    #include <stdbool.h>

    //----<< To store matrix cell cordinates >>-------------------------- 
    struct point
    {
      double x;
      double y;
    };
    typedef struct point Point;

    //---<< A Data Structure for queue used in robot_maze  >>---------------------
    struct queueNode 
    { 
        Point pt;  // The cordinates of a cell 
        int dist;  // cell's distance of from the source 
    };

    //----<< check whether given cell (row, col) is a valid cell or not >>--------
    bool isValid(int row, int col, int ROW, int COL) 
    { 
        // return true if row number and column number is in range 
        return (row >= 0) && (row < ROW) && (col >= 0) && (col < COL); 
    } 

    //----------------------------------------------------------------------------
    int robot_maze()
    {
        int solution = -1;
        int ROW, COL, i,j;
        Point src, dest;
        scanf("%d", &ROW);
        scanf("%d", &COL);
        scanf("%d %d",&src.x,&src.y);
        scanf("%d %d",&dest.x,&dest.y);
        int arr[ROW][COL],visited[ROW][COL];

        for (i = 0;i < ROW;i++)
        for (j = 0;j < COL;j++)
        {
            scanf("%d", &arr[i][j]);
            visited[i][j] = -1;
        };

        // check both source and destination cell of the matrix have value 0 
        //if (arr[src.x][src.y] || arr[dest.x][dest.y]) 
        //    return -1; 

        return solution;
    }

Оператор "if" (за //) должен просто работать и вводиться, если оба значения равны 0. Заметьте, что яопределила 2D матрицу "arr" как тип int.почему я получаю эту ошибку?

проблема, которую я пытаюсь решить, это проблема «Кратчайшего пути в двоичном лабиринте», но я застрял в начале.

1 Ответ

1 голос
/ 20 мая 2019

Внимательно прочитайте ошибку: в ней указано Array subscript is not an integer.Данная ошибка связана со значениями, используемыми для доступа к элементам массива.

src.x, src.y, dest.x и dest.y имеют тип double.Вам нужно переопределить point как:

struct point
{
  int x;
  int y;
};

Или, если у вас есть для использования double, вы можете привести к int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...