простой вопрос по С/С++ (спасибо!, закрыто)
#include <stdlib.h>
const int ndim = 3;
float my_funk(float x[])
{
return x[0]*x[0] + x[1]*x[1] + x[2]*x[2];
}
void amoeba(float **p, float y[], int ndim, float ftol, float (*funkfloat [] int *nfunk)
{
}
int main(void)
{
int i;
float **p;
float *y;
float ftol = 0.1;
int nfunk;
p = mallocndim + 1) * sizeof(float;
for (i = 0; i < ndim + 1; ++i)
p[i] = malloc(ndim * sizeof(float;
// fill p
y = mallocndim + 1) * sizeof(float;
for (i = 0; i < ndim + 1; ++i)
y[i] = my_funk(p[i]);
amoeba(p, y, ndim, ftol, my_funk, &nfunk);
return 0;
}
p=mallocndim+1)*sizeof(float*;наверно все-таки.
line 7 - error C2440: '=': cannot convert 'void *' to 'float **'
line 9 - error C2440: '=': cannot convert 'void *' to 'float *'
line 11 - error C2440: '=': cannot convert 'void *' to 'float *'
int main(void)
1 {
2 int i;
3 float **p;
4 float *y;
5 float ftol = 0.1;
6 int nfunk;
7 p = mallocndim + 1) * sizeof(float*;
8 for (i = 0; i < ndim + 1; ++i)
9 p[i] = malloc(ndim * sizeof(float;
10 // fill p
11 y = mallocndim + 1) * sizeof(float;
12 for (i = 0; i < ndim + 1; ++i)
13 y[i] = my_funk(p[i]);
14 amoeba(p, y, ndim, ftol, my_funk, &nfunk);
15 return 0;
16 }
В чем может быть проблема?
результат malloc-а всегда надо приводить к нужному типу указателя.
p = (float**)mallocndim + 1) * sizeof(float*;
как?
7: p = (float**)mallocndim + 1) * sizeof(float*;
9: p[i] = (float*)malloc(ndim * sizeof(float;
11: y = (float*)mallocndim + 1) * sizeof(float;
спасибо!
стандартная ошибка: в первом сообщении 2 раза упоминается C, а компилируют, похоже, как C++.
Оставить комментарий
laptew
Я хочу применить готовую функцию, описанную в книге Numerical recipes in C, но в силу того, что новичок в С, не могу этого сделать ) Буду очень признателен за помощь.Функция минимизации функции многих переменных:
Затруднее следующее: не знаю, как правильно написать main чтобы заработала хотя бы на простейшем примере. Конкретно не понятно, как я должен задать funk(x т.е. саму минимизируемую функцию, а также кака определить **p. Пугает наверно то, что очень плохо орудую с указателями.
Если не сложно, приведите возможный пример задания функции для минимизации и последующего использования его в amoeba(...)