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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 12:35   #1
afirat
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 32
По умолчанию Не могу создать меню и решить одну задачку

Сдавать работу нужно срочно, времени в обрез.
Задали написать решение линейных уравнений различными методами, методом Гаусса уже есть, вот код:
Код:
Program metod gaussa;
Const
 Nmax=20;
type
 VectorType = ARRAY[1..Nmax] OF Real;
 MatrixType = ARRAY[1..Nmax] OF VectorType;
function Gauss(n:Byte;A:MatrixType;B:VectorType;var x:VectorType):boolean;
var
 i,j,k,iMax:Byte;
 tmp,Max,d:Real;
 v:VectorType;
begin
 for k:=1 to n-1 do
 begin
  Max:=Abs(A[k,k]);
  iMax:=k;
  for i:=k+1 to n do
   if Abs(A[i,k])>Max then
   begin
    Max:=Abs(A[i,k]);
    iMax:=i;
   end;
  IF Max=0 THEN
  begin
   Gauss:=false;
   Exit
  end;
 IF iMax<>k then
 begin
  Tmp:=B[k];
  B[k]:=B[iMax];
  B[iMax]:=Tmp;
  v:=A[k];
  A[k]:=A[iMax];
  A[iMax]:=v
 end;
 for i:=k+1 to n do
  begin
   d:=A[i,k]/A[k,k];
   for j:=k to n do
    A[i,j]:=A[i,j]-d*A[k,j];
    B[i]:=B[i]-d*B[k];
  end;
 end;
 if A[n,n]=0 then
 begin
  Gauss:=false;
  Exit
 end;
 { ObPATHblu XoD }
 X[n]:=B[n]/A[n,n];
 for i:=n-1 downto 1 do
 begin
  tmp:=B[i];
  for j:=i+1 to n do
   tmp:=tmp-A[i,j]*X[j];
  X[i]:=tmp/A[i,i]
 end;
 Gauss:=true
end;
var
 n,i,j:Byte;
 a:MatrixType;
 b,x:VectorType;
begin
 Write('Vvedite razmery matricy');
 READ(n);
 Writeln('Rasshirennaya matrica');
 for i:=1 to n do
 begin
  for j:=1 to n do
  begin
   write('A[' ,i, ',' ,j, ']=');
   readln(a[i,j]);
  end;
  Write('b[' ,i, ']=');
  readln(b[i]);
 end;
 if not Gauss(n,a,b,x) then
 begin
  Writeln('Matrica vyrozhdena');
  Halt;
 end;
 Writeln('Reshenie sistemy');
 for i:=1 to n do
 begin
  for j:=1 to n do
   b[i]:=b[i]-a[i,j]*x[j];
 Writeln(x[i]:12,' ',b[i]:12)
 end;
 readln
end.
Вот, осталось написать еще хотя бы один или 2 метода (Крамера, матричный и т.д). И соответственно к каждому методу - пункт меню должен быть. вообщем человек запускает программу и видит такие пункты: "Метод Гаусса" (код есть, выше), "Метод Крамера" (любой метод подойдет), "Выход". И разумееться при выборе пункта выполняються эти задачи.
Помоигте пожалуйста сделать это. Сам я ну никак не справлюсь.
ЗЫ- в паскале я вообще ноль, поэтому мне желательно скинуть уже готовый код со всеми пунктами и задачами, а то сопоставить каждое я сам не смогу. Заранее спасибо всем, кто хоть как-то поможет.
afirat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НЕ могу создать меню drcoxer Помощь студентам 0 31.03.2010 18:52
Не могу решить эту задачку: Driver_09 Помощь студентам 7 12.10.2009 10:01
Помогите решить одну задачку! Никак не врубаюсь. На завтра надо. Сделайте подарок на день рождения:) Женек Помощь студентам 2 01.10.2008 19:48
Помогите пожалуйста решить одну задачку в Паскале...Заранее спасибо VisTBacK Помощь студентам 2 29.09.2008 14:57
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44