Математикалык маселелерди программалоо. Квадраттык тендеме. Онлайн калькулятор 24.02.2014

JavaScript.
Калькуляторду колдонуу учун, a, b, с боштуктарын толтуруп, result баскычын басыныз, боштуктарды очуруу учун refresh баскычын басыныз.

FPC.
Баскыч 1, diskriminant функциясын иштетет, функция массивти чыгарат, бул жерде res[0]-дискриминант, res[1]-x1, res[2]-x2. Баскыч 1, жоопту чыгарып берет. Бир тоскоолдук бар, эгерде x1 жана x2 болчок болуп калса, тактык жоголот.

Component Pascal.
Жыйынтыкты жыгаруу таза болбой калды, коп орун эледи.

C++.
Массивтердин артынан текшериш керек экен, муну мага форумдарда айтышты. Программанын жарымын бутуруу учун ошол форумдакылар жардам беришти, массивти кайтарууну жакшы тушуно албадым. Менин жумушум паскаль кодун c++ кодуна кочуруу болчу, мен эн жонокойун котордум, операцияларды жана жыйнтыкты чыгарууну.

Программалардын код жана проекттерин
жуктоп ал


a b c



REFRESH
//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)*)

MODULE XmatemQuadratic_equation1;

IMPORT StdLog, Math, Strings;

TYPE

STRING = ARRAY 256 OF CHAR;;
massiv_type = ARRAY 3 OF REAL;

PROCEDURE diskriminant(a,b,c:REAL; OUT v: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
x_1:=(-b-Math.Sqrt(d))/(2*a);
x_2:=(-b+Math.Sqrt(d))/(2*a);

res[0]:=d;
res[1]:=x_1;
res[2]:=x_2;
END;

IF d<0 THEN
res[0]:=d;
res[1]:=0;
res[2]:=0;
END;

v := res;
END diskriminant;


PROCEDURE Button_1* ;
VAR
res:massiv_type;
str:STRING;
BEGIN
diskriminant(1,-5,4,res);

StdLog.Ln;
Strings.RealToString((res[0]),str);
StdLog.String("diskriminant=");
StdLog.String(str);

StdLog.Ln;
Strings.RealToString((res[1]),str);
StdLog.String("X_1=");
StdLog.String(str);

StdLog.Ln;
Strings.RealToString((res[2]),str);
StdLog.String("X_2=");
StdLog.String(str);
END Button_1;
END XmatemQuadratic_equation1.
/*GCC(Code::Bloks)*/

#include
#include
#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;
}
comments powered by Disqus