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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 15:03   #1
bodya00728
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 10
По умолчанию Перевод с PasCal на Си

Здравствуйте! Мне нужна ваша помошь:
Помогите пожайлуста перевести программу с PasCal на Си!
Программа: Алгоритм интерполяция каноническим полиномом!
Готов заплатить!
Вот программа на PASCAL

Код:
program sm_1;
uses crt;
type mat=array [0..20,0..21] of real;
vec=array [0..20] of real;
var i,k,n: integer; x1,x0,x9,h,p: real; x,f,c:vec; a:mat;
procedure tab (n:integer; var x,f:vec);
var i: integer;
begin
for i:=0 to n do begin
writeln('X',i:2,i:2,'?'); readln (x[i],f[i])
end
end;
procedure matr(n:integer; var x,f:vec; var a:mat);
var i,j: integer; r,s:real;
begin
for i:=0 to n do begin r:=1.0; s:=x[i]; a[i,n+1]:=f[i];
for j:=0 to n do begin a[i,j]:=r; r:=r*s end
end
end;
procedure gauss(n:integer; var a:mat; var x:vec);
var i,j,k,l,k1,n1: integer; r,s:real;
begin n1:=n+1;
for k:=0 to n do begin k1:=k+1; s:=a[k,k]; j:=k;
for i:=k1 to n do begin r:=a[i,k];
if abs(r)>abs(s) then begin s:=r; j:=i end
end;
if j<>k then for i:=k to n1 do begin
r:=a[k,i]; a[k,i]:=a[j,i]; a[j,i]:=r end;
for j:=k1 to n1 do a[k,j]:=a[k,j]/s;
for j:=k1 to n do begin r:=a[i,k];
 for j:=k1 to n1 do a[i,j]:=a[i,j]-a[k,j]*r
 end
 end;
 for i:=n downto 0 do begin s:=a[i,n1];
 for j:=i+1 to n do s:=s-a[i,j]*x[j];
 x[i]:=s
 end
 end;
 procedure pol(n:integer; var c:vec; var x1,p: real);
 var i:integer;
 begin p:=c[n];
 for i:=n-1 downto 0 do p:=c[i]+p*x1
 end;
 begin
 repeat write ('N,X0,X9,H?');
 readln (N,X0,X9,H) ; tab (n,x,f);
  matr(n,x,f,a); gauss(n,a,c);
  for i:=0 to n do writeln('C',i:2,'=',c[i]);
  k:=round ((x9-x0)/h+1.0); x1:=x0;
  for i:=1 to k do begin pol (n,c,x1,p);
  writeln(x1,'    ',p);
  x1:=x1+h
  end
  until false
  end.
bodya00728 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод с pascal на с++ Balthazar Помощь студентам 0 08.12.2010 18:50
Перевод из C++ в Pascal maximumtf2 Помощь студентам 1 25.03.2010 10:24
перевод из Pascal в C++ Valerik Общие вопросы C/C++ 5 22.04.2009 21:57
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37