【问题标题】:error: subscripted value is neither array nor pointer nor vector Need for class错误:下标值既不是数组也不是指针也不是向量需要类
【发布时间】:2015-11-27 15:57:22
【问题描述】:

我必须在课堂上做一个程序,我得到了那个错误:

下标值既不是数组也不是指针也不是向量。

错误在

if((matriz[i][j]>maximo)&&(esta(vector[nvertices-1],i,j,nvertices)==0)){ 

和

siguiente=vector[i];

我不太清楚错误背后的原因。

代码:

#include<stdlib.h>
#include<stdio.h>

void camino(int* vector,int matriz,int nvertices);
int esta(int vector,int inicio,int fin,int nvertices);

int main(){

int nvertices;                                                      //numero de vertices
int nconexiones;                                                    //numero de conexiones disponibles
int i,j;                                                            //indices para recorrer la matriz
int conex = 0;                                                      //rectificador de conexiones

printf("Introduce el numero de vertices: ");
scanf("%d",&nvertices);
printf("Introduce el numero de conexiones disponibles: ");
scanf("%d",&nconexiones);
int matad[nvertices][nvertices];                                    //matriz de adyacencia
for(i=1;i<=nvertices;i++){                                          //Rellenar la matriz con ceros, por defecto no hay ninguna conexion
    for(j=1;j<=nvertices;j++){
        matad[i][j]=0;
    }
}

printf("Introduce las capacidades.Si no existe introduce 0:\n");
for(i=1;i<=nvertices;i++){                                          //Introducimos las capacidades
    for(j=1+i;j<=nvertices;j++){
        if(conex<nconexiones){
            printf("Ciudad %d - Ciudad %d: ",i,j);
            scanf("%d",&matad[i][j]);
            matad[j][i]=matad[i][j];
            conex++;
        }
    }
}

int caminos[nvertices-1];                                           //Variable que almacena el camino (como una lista de vertices)
camino(&caminos[nvertices-1],matad[nvertices][nvertices],nvertices);//Llamada a la funcion camino

return 1;
}

void camino(int* vector,int matriz,int nvertices){
int i,j;                                                                            //Indices para recorrer la matriz de adyacencia
for(i=1;i<=nvertices;i++){                                                          //-- Explicacion --
    int maximo = 0;                                                                 //Vamos a empezar por el vertice 1, bucamos el camino de mayor
    for(j=1;j<=nvertices;j++){                                                      //capacidad, una vez lo tenemos comprobamos si esa union 1->X esta
        if((matriz[i][j]>maximo)&&(esta(vector[nvertices-1],i,j,nvertices)==0)){    //o no esta en nuestra lista mediante la funcion    esta(...), si esta
            maximo=j;                                                               //lo añadimos y ahora partimos desde el vertice X -> Y, en caso 
        }                                                                           //contrario hemos acabado.
    }                                                                               //------------------
}                                                                                   //La variable maximo es utilizada para ver que vertice tiene la mayor                                                                   
}                                                                                       //capacidad

int esta(int vector,int inicio,int fin,int nvertices){
int anterior=0;
int siguiente=0;
int encontrado=0;
int i;
for(i=1;i<=nvertices-1;i++){
    anterior=siguiente;
    siguiente=vector[i];
    if((inicio==anterior)&&(fin==siguiente)){
        encontrado=1;
    }
}
return encontrado;
}

【问题讨论】:

  • 在二元运算符周围使用空格以提高可读性并使用四个空格缩进代码。为变量和函数使用英文名称。

标签: c arrays matrix


【解决方案1】:
  • 在您的 camino() 函数中,matriz 是一个 int。

  • 在您的 esta() 函数中,vector 也是一个 int。

您只能对数组类型变量使用数组索引运算符。

【讨论】:

  • 解决方案是什么,我必须说什么,我不知道如何正确地做我开始使用 C :(
  • @Ayala10:拿起你最喜欢的 C 入门书,阅读数组和数组订阅。
猜你喜欢
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
相关资源
最近更新 更多