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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 20:29   #1
Klik_1602
Пользователь
 
Аватар для Klik_1602
 
Регистрация: 06.09.2010
Сообщений: 51
Вопрос Ошибка 26..как её ипсправить в данной программе

Доброго времени суток, всем, помогите в поиске исправления ошибки, не работает процедура, при компеляции выскакивает ошибка 23: т е error 26: Type mismatch...очень нужно, помогите, плиз!!
Код:
uses
 crt;
type
 matr=array[1..10,1..10] of integer;
 vekt=array[1..10] of integer;
var
 a:matr;
 b,x:vekt;
 n,i,j:integer;
 flag:boolean;

procedure vivodmatr(n:integer; a:matr; b:vekt; flag:boolean);{vivod matr}
var
 i,j:integer;
 fout:text;
begin
 assign(fout,'L7_out.txt');
 rewrite(fout);
 for i:=1 to n do
 begin
  for j:=1 to n do
  write (fout, a[i,j],' ');
  writeln(fout);
 end;
 close(fout);
end;

procedure vvodmatr (n:integer; var a:matr; var b:vekt; flag:boolean);
var
 i,j:integer;
 f:text;
begin
 if flag then
 begin
  assign(f,'L7_23.txt');
  reset(f);
  for i:=1 to n do
  begin
   for j:=1 to n do
   read(f,a[i,j]);
   readln(f);
  end;
  close(f);
  for i:=1 to n do
  begin
   for j:=1 to n do
   if i=j then
    a[i,j]:=1
  else
   if i>j then
   a[i,j]:=0
    end;
  end
    else
  assign(f,'L7_23.txt');
  reset(f);
  for i:=1 to n do
  read (f,b[i]);
  readln(f);
  close(f);
end;

procedure vektor(n:integer; var b:vekt);
var
 i:integer;
 fout:text;
begin
 assign(fout, 'L7_out.txt');
 append(fout);
 writeln(fout);
 for i:=1 to n do
  write (fout, b[i],' ');
  writeln(fout);
 close(fout);
end;

procedure korni(n:integer; var x,b:vekt; a:matr);
var
 i,j:integer;
 h:real;
begin
 for i:=n 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];
 assign(fout,'L7_out.txt');
 append(fout);
 writeln(fout);
 writeln(fout,'Reshenie sistem');
 for i:=1 to n do
 writeln (fout,'x(',i,')=',x[i]);
 close(fout);
end;

begin
 clrscr;
 write('Vvedite chislo uravnenij: ');
 read(n);
 flag:=true;
 vvodmatr(n,a,b,flag);
 vivodmatr(n,a,b,flag);
 flag:=false;
 vvodmatr(n,a,b,flag);
 vektor(n,b);
 korni(n,x,b,a);
 readkey;
end.
вообще в программе реализуется обратный ход в решении СЛАУ метадом Гаусса

буду очень благодарна за любую помощь
Klik_1602 вне форума Ответить с цитированием
Старый 24.02.2011, 21:44   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Изменяем тип массива на вещественный и все работает
Код:
 vekt=array[1..10] of Extended;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 24.02.2011, 21:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибка совершенно справедливо выскакивает при компиляции строчки:
Код:
 x[i]:= h/a[i,i];
x типа vekt - а это vekt=array[1..10] of integer;
как Вы в целое число собираетесь результат деления записать?
думаю, что тут надо использовать вещественный тип данных...



p.s. в процедуре korni дальше ещё ошибки будут - переменная fout должна быть описана как fout:text;
ну и цикл for i:=n downto 1 do begin -
где для этого begin завершающий end ?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка пв программе aiktz Помощь студентам 0 24.10.2010 21:48
Как к данной задаче подобрать условие Elenochka Помощь студентам 5 09.11.2009 16:21
С++ Ошибка в программе EwwwA Общие вопросы C/C++ 5 05.01.2009 23:12