![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
исходники давай. мне тоже интересно стало
а... и проверь сделать как я написал выше. Последний раз редактировалось lennon; 03.11.2009 в 17:17. |
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 19.10.2009
Сообщений: 15
|
![]()
теперь просто создаю новый массив чисел
... double* e = new double[n]; ... и тоже ошибка прямо на месте этой записи...ща застрелюсь |
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 19.10.2009
Сообщений: 15
|
![]()
ох не хотел я этого делать...слишком много вопросов будет..
вот: #include <iostream> #include <string> #include <stdlib> #include <vector> #include <malloc> using namespace std; double multiply(double* x, int i, int j){ if(i != 0) return (x[j] - x[i - 1]) * multiply(x, i - 1, j); else return 1.0; } double* calcb(double* x, double* y, int n){ double* b = new double[n]; for(int k = 1; k < n; k++) b[k] = 0.0; b[0] = y[0]; for(int i = 1; i < n; i++) for(int k = 0; k < i; k++){ double l = (double)i; b[i] = b[i] + (y[i]/l - b[k] * multiply(x, k, i))/multiply(x, i, i); } return b; } double fact(int n){ if(n != 1) return n * fact(n - 1); else return 1; } void calcpl(double* x, int n, int i, int p, int s, int r){ static int k = -1; static int m = p - 1; static double* z = new double[s]; int j; if(k < p) k++; if(k < p){ for(i; i < (n - p + k + 1); i++){ z[k] = x[i] * (-1.0); calcpl(x, n, i + 1, p, s, r); } k--; } else{ k--; m++; z[m] = 1.0; for(j = 0; j <= k; j++){ z[m] = z[m] * z[j]; } x[r] = x[r] + z[m]; } } double degree(double a, int i){ if(i == 0) return 1.0; if(i != 1) return a * degree(a, i - 1); else return a; } double derivative(double* coeffx, int n, double x){ double f; for(int k = 1; k++; k < n){ f = f + k * coeffx[k] * degree(x, k - 1); } return f; } int main(){ int n; n = 7; // cin >> n; double* x = new double[n + 1]; x[0] = 0.52360; x[1] = 0.87267; x[2] = 1.22173; x[3] = 1.57080; x[4] = 1.91986; x[5] = 2.26893; x[6] = 2.61799; // for(int i = 0; i < n; i++) // cin >> idx[i]; double* y = new double[n]; y[0] = 0.00004; y[1] = 0.00068; y[2] = 0.00518; y[3] = 0.02554; y[4] = 0.09624; y[5] = 0.30046; y[6] = 0.81548; // for(int i = 0; i < n; i++) // cin >> idy[i]; double* b = calcb(x, y, n); for(int k = 0; k < n; k++) cout << b[k] << endl; double* st = new double[n*(n + 1)/2]; int k; st[0] = b[0]; st[1] = b[1]; st[2] = b[1] * x[0] * (-1); k = 2; double* coeffx = new double[n]; for(int i = 2; i < n; i++){ k++; st[k] = b[i]; k++; st[k] = 0.0; for(int j = 0; j < i; j++) st[k] = st[k] + b[i] * x[j] * (-1); if(i > 2){ for(int p = 2; p < i; p++){ k++; int s = fact(i)/fact(i - p)/fact(p) + p; x[n] = 0.0; calcpl(x, i, 0, p, s, n); st[k] = b[i] * x[n]; } } k++; st[k] = b[i]; for(int j = 0; j < i; j++) st[k] = st[k] * x[j] * (-1); } for(int l = 0; l < n*(n + 1)/2; l++) cout << "st[" << l << "] = " << st[l] << endl; cout << "y = " << endl; int ds = 1, m = 0, t; for(int k = 0; k < n; k++){ t = ds + 1; coeffx[k] = 0.0; for(int s = m; s < n*(n + 1)/2; s = s + ds){ coeffx[k] = coeffx[k] + st[s]; ds = ds + 1; } ds = t; m = m + ds - 1; if((k > 0)&&(coeffx[k - 1] != 0)&&(coeffx[k] != 0.0)) cout << " +" << endl; if(coeffx[k] != 0) cout << "\t" << "x^" << k << " * " << coeffx[k] << endl; } double** a = new double*[n]; for(int i = 0; i < n; i++){ a[i] = new double[4]; for(int j = 0; j < 5; j++){ a[i][j] = 0.0; } } delete []x; delete []y; delete []b; delete []st; delete []coeffx; cout << "press any key: "; cin >> n; return 0; } |
![]() |
![]() |
![]() |
#14 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
да.. . не читабельно, но я разберуся.. мне тоэж интересна
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 19.10.2009
Сообщений: 15
|
![]()
спасибо...я походу вдвойне ламер - я пишу с табуляцией,а сюда вставил - вон что вышло.
|
![]() |
![]() |
![]() |
#16 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
вообщем ошибка возникает из за выхода за пределы массива. Я незнаю что делает у тебя эта программа, но покажу в каком месте нужно исправить.
В функции calcpl, которая вызываеться здесь Код:
Код:
что я тебе предлогаю сделать? в этом месте static double* z = new double[s]; сделать так static double* z = new double[s+200]; это канешно не проффесионально ) но просто у тебя неверный алгоритм. или решай сам где расчеты неверны. ошибкку я указал. и ешо, следующий кусок кода ненужен Код:
Добавь отзыв =) Последний раз редактировалось lennon; 03.11.2009 в 18:59. |
![]() |
![]() |
![]() |
#17 |
Пользователь
Регистрация: 19.10.2009
Сообщений: 15
|
![]()
уау!! спасибо большое, lennon!! к кому не обращался - все не могут понять,да и кому интересно разбираться в чьей-то проге,ногой написанной). оч выручил, спасибо
п.с..добавил) |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
простой код...почему выдает ошибку access violation at address!?? | sleevman | Помощь студентам | 2 | 28.10.2009 20:47 |
Access violation at address при использовании DLL | spamer | Общие вопросы Delphi | 4 | 27.08.2009 22:19 |
Access violation at address при выполнении end | elsin | Общие вопросы Delphi | 5 | 30.01.2009 10:29 |
access violation при создании обьекта | goog | Общие вопросы Delphi | 12 | 11.01.2009 20:33 |
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. | Fen1x | Общие вопросы Delphi | 8 | 13.10.2007 20:13 |