![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.10.2012
Сообщений: 31
|
![]()
Задан массив линейных функций, найти уравнение прямой, для которой интеграл на отрезке [1, 10] приобретает наибольшее значение. Функции подобрать самостоятельно, 4 шт
может мне кто то помочь уменьшить программу? очень сильно надо. иначе препод придерется и все равно придется уменьшать ее. Код HTML:
program Project2; {$APPTYPE CONSOLE} uses SysUtils, Windows; type TFunction = function(x: Integer): Real; // Functional type definition TFunctionArray = array of TFunction; // Functional array definition var i : Integer; functionArray : TFunctionArray; //----------------------Linear functions---------------------------- function linearFunction1(x: Integer): Real; begin linearFunction1 := 4*x+3; //standart kx+b function end; function linearFunction2(x: Integer): Real; begin linearFunction2 := 2*x+7; //standart kx+b function end; function linearFunction3(x: Integer): Real; begin linearFunction3 := 2*x+2; //standart kx+b function end; function linearFunction4(x: Integer): Real; begin linearFunction4 := 5*x+4; //standart kx+b function end; //-----------------------Endof Linear functions-------------------------- procedure initLinearFunctionsArray(var functionArray :TFunctionArray); begin setLength(functionArray,4); functionArray[0] := linearFunction1; functionArray[1] := linearFunction2; functionArray[2] := linearFunction3; functionArray[3] := linearFunction4; end; function getVectorLength(x1,x2 :integer; y1,y2:real):real; begin getVectorLength := sqrt(sqr(x2-x1)+sqr(y2-y1)); end; function getIntegral(linearFunction :TFunction):real; var i :Integer; x :array[1..10] of integer; y :array[1..10] of real; segmentSquare :real; totalSquare :real; begin totalSquare := 0; for i:=1 to length(x) do // initialize x and y arrays begin x[i] := i; y[i] := linearFunction(x[i]); //use linear function to obtain value end; for i:=1 to length(x)-1 do begin segmentSquare := getVectorLength(x[i],x[i],0,y[i]) * getVectorLength(x[i],x[i+1],0,0); totalSquare := totalSquare + segmentSquare; end; getIntegral := totalSquare; end; procedure findBiggestIntegral(functionArray :TFunctionArray); var i :Integer; maxIntegral :real; maxIntegralIndex :Integer; begin maxIntegral := -999; maxIntegralIndex := 0; for i:=0 to length(functionArray)-1 do begin if getIntegral(functionArray[i]) > maxIntegral then begin maxIntegral := getIntegral(functionArray[i]); maxIntegralIndex := i+1; end; end; writeln('Maximal integral: ', maxIntegral:3:3,' found at function ', maxIntegralIndex); end; begin initLinearFunctionsArray(functionArray); writeln('Function 1 integral: ', getIntegral(functionArray[0]):3:3); writeln('Function 2 integral: ', getIntegral(functionArray[1]):3:3); writeln('Function 3 integral: ', getIntegral(functionArray[2]):3:3); writeln('Function 4 integral: ', getIntegral(functionArray[3]):3:3); findBiggestIntegral(functionArray); readln; { TODO -oUser -cConsole Main : Insert code here } end. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 27.11.2012
Сообщений: 5,714
|
![]()
Так, сходу - только наименования. Разве что:
Код:
Код:
Благими намерениями устлана дорога на programmersforum.ru
Последний раз редактировалось MihalNik; 02.12.2012 в 23:57. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.10.2012
Сообщений: 31
|
![]()
спасибо)))
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процедурный тип | Sweet-_-Orange | Помощь студентам | 3 | 01.02.2012 21:16 |
Процедурный тип. Интегралы. | kuy | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 26.11.2011 00:11 |
Процедурный тип в Delphi | <Maria> | Помощь студентам | 1 | 14.11.2010 18:03 |
Процедурный тип в C++Builder | sneksnek2006 | C++ Builder | 4 | 14.10.2010 10:46 |
Процедурный тип в паскале | tanyhaftv | Помощь студентам | 0 | 24.03.2010 09:07 |