Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2012, 19:20   #1
Mystery08
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 12
По умолчанию Ошибка в Паскале

Помогите!!! Что здесь не так???
Код:
Program Metod_Gauss;
Const n=12;
A:array[1..n,1..n] of real=((1,0,0,0,0,0,0,0,0,0,0,0),(0,0,0,0,1,6,36,216,0,0,0,0),(0,0,0,0,0,0,0,0,1,14,196,2744),
(1,6,36,216,0,0,0,0,0,0,0,0),(0,0,0,0,1,14,196,2744,0,0,0,0),(0,0,0,0,0,0,0,0,1,20,400,8000),
(0,-1,-12,108,0,1,12,108,0,0,0,0),(0,0,0,0,0,-1,-28,-588,0,1,28,588),(0,0,-2,-36,0,0,2,36,0,0,0,0),
(0,0,0,0,0,0,-2,-84,0,0,2,84),(0,0,2,0,0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0,0,0,2,120));
B:array[1..n] of real=(0.033,-0.118,-1.904,-0.118,-1.904,-5.616,0,0,0,0,0,0);
type matrtype=array[1..n,1..n+1] of real;
Var
i,j:byte;
matr:matrtype;
Procedure Gausse(var matr:matrtype; n:byte);
var i,j,k:byte;
begin
  for i:=1 to n-1 do
  for j:=i+1 to n do
  for k:=n+1 downto i do
  matr[j,k]:=matr[j,k]-matr[i,k]/matr[i,i]*matr[j,i];
  for i:=n downto 1 do
  begin
   for j:=i+1 to n do
   Matr[i,n+1]:=Matr[i,n+1]-Matr[i,j]*Matr[j,n+1];
   Matr[i,n+1]:=Matr[i,n+1]/Matr[i,i];
   end;
   end;
   begin
    Writeln('Решение системы из n линейных уравнений');
    for i:=1 to n do
    begin
    writeln('Вводим уравнение i');
    for j:=1 to n do
    begin
    write('A[',i,',',j,']=');
   end;
  Write('B[',i,']=');
  end;
  writeln('Cистема линейных уравнений');
  for i:=1 to n do
  begin
  for j:=1 to n do
  write(A[i,j]:5:3);
  writeln(B[i]:5:3);
  end;
  for i:=1 to n do
  begin
  for j:=1 to n do
  matr[i,j]:=A[i,j];
  matr[i,n+1]:=B[i];
  end;
  Gausse(matr,n);
  writeln('Решение системы уравнений');
  for i:=1 to n do
  writeln('C',i,'=',matr[i,n+1]:5:3);
  end.
выводит ошибку: вещественное деление на 0 (метод Гаусса.pas, строка 18)
Mystery08 вне форума Ответить с цитированием
Старый 27.12.2012, 19:22   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

дык так и есть)
Код:
matr[j,k]:=matr[j,k]-matr[i,k]/matr[i,i]*matr[j,i];
например элемент A[2][2]
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 27.12.2012, 19:33   #3
Mystery08
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 12
По умолчанию

А как мне исправить программу, чтоб выдавало без ошибки?)
Mystery08 вне форума Ответить с цитированием
Старый 27.12.2012, 20:43   #4
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

О Господи! Это Вы писали? Мда, это не исправить... Особенно константы - гениальное решение. Только вручную, только хардкор!
Код:
 {Метод Гаусса}
uses
  crt;

const
  n = 3;

var
  i, j, k: integer;
  a: array
  [1..n, 1..n] of
  real;
  b: array[1..n] of
  real;
  x: array[1..n] of
  real;
  h: real;

begin
  clrscr;
  for i := 1 to n do
  begin
    writeln
    ('Уравнение:', i);
    for j := 1 to n do
    begin
      write('Введите A(', i, ',', j, '):');
      readln(a[i, j]);
    end;
    write('Свободный член: B(', i, '):');
    readln(b[i]);
  end;
  for i := 1 to n do
  begin
    for j := i + 1 to n
    do
    begin
      a[j, i] := -a[j, i] / a
      [i, i];
      for k := i + 1 to n
        do 
        a[j, k] := a
        [j, k] + a[j, i] * a
        [i, k];
      b[j] := b[j] + a
      [j, i] * b[i];
    end;
  end;
  x[n] := b[n] / a
  [n, n];
  for i := n - 1
  downto 1 do
  begin
    h := b[i];
    for j := I + 1 to n
      do
      h := h - x[j] * a[i, j];
    x[i] := h / a[i, i];
  end;
  writeln('Решение системы:');
  for i := 1 to n do
    writeln('X (', i, ')=', x[i]:3:5);
  readln;
end.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут

Последний раз редактировалось Izobara; 27.12.2012 в 23:35.
Izobara вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в паскале Fryg Паскаль, Turbo Pascal, PascalABC.NET 12 05.07.2011 19:43
ошибка в паскале! Tifa Помощь студентам 1 29.01.2011 20:09
Ошибка в паскале! Firea Помощь студентам 1 27.01.2011 00:05
ошибка в паскале T_U_S_U_A Помощь студентам 2 21.01.2011 19:50
ошибка # 205 в Паскале.. ZloyGeniy99 Помощь студентам 9 10.02.2010 23:12