Ошибка компиляции "malloc: идентификатор не найден" - C (СИ)
Формулировка задачи:
Нужно чтобы пользователь сам вводил элементы a,b,c,d,k.(и эти элементы должны быть только цифрами. )
Выводит такую ошибку "error C3861: malloc: идентификатор не найден". Помогите, пожалуйста.
Листинг программы
- #include "stdio.h"
- #include <malloc.h>
- #include "stdafx.h"
- #define n 2
- #define V 100
- float f (float x, float y)
- {float a, b, c, k, d;
- return a*x+b*y+c*(x*x)+d*(y*y)+k;
- }
- void main ()
- {
- float tochnost = 0.000000000001;
- float X[n + 5][n];
- float E;
- float *a,*b,*c,*d,*k;
- X[0][0] = 0; X[0][1] = 1; X[1][0] = 1;
- X[1][1] = 4; X[2][0] = 2; X[2][1] = 5;
- int A, B, C,flag = 0, flag2=0;
- int kolichestvo = 0;
- printf("hotite yvidet iteracii? da=Y,Net=X\n");
- char W;
- scanf("%c",&W);
- switch(W)
- { case 'Y':
- { flag=1;flag2=1; break; }
- case 'X':
- { flag2=1; break; }
- }
- defaulf:
- {printf("Oshibka\n ");}
- do
- {
- a = (float *)malloc(sizeof(V) ) ;
- b =(float *) malloc(sizeof(V) ) ;
- c =(float *) malloc(sizeof(V) ) ;
- d =(float *) malloc(sizeof(V) ) ;
- k =(float *) malloc(sizeof(V) ) ;
- printf("Vvedite a=");
- scanf("%f",&a[V]);
- printf("Vvedite b=");
- scanf("%f",&b[V]);
- printf("Vvedite c=");
- scanf("%f",&c[V]);
- printf("Vvedite d=");
- scanf("%f",&d[V]);
- printf("Vvedite k=");
- scanf("%f",&k[V]);
- kolichestvo++;
- A = 0; B = 0; C = 0;
- float Maxsimum = f(X[0][0], X[0][1]);
- float Minimum = f(X[0][0], X[0][1]);
- for (int D = 1; D <= n; D ++)
- {
- if (f(X[D][0], X[D][1]) < Minimum)
- {
- Minimum = f(X[D][0], X[D][1]);
- B = D;
- }
- if (f(X[D][0], X[D][1]) > Maxsimum)
- {
- Maxsimum = f(X[D][0], X[D][1]);
- A = D;
- }
- }
- Maxsimum = f(X[0][0], X[0][1]);
- for (int D = 1; D <= n; D ++)
- {
- if ((f(X[D][0], X[D][1]) > Maxsimum) && (D != A))
- {
- Maxsimum = f(X[D][0], X[D][1]);
- C = D;
- }
- }
- X[n + 1][0] = (X[0][0] + X[1][0] + X[2][0] - X[A][0]) / n;
- X[n + 1][1] = (X[0][1] + X[1][1] + X[2][1] - X[A][1]) / n;
- for (int i = 0; i < n; i++)
- X[n + 2][i] = 2 * X[n + 1][i] - X[A][i];
- if (f(X[n + 2][0], X[n + 2][1]) < f(X[B][0], X[B][1]))
- {
- X[n + 3][0] = X[n + 1][0] + 2 * (X[n + 2][0] - X[n + 1][0]);
- X[n + 3][1] = X[n + 1][1] + 2 * (X[n + 2][1] - X[n + 1][1]);
- if (f(X[n + 3][0], X[n + 3][1]) < f(X[B][0], X[B][1]))
- {
- X[A][0] = X[n + 3][0];
- X[A][1] = X[n + 3][1];
- }
- else
- {
- X[A][0] = X[n + 2][0];
- X[A][1] = X[n + 2][1];
- }
- }
- else
- if (f(X[n + 2][0], X[n + 2][1]) > f(X[C][0], X[C][1]))
- {
- if (!(f(X[n + 2][0], X[n + 2][1]) > f(X[A][0], X[A][1])))
- {
- X[A][0] = X[n + 2][0];
- X[A][1] = X[n + 2][1];
- }
- X[n + 4][0] = X[n + 1][0] + 0.5 * (X[A][0] - X[n + 1][0]);
- X[n + 4][1] = X[n + 1][1] + 0.5 * (X[A][1] - X[n + 1][1]);
- if (!(f(X[n + 4][0], X[n + 4][1]) > f(X[A][0], X[A][1])))
- {
- X[A][0] = X[n + 4][0];
- X[A][1] = X[n + 4][1];
- }
- else
- {
- for (int D = 0; D < n; D++)
- {
- X[D][0] = X[D][0] + 0.5 * (X[D][0] - X[B][0]);
- X[D][1] = X[D][1] + 0.5 * (X[D][1] - X[B][1]);
- }
- }
- }
- else
- {
- X[A][0] = X[n + 2][0];
- X[A][1] = X[n + 2][1];
- }
- float E1 = 0, E2 = 0;
- for (int D = 0; D < n + 1; D++)
- {
- E1 += f(X[D][0], X[D][1]);
- E2 += f(X[D][0], X[D][1]) * f(X[D][0], X[D][1]);
- }
- E = E2 - E1 * E1 / (n + 1);
- E /= (n + 1);
- if (flag==1) {printf("%.4f %.4f\n", X[0][0], X[0][1]);}
- if (flag==1) {printf("%.4f %.4f\n", X[1][0], X[1][1]);}
- if (flag==1) {printf("%.4f %.4f\n", X[2][0], X[2][1]);}
- Minimum = f(X[0][0], X[0][1]);
- for (int D = 1; D <= n; D++)
- {
- if (f(X[D][0], X[D][1]) < Minimum)
- {
- Minimum = f(X[D][0], X[D][1]);
- B = D;
- }
- }
- if (flag==1){ printf("f = %.4f\n" , f(X[B][0], X[B][1]));}
- if (flag==1) {printf(" \n\n\n");}
- }
- while (E > tochnost);
- if (flag2==1) printf("X = %.4f\n", X[n+1][0]);
- if (flag2==1)printf("Y = %.4f\n", X[n+1][1]);
- if (flag2==1)printf("Minimum fynkcii = %.4f\n",f(X[n + 1][0], X[n + 1][1]));
- if (flag2==1)printf("Vsego iteraciy = %d\n", kolichestvo);
- getchar();
- getchar();
- }
Решение задачи: «Ошибка компиляции "malloc: идентификатор не найден"»
textual
Листинг программы
- a = (float *)malloc(sizeof(V) ) ;
- b =(float *) malloc(sizeof(V) ) ;
- c =(float *) malloc(sizeof(V) ) ;
- d =(float *) malloc(sizeof(V) ) ;
- k =(float *) malloc(sizeof(V) ) ;
- printf("Vvedite a=");
- scanf("%f",&a[V]);
- printf("Vvedite b=");
- scanf("%f",&b[V]);
Объяснение кода листинга программы
- Код выделяет память под массив из 5 элементов, используя функцию malloc.
- Переменные a, b, c, d и k используются для хранения адресов выделенных блоков памяти.
- Значение V используется в качестве размера массива при выделении памяти.
- Используется функция scanf для ввода значений в элементы массива a и b.
- Ошибка компиляции
malloc: идентификатор не найден
может быть связана с отсутствием определения переменной V.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д