я кодирование то, что должно найти оптимальный ответ на следующий вопрос:«ошибка: индексируются значение ни массив, ни указатель, ни вектор»
You have a vector of ints that you have to put in decrescent order by doing the "flip" operation, that is, given an i position in the vector of size n you should switch the values of i and n-1, the values of i+1 and n-2 and so on and so forth. The goal is to find and optimal way to put the vector in order, that is, with the minimal number of flips
я решил использовать A * algorithim найти ответ, так как это важно, чтобы найти оптимальный ответ, и хранить всю информацию, мне нужно, я выбираю использовать следующую структуру:
typedef struct{
int *v, *flips,g, h;
} node;
, в котором v будет состояние раствора, переворачивает бы сохраните мой выбор, g сохранит значение функции g, а h - значение эвристического ,
Так, чтобы написать программу, которую я сделал вектор типа узла как в:
estados=malloc(n*sizeof(node));
и идея состояла в том, чтобы использовать каждую позицию вектора узла для сохранения состояния, так что можно было бы сравнить и расширена и т.д. по большей части компилятор не жалуетесь много, но в этих функциях:
int funcaoh(node estados,int n,int goal[], int pos){
int cont=0, i;
for(i=0;i<n;i++){
if(estados[pos].v[i]!=goal[i]){
cont++;
}
}
return (cont/2);
}
void criaNode(node x[], int n, int pos){
int i;
x[pos].v =malloc(n*sizeof(int));
x[pos].flips =malloc(n*sizeof(int));
for(i=0;i<n;i++){
x[pos].flips[i]=-1;
x[pos].v[i]=-1;
}
x[pos].h=0;
x[pos].g=0;
return;
}
Я получаю ошибку «ошибка: индексируются значение не является ни массивом, ни указателя, ни вектор» в заявлении, если функция funcaoh ion и «предупреждение: несовместимое неявное объявление встроенной функции« malloc »[включено по умолчанию]» предупреждение в первом malloc заявление, но не на втором, как ни странно. То же самое происходит и в нескольких подобных примерах кода. Я подозреваю, что предупреждающий может мне просто использовать malloc не так, потому что я получаю такое же предупреждение в других местах, которые действительно не должны быть проблемой, например, в :
Но главное - заставить вектор struct работать, потому что он, очевидно, является неотъемлемой частью успеха программы. Если бы я мог догадаться, я полагаю, что это связано с использованием структуры как вектора, может быть, она не работает так, как я думаю, что она делает? Хотя я не знаю.
P.S. Я бразилец, поэтому некоторые части кода написаны на португальском языке, в основном просто имена переменных и функций, при необходимости я могу их перевести.
Обратите внимание, что стандарт C не использует термин «вектор», но более основной «массив». – Olaf
Как вы сами признались, было бы более последовательно давать обе функции и переменные в вашем коде значащие английские имена. Я также не являюсь носителем английского языка, и не программисты вокруг меня в Париже, но я соблюдаю это правило в своей компании и во всех других местах, за которыми я отвечал. – chqrlie