Математикадык маселелерди программалоо. Квадраттык тендеме. 24.02.2014
FPC. Баскыч 1, diskriminant функциясын иштетет, функция массивти чыгарат, бул жерде res[0]-дискриминант, res[1]-x1, res[2]-x2. Баскыч 1, жоопту чыгарып берет. Бир тоскоолдук бар, эгерде x1 жана x2 болчок болуп калса, тактык жоголот.
Component Pascal. Жыйынтыкты жыгаруу таза болбой калды, коп орун эледи. C++. Массивтердин артынан текшериш керек экен, муну мага форумдарда айтышты. Программанын жарымын бутуруу учун ошол форумдакылар жардам беришти, массивти кайтарууну жакшы тушуно албадым. Менин жумушум паскаль кодун c++ кодуна кочуруу болчу, мен эн жонокойун котордум, операцияларды жана жыйнтыкты чыгарууну.
JavaScript. Паскальдакыдай процедура жана функцияга болушту уйроно элекмин, ошон учун жыйынтыкты чыгаруунун эн оной жолун издедим. Интернет барактарынан окудум процедура жана функциянын ордуна метод термини JS те колдонулат экен. Жакшыраак кызыгып карасаныз код абдан эле женил, паскальга окшош. Программаны иштетиш учун кодту файлдын_аты.html форматында сактап ачыныз.
________________________________________ //Fee Pascal(Lazarus)
unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type massiv_type = array[0..2] of real;
{ TForm1 }
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end;
var Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function diskriminant(a:real; b:real; c:real):massiv_type; var d:real; x_1:real; x_2:real; res:massiv_type; begin d:=(b*b)-(4*a*c); if d>=0 then begin x_1:=(-b-Sqrt(d))/(2*a); x_2:=(-b+Sqrt(d))/(2*a);
res[0]:=d; res[1]:=x_1; res[2]:=x_2; end;
if d<0 then begin res[0]:=d; res[1]:=0; res[2]:=0; end;
Result:=res; end;
procedure TForm1.Button1Click(Sender: TObject); var res:massiv_type; begin res:=diskriminant(1,-5,4); ShowMessage('Diskriminant='+FloatToStr(res[0])); ShowMessage('X_1 ='+FloatToStr(res[1])); ShowMessage('X_2 ='+FloatToStr(res[2])); end;
end. ________________________________________
________________________________________ (*Component Pascal(Black Box)*)
________________________________________
________________________________________ /*GCC(Code::Bloks)*/
#include <iostream> #include <cmath> #define nullptr NULL
using namespace std;
float *diskriminant(float a, float b, float c, size_t arraySize = 3) { float d; float x_1; float x_2;
float *res = new float [arraySize];
d = (b*b) - (4 * a*c); if (d >= 0) { x_1=(-b-sqrt(d))/(2*a); x_2=(-b+sqrt(d))/(2*a);
res[0] = d; res[1] = x_1; res[2] = x_2; }
if (d<0) { res[0] = 0; res[1] = 0; res[2] = 0; }
return res; }
int main() { float *res = diskriminant(1, -5, 4); cout << "diskriminant=" << endl; cout << res[0] << endl;
cout << "x1=" << endl; cout << res[1] << endl;
cout << "x2=" << endl; cout << res[2] << endl;
delete [] res; res = nullptr;
return 0; } ________________________________________
________________________________________ //JavaScript
<html> <body> <script type='text/javascript'>
document.write('13_JS_quadratic equation' + '<br />' + '<br />');
a = 1; b = -5; c = 4;
d = (b*b)-(4*a*c);
if (d>=0) { x_1 = (-b-Math.sqrt(d))/(2*a); x_2 = (-b+Math.sqrt(d))/(2*a);
document.write('d= ' + d + '<br />'); document.write('x_1= ' + x_1 + '<br />'); document.write('x_2= ' + x_2 + '<br />'); }
if (d<0) { document.write('d= ' + d + '<br />'); document.write('x_1= ' + '0' + '<br />'); document.write('x_2= ' + '0' + '<br />'); }
</script> </body> </html> ________________________________________
Linux Mint 13 системасында текшерилген. Суроолорунуздар болсо жонотсонор болот, manas_anarovСОБАЧКАмейл.ру, почтанын дареги спамдан атайын бекитилген.
|