![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.10.2009
Сообщений: 23
|
![]()
В программе решающей линейные уравнения методом Зейделя допустил ошибку. Когда программа запущена через компилятор Pascal ABS всё нормально, но когда просто через Pascal при введении точности (eps) выполнение прекращается. Подскажите, пожалуйста, как это исправить? И ещё как сделать так, что бы в создаваемый файл записывались три результата, как при выводе на экран, а не один?
program seidel; Uses Crt; var A: array [1..8,1..8] of real; b,x,otv: array [1..8] of real; i,j,n: byte; eps,s1,s2: real; pr: boolean; m_file: text; begin assign(m_file,'rezultat raboti.txt'); write('razmer matrix n='); readln(n); if (n>=2) and (n<=8) then writeln('Dannie vvedini korrektno') else begin writeln('Programma ne prednaznachena dly etih dannih'); exit; end; for i:=1 to n do for j:=1 to n do {Ввод данных} begin write('A[',i,',',j,']='); readln(A[i,j]); end; for i:=1 to n do if a[i,i]=0 then begin writeln('oshibka vvoda'); {Проверка на сходимость} exit; end; for i:=1 to n do begin write('b[',i,']='); readln(b[i]); end; for i:=1 to n do begin for j:=1 to n do begin if i=j then continue; a[i,j]:=-a[i,j]/a[i,i]; {Выражение аргументов} end; b[i]:=b[i]/a[i,i]; a[i,i]:=0; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4:2,' '); writeln(b[i]:4:2); end; for i:=1 to n do begin x[i]:=b[i]; otv[i]:=b[i]; end; write('tochnost='); readln(eps); repeat for i:=1 to n do begin s1 := 0; s2 := 0; For j := 1 to i - 1 do s1 := s1 + a[i, j] * x[j]; {алгоритм решения} For j := i to n do s2 := s2 + a[i, j] * x[j]; x[i]:=s1+s2+b[i]; end; for i:=1 to n do if abs(otv[i]-x[i])<eps then pr:=true else begin pr:=false; break; end; for i:=1 to n do otv[i]:=x[i]; until pr; for i:=1 to n do writeln(x[i]); {Вывод результата} ReWrite(m_file); writeln(m_file, x[i]); Close(m_file); end. --------------------------------------- С уважением, Антон. |
![]() |
![]() |
![]() |
#2 |
Удален
Форумчанин
Регистрация: 02.12.2009
Сообщений: 309
|
![]()
вот я когда-то сдавал в универе такую работу на метод зейделя:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку в программе | k1r1ch | Общие вопросы Delphi | 7 | 04.10.2009 09:36 |
Не могу найти ошибку в программе | lioshenka | Общие вопросы C/C++ | 5 | 24.08.2009 11:38 |
Ищу ошибку в програме на prolog | Komunizm | Помощь студентам | 4 | 15.08.2009 02:17 |
С++ Классы Не пойму ошибку в программе | E.C. | Помощь студентам | 1 | 06.05.2009 14:58 |
НАЙДИТЕ ОШИБКУ В ПРОГРАММЕ | svetah | Помощь студентам | 8 | 03.12.2008 15:19 |