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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2015, 16:38   #1
serjik1121
Новичок
Джуниор
 
Регистрация: 26.01.2015
Сообщений: 1
По умолчанию Помогите пожалуйста перевести из Паскаля в си!!!

Код:
{Процедура ввод табличных значений}
procedure Enter(var X,y: per); 
var
 i: integer;
label mp;
begin
mp: for i:=0 to n do
 begin
 write('X[',i,'] = '); readln(x[i]);
 write('y[',i,'] = '); readln(y[i]);
 end;
 for i:=0 to n-1 do
 if x[i+1]-x[i]<=0 then
 begin
 writeln ('Ошибка. Повторите ввод.');
 goto mp
 end;
 end;
{процедура вывода табличных значений}
procedure Print(n: integer; X,y: per); var
 i: integer;
 begin
 for i:=0 to n do
 begin
 write(x[i]:12:6);
 end;
 writeln;
 for i:=0 to n do
 begin
 write(y[i]:12:6);
 end;
 writeln;
end;

{Функция формулы Ньютона}
Function Polinom(n: integer; d:real; X,y :per):real;
var
l:real;
k,i:integer;
p: real;
begin
L:=y[0];
P:=1;
for k:=1 to n do begin
P:=P*(D-X[k-1]);
for i:=0 to (n-k) do begin
Y[i]:=(y[i+1]-y[i])/(x[i+k]-x[i]);
end;
L:=L+P*y[0];
end;
POlinom:=l;
end;
{ процедура построение графика}
procedure Grafik(n: integer; D :real ; X,Y: per; L:real); 
const
step=10;
var
 driver,mode: integer;
 i:longint;
 st:string;
 u,k:integer;

begin
writeln('Введите шаг деления графика');
readln(u);
k:=26;
driver:=detect;
initgraph (driver,mode,'');

setcolor (1);
line (320,0,320,480);
line (0,240,640,240);
for i:=0 to 32 do begin
setlineStyle (1,0,0);
line (0,i*k+6,640,i*k+6);
line (i*k+8,0,i*k+8,480);
end;
setcolor (3);
outtextxy (310,15,'y');
outtextxy (620,240,'x');

for i:=0 to getmaxx div (2*k) do
begin
str (i*u,st);
outtextxy(getmaxx div 2+i*(k),getmaxy div 2+step,st);
str (-i*u,st);
outtextxy (getmaxx div 2-i*k,getmaxy div 2+step,st);
end;

for i:=1 to getmaxy div (2*k) do
begin
str (-i*u,st);
outtextxy (getmaxx div 2+step,getmaxy div 2+i*k,st);
str (i*u,st);
outtextxy (getmaxx div 2+step,getmaxy div 2-i*k,st);
end;
d:=-u*12;
repeat
d:=d+0.002;
putpixel (round(320+d*k/u),round(240+(-POlinom(n,d,x,y))*k/u),10);
until d>u*12;
readkey;
end;

{Основной текст программы}
begin 
TextMode(3);
TextBackground(1);
TextColor(14);
 Titul;
 writeln ('Вывести пояснение к программе?? (Да-1,Нет-0)');
 read (f);
 if f=1 then help else
lp:clrscr;
 writeln('Введите количество узлов n (N=n+1)');
 read(n);
 Enter(X,y);
 Print(n,X,y);
 repeat
 lt:Writeln('BbBedite X (ot ',x[0]:4:2,' do ',x[n]:4:2,')');
 read(d);
 if d<x[0] then begin
 writeln('Ошибка. x не может быть меньше ',x[0]:4:2);
 goto lt; end;
 if d>x[n] then begin
 writeln('Ошибка. x не может быть больше ',x[n]:4:2);
 goto lt; end;
 writeln(Polinom (n,d,X,y):6:3);
 writeln('Найти значения для другой точки X?(ДА-1,НЕТ-0)');
 read(f)
 until f=0;
 Grafik(n,D,X,Y,l);
 readkey;
 CloseGraph;
 clrscr;
 writeln('Повторить для другой функции? (Да-1,Нет-0)');
 read(f);
 if f=1 then goto lp else end.

Последний раз редактировалось Stilet; 26.01.2015 в 19:31.
serjik1121 вне форума Ответить с цитированием
Старый 26.01.2015, 20:22   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

переводить глупо. быстрее с нуля написать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста перевести программу с Паскаля на С++ Taras_rom Общие вопросы C/C++ 0 18.03.2014 21:53
Помогите пожалуйста перевести программу с Паскаля на С++ Taras_rom Visual C++ 1 16.03.2014 21:39