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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2014, 19:21   #1
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
По умолчанию Надо перевести код с Паскаля в код Lazarus

Код:
program metod_kasatel;{Название программы}
 uses Crt;  {Модуль дисплейных функций}
var  {Блок описаний переменных}
 xn,xn1,a,b,c,mx,y0,x0 :real;

function f1(x1:Real): Real; {Основная функция}
 begin
  f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;
 end;

function f2(x4:Real): Real; {Производная от основной функции}
 begin
  f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4–1.2;
 end;

begin {Начало основного тела программы}
  Clrscr; {Очистка экрана перед выполнением программы}

 a:=0;b:=1;c:=0.00000001;

 Writeln(' От A=',a,' до B=',b); {Вывод на экран}
 Writeln(' Погрешность с=',c);

Readln; { Ожидание нажатия клавиши Enter}

 xn:=b;
 xn1:= f1(xn);
 y0:=f2(b);

while ABS(y0)>c do {Проверка по точности вычисления корня}

 begin {Тело цикла}
  xn:=xn1;
  xn1:=f1(xn);
  y0:= f2(xn1);

   {Печать промежуточного результата}
   Writeln('xn=',xn,' xn+1=',xn1,' f(xn+1)=',y0); 

  Readln; { Ожидание нажатия клавиши Enter}
end; {Конец тела цикла}

Writeln('Конечные значения'); {Печать полученного результата}
Writeln(' xn+1=',xn1,' f(xn+1)=',y0);

 Readln; { Ожидание нажатия клавиши Enter}
end. {Конец основного тела программы}
Сама пробовала не могу разобраться там есть: ожидание нажатия клавиши, где печать полученного результата, печать промежуточного результата.... не понимаю какую функцию взять

Последний раз редактировалось Stilet; 06.04.2014 в 19:40.
Ляйсан9517 вне форума Ответить с цитированием
Старый 06.04.2014, 19:25   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Lazarus это тоже, по сути, в определённом смысле, Pascal. В чём проблема?
Цитата:
не понимаю какую функцию взять
Для чего?
Streletz вне форума Ответить с цитированием
Старый 06.04.2014, 19:31   #3
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
По умолчанию

begin {Начало основного тела программы}
Clrscr; {Очистка экрана перед выполнением программы}
вот предположим как это будет в Lazarus
или
Readln; { Ожидание нажатия клавиши Enter}

Код:
program metod_kasatel;{Название программы}
 uses Crt;  {Модуль дисплейных функций} что это?
var  {Блок описаний переменных}
 xn,xn1,a,b,c,mx,y0,x0 :real;
function f1(x1:Real): Real; {Основная функция}
 begin
  f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;
 end;
function f2(x4:Real): Real; {Производная от основной функции}
 begin
  f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4–1.2;
 end;

begin {Начало основного тела программы}
  Clrscr; {Очистка экрана перед выполнением программы} 

 a:=0;b:=1;c:=0.00000001;

 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text); {Вывод на экран}
 c:=StrToFloat(Edit3.Text);

Readln; { Ожидание нажатия клавиши Enter}

 xn:=b;
 xn1:= f1(xn);
 y0:=f2(b);

else(y0)>c then {Проверка по точности вычисления корня}

 begin {Тело цикла}
  xn:=xn1;
  xn1:=f1(xn);
  y0:= f2(xn1);

   {Печать промежуточного результата}
   Writeln('xn=',xn,' xn+1=',xn1,' f(xn+1)=',y0); 

  Readln; { Ожидание нажатия клавиши Enter}
end; {Конец тела цикла}

Writeln('Конечные значения'); {Печать полученного результата}
Writeln(' xn+1=',xn1,' f(xn+1)=',y0);

 Readln; { Ожидание нажатия клавиши Enter}
end. {Конец основного тела программы}
Думаю будет выглядеть примерно так, но есть то что я не понимаю(те как их перевсти )

Последний раз редактировалось Stilet; 06.04.2014 в 19:41.
Ляйсан9517 вне форума Ответить с цитированием
Старый 06.04.2014, 19:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var  {Блок описаний переменных}
 xn,xn1,a,b,c,mx,y0,x0 :real;

function f1(x1:Real): Real; {Основная функция}
 begin
  f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;
 end;

function f2(x4:Real): Real; {Производная от основной функции}
 begin
  f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4-1.2;
 end;

begin {Начало основного тела программы}

 a:=0;b:=1;c:=0.00000001;

 Writeln(' От A=',a,' до B=',b); {Вывод на экран}
 Writeln(' Погрешность с=',c);

Readln; { Ожидание нажатия клавиши Enter}

 xn:=b;
 xn1:= f1(xn);
 y0:=f2(b);

while ABS(y0)>c do {Проверка по точности вычисления корня}

 begin {Тело цикла}
  xn:=xn1;
  xn1:=f1(xn);
  y0:= f2(xn1);

   {Печать промежуточного результата}
   Writeln('xn=',xn,' xn+1=',xn1,' f(xn+1)=',y0);

  Readln; { Ожидание нажатия клавиши Enter}
end; {Конец тела цикла}

Writeln('Конечные значения'); {Печать полученного результата}
Writeln(' xn+1=',xn1,' f(xn+1)=',y0);

 Readln; { Ожидание нажатия клавиши Enter}
end. {Конец основного тела программы}
Только нужно будет локаль включить а то кракозяблики в консоли будут.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2014, 19:44   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Если программа консольная, то можно вместо Lazarus, использовать FreePascal. Кстати, Lazarus и основан на нём.
Если нужен графический интерфейс (окна, кнопки и пр.) тогда Lazarus.
Streletz вне форума Ответить с цитированием
Старый 06.04.2014, 19:59   #6
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
По умолчанию

да мне как раз нужно что был графический интерфейс
Ляйсан9517 вне форума Ответить с цитированием
Старый 06.04.2014, 20:11   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Ввод данных делаете через Edit'ы на форме. Вывод результатов в Edit'ы или Label'ы. Вывод промежуточных результатов в чём-нибудь типа StringGrid'а.
Расчёт выполняйте в обработчике нажатия кнопки.
Streletz вне форума Ответить с цитированием
Старый 06.04.2014, 22:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var  {Блок описаний переменных}
 xn,xn1,a,b,c,mx,y0,x0 :real;

function f1(x1:Real): Real; {Основная функция}
 begin
  f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;
 end;

function f2(x4:Real): Real; {Производная от основной функции}
 begin
  f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4-1.2;
 end;
begin
 if not TryStrToFloat(Edit1.Text,a) then begin ShowMessage('Ошибка ввода a'); exit; end;
 if not TryStrToFloat(Edit1.Text,b) then begin ShowMessage('Ошибка ввода b'); exit; end;
 if not TryStrToFloat(Edit1.Text,c) then begin ShowMessage('Ошибка ввода c'); exit; end;

 Memo1.Lines.Clear;
 xn:=b;
 xn1:= f1(xn);
 y0:=f2(b);

while ABS(y0)>c do {Проверка по точности вычисления корня}

 begin {Тело цикла}
  xn:=xn1;
  xn1:=f1(xn);
  y0:= f2(xn1);

   {Печать промежуточного результата}
   Memo1.Lines.Append(format('xn=%10.2f xn+1=%10.2f f(xn+1)=%10.2f',[n,xn1,y0]);

end; {Конец тела цикла}
Memo1.Lines.Append(format('Конечные значения  xn+1=%10.2f f(xn+1)=%10.2f',[xn1,y0]);
end;

end.
Надеюсь все понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевести код с Паскаля на С++ Arman107 Паскаль, Turbo Pascal, PascalABC.NET 0 29.05.2013 09:13
Перевести код с Паскаля на Си majuw Помощь студентам 0 20.04.2013 13:50
Перевести код из Паскаля в С++. cristianoman Помощь студентам 4 26.03.2013 00:15