C 错误:下标值不是类所需的数组、指针或向量
我必须在课堂上做一个程序,我得到了一个错误: 下标值既不是数组,也不是指针或向量 错误就在这里C 错误:下标值不是类所需的数组、指针或向量,c,arrays,matrix,C,Arrays,Matrix,我必须在课堂上做一个程序,我得到了一个错误: 下标值既不是数组,也不是指针或向量 错误就在这里 if((matriz[i][j]>maximo)&&(esta(vector[nvertices-1],i,j,nvertices)==0)){ 及 我不太清楚错误背后的原因是什么 代码: #包括 #包括 void-camino(int*向量,int矩阵,int-nvertices); int esta(int矢量、int inicio、int fin、int nvertic
if((matriz[i][j]>maximo)&&(esta(vector[nvertices-1],i,j,nvertices)==0)){
及
我不太清楚错误背后的原因是什么
代码:
#包括
#包括
void-camino(int*向量,int矩阵,int-nvertices);
int esta(int矢量、int inicio、int fin、int nvertices);
int main(){
int nvertices;//顶点数
int nconexiones;//有争议的数字
int i,j;//矩阵的参数
int-conex=0;//conexiones的整流器
printf(“引入顶点编号:”;
scanf(“%d”、&n证书);
printf(“介绍争议事项编号:”);
scanf(“%d”、&n存在);
int matad[nvertices][nvertices];//matriz de adyacentcia
对于(i=1;i
- 在
camino()
函数中,matriz
是一个int
- 在
esta()
函数中,vector
也是一个int
只能对数组类型的变量使用数组索引运算符。在二进制运算符周围使用空格,以提高可读性,并将代码缩进四个空格。变量和函数使用英文名称。解决方案是什么,我要说的是,我不知道如何正确执行我从C开始:(@Ayala10:带上你最喜欢的C入门,阅读数组和数组订阅。
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;
}