| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Pascal->VBA] Преобразование програмного КОДА |
| Автор: Pitbul 22.5.2008, 19:20 |
| Добрый день, помогите пожалуйста перевести програму с ПАСКАЛЯ в VBA. В этой проге реализован метод ИТЕРАЦИЙ для СЛАУ, в эксэле надо, что бы этот макрос работал аналогично. Спасибо Program metod_iteracia; uses crt; const maxn=10; type matrix=array [1..maxn,1..maxn] of real; vector=array [1..maxn] of real; var a:matrix; b,x:vector; i,n,k:integer; procedure DiaG(a:matrix; b:vector; var x:vector); {процедура пошуку початкового наближення} var i:integer; begin for i:=1 to n do x[i]:=b[i]/abs(a[i,i]); end; procedure SymmA(a:matrix; b:vector; var t:vector); {процедура пошуку суми елементів рівняння } var i,j:integer; begin for i:=1 to n do begin t[i]:=0; for j:=1 to n do t[i]:=t[i]+(a[i,j]*b[j]); end; end; procedure MinusveC(a:vector; b:vector; var t:vector); {процедура пошуку різниці вектора і знайденого значення} var i:integer; begin for i:=1 to n do t[i]:=a[i]-b[i] end; procedure IteraciA(a:matrix; b:vector; var y:vector); {процедура розрахунків методом ітерації} const m=100; var i,j:integer; d:matrix; buf,buf1 : vector; begin for i:= 1 to n do begin for j:=1 to n do d[i,j]:=0; d[i,i]:=a[i,i]; y[i]:=0 end; for i:= 1 to m do begin SymmA(a,y,buf); MinusveC(buf,b,buf); SymmA(d,y,buf1); MinusveC(buf1,buf,buf); DiaG(d,buf,y); end; end; procedure RivN(A: Matrix; b: Vector); {процедура виводу на екран системи заданих рівнянь} var i,j:integer; begin writeln('zadana systema rivnan'); writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='); for i:=1 to N do begin for j:=1 to N do begin write('+','(',A[i,j]:2:2,')',' * X[',j,'] '); end; writeln(' = ',b[i]:2:2); end; writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='); writeln; end; procedure VvodMatriX(var A: Matrix; var b: Vector); {процедура введення коефіцієнтів системи рівнянь} var i,j:integer; begin for i:=1 to N do begin for j:=1 to N do begin write('A[',i,'.',j,'] = '); read(A[i,j]); end; write('b[',i,'] = '); readln(b[i]); end; end; {основна програма} begin clrscr; writeln('vvedit n-rozmirnist matruci'); readln(n); VvodMatriX(a,b); RivN(a,b); writeln('pochatkove nabligina'); for i:=1 to n do begin x[i]:=b[i]/abs(a[i,i]); writeln(' x[',i,']=',x[i]:3:4); x[i]:=0; end; writeln; IteraciA(a,b,x); writeln('Rishenie metodom iteracii'); for i:=1 to n do writeln(' X[',I,']=',x[i]:3:3,' '); writeln; readln; end. |
| Автор: volvo877 23.5.2008, 10:57 | ||
Ты думаешь? По-моему это просто новый вариант генератора случайных чисел
Так что ты сначала программу исправь, а потом уже будешь переносить... |
| Автор: Akina 23.5.2008, 11:47 |
| В Экселе есть надстройка "Поиск решений", которая СЛАУ щёлкает как орехи. И никаких макросов не надо. |
| Автор: Pitbul 23.5.2008, 19:23 |
| Akina Мне надо курсач сдать, а не решать примеры=) volvo877 Как это может быть гениратор случайных чисел, если там РЕНДОМ нигде не упоминается? Добавлено через 10 минут и 18 секунд Ну, окей, если эта прога не правильно написана на паскале, то может кто то поможет найти ее в Бэйсике? Ведь это же одна из базовых лаб во всем СНГ. Тут наверняка есть и люди которые хорошо знают и математику и информатику |
| Автор: Pitbul 24.5.2008, 14:39 |
| Знатоки, помогите плиз, найти решение задачи: МЕТОД ИТЕРАЦИЙ для систем линейных алгебраических уравнений на языке VBA |