Вопрос № 63300: Добрый вечер! Очень прошу помочь с описанием алгоритма нахождения определителя кв. матрицы (рекурсивно) или с написанием данной процедуры....Вопрос № 63303: (Функция-1)
Вычислить z-сумму значений функций
Z=f(sqrt|x|,y)+f(a,b)+f(sqrt|x|+1,-y)+f(|x|-|y|,x)+f(x+y,a+b), sqrt-корень
Где f(u,t)={u+2*t u>=0;
u<=-1
{u+t, -1<u<0. x=-14.2;y=0.32;a=7.2;b=4.7
{sqr u-2*t+1,<br...Вопрос № 63307: Здравствуйте,как сделать цикл с шагом 50.Есть формула R=XY .
Необходимо произвести расчеты по этой формуле.
Х изменяется от 50 до 5000 с шагом 50.
Подскажите,как это реализовать в Турбо Паскале.
С уважением,
Oleg.K ...Вопрос № 63386: Приветствую. Есть строка, содержащая не целое число (разделитель точка), его нужно преобразовать в REAL-переменную. Val не справляется. Как бы это осуществить?...Вопрос № 63400: Здравствуйте
Подскажите пожалуйста, как на TP7 написать подключаемый модуль с функциями(!именно с функциями, а не часть программы!), типа crt, graph и можно ли это сделать вообще и заодно, как он подключается(с помощью кл. слова uses или как то п...
Вопрос № 63.300
Добрый вечер! Очень прошу помочь с описанием алгоритма нахождения определителя кв. матрицы (рекурсивно) или с написанием данной процедуры.
Отвечает: Олег Владимирович
Здравствуйте, Maria Erohina!
Идея состоит в использовании свойства определителя, позволяющего раскладывать его по элементам первой строки, т.е.
|a1 a2 a3|
|b1 b2 b3|=a1*|b2 b3|-a2*|b1 b3|+a3*|b1 b2|
|c1 c2 c3| |c2 c3| |c1 c3| |c1 c2|
Так что вычисление определителя n-го порядка сводится к вычислению определителя n-1-го порядка. Рекурсия. При n=1 |a|=a.
В приложении программа, реализующая эту идею
Удачи!
Приложение:
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 6-ой класс)
Ответ отправлен: 19.11.2006, 23:53
Program Pas;
Var
U,t: real;
Z:real;
Function k(u,t:real):real;
Begin
K:=sqrt(abs(u+2*t))+(u+2*t)+(u+2*t)+(u+2*t)+(sqrt(abs(u+2*t)+1)-t+abs(u)-abs(t)+u+(u+2*t+t+u+t);
End;
Function m (u,t:real):real;
M:=sqrt(abs(u+t))+(u+t)+(u+t)+(u+t)+sqrt(abs(u+t))+1-t+abs(u)-abs(t)+u+(u+t+t+u+t);
End;
begin
Z:=f(sqrt(abs(x)),y),f(a,b)+f(sqrt(abs(x))+1,-y)+f(abs(x)-abs(y),x)+f(x+y,a+b);
End;
Begin
If u>=0 then write (k(a,b));
If u<=-1 then write (m,(a,b));
If (u<0) and (u>-1) then write (n(a,b);
End.
Отвечает: Verena
Здравствуйте, Богданова Виктория Сергеевна!
Сложно понять, что Вы имели в виду... Если задача была такой:
Найти значение z
Z=f(sqrt|x|,y)+f(a,b)+f(sqrt|x|+1,-y)+f(|x|-|y|,x)+f(x+y,a+b)
для функции f(u,t)
f(u,t)=u+2*t , если u>=0;
f(u,t)=u+t , если u<=-1;
f(u,t)=sqr (u)-2*t+1 , если -1<u<0
и для значений x=-14.2;y=0.32;a=7.2;b=4.7
То решение ниже (значения вводятся пользователем).
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 3-ий класс)
Ответ отправлен: 19.11.2006, 22:31 Оценка за ответ: 5
Вопрос № 63.307
Здравствуйте,как сделать цикл с шагом 50.Есть формула R=XY .
Необходимо произвести расчеты по этой формуле.
Х изменяется от 50 до 5000 с шагом 50.
Подскажите,как это реализовать в Турбо Паскале.
Отвечает: Verena
Здравствуйте, Kulikov_Oleg_Viktorovich!
Можно сделать и иначе:
i:=50;
while i<=5000 do
begin
r:=i div y;
writeln (r);
i:=i+50;
end;
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 3-ий класс)
Ответ отправлен: 19.11.2006, 22:34
Вопрос № 63.386
Приветствую. Есть строка, содержащая не целое число (разделитель точка), его нужно преобразовать в REAL-переменную. Val не справляется. Как бы это осуществить?
Отвечает: Coupler
Здравствуйте, Другов-Кручинский Владимир Валерьевич!
Почему это Вы решили, что Val с этим не справляется? Пример в приложении прекрасно работает и с вещественными числами тоже. Если проблема в другом - пишите в мини-форум или вн. почту.
------------------------------------------------------------
Процедура Val
------------------------------------------------------------
Функция: Преобразует строковое значение в его численное
представление.
Описание: Val(s : string; v; var код : integer)
Примечания: Параметр s представляет собой выражение
строкового типа. Параметр v является переменной целого или
вещественного типа. Параметр "код" - это переменная целого
типа, которая формирует все число со знаком в соответствии с
синтаксисом, показанном в разделе "Числа" в Главе 1. Функция
Val преобразует строку s в ее численное представление и сох-
раняет результат в v. Если где-либо в строке встречается не-
допустимый символ, то его номер сохраняется в параметре
"код". В противном случае этот параметр равен нулю.
В зависимости от состояния {$R} и типа параметра v
функция Val по-разному выполняет проверку диапазона.
Если состояние проверки диапазона установлено, то есть
задано {$R+}, то выражения, выходящие за границу диапазона,
всегда будут генерировать ошибку времени выполнения.
Если состояние проверки диапазона сброшено, то есть за-
дано {$R-}, то выражения, выходящие за границу диапазона,
будут вызываеть эффект, зависящий от их типа. Если v имеет
тип real или longint, то значение v становится неопределен-
ным и в параметре "код" возвращается ненулевое значение. Для
любого другого числового типа в параметре "код" возвращается
нулевое значение, а v будет содержать результат вычислений с
переполнением (если предположить, что строковое значение по-
падает в диапазон представления длинного целого).
Таким образом, процедуре Val переменную длинного целого
типа (longint) и перед тем, как присваивать полученное зна-
чение, выполнять проверку диапазона. Например:
{$R-}
Val('65536', LongIntVar, Code);
if (Code <>0) or
(LOngIntVar < 0) or (LongIntVar > 65535) then
... { ошибка }
else
WordVar := LongIntVar;
Ограничения: Предшествующие пробелы должны быть удале-
ны.
Прочее: См. также процедуру Str.
Пример:
var
i, code : integer;
begin
{ получить текст из командной строки }
Val(ParamStr(1), i, code);
{ ошибка при преобразовании в целое значение? }
if code <> 0 then
Writeln('Ошибка на позиции :', code);
else
Writeln('Значение = ', i);
end.
Приложение:
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 20.11.2006, 18:10
Вопрос № 63.400
Здравствуйте
Подскажите пожалуйста, как на TP7 написать подключаемый модуль с функциями(!именно с функциями, а не часть программы!), типа crt, graph и можно ли это сделать вообще и заодно, как он подключается(с помощью кл. слова uses или как то по-другому), и надо ли указывать что-то специфическое при вызове функции из модуля. В общем опишите пожалуйста в подробностях. В модуле будет находится около десяти функций для работы с длинными числами(простое уточнение)
Спасибо всем ответившим.
Отвечает: sir henry
Здравствуйте, Митрофанов Артем Борисович!
Есть несколько отличий у подключаемого модуля по сравнению с обычной программой.
1. Начинается модуль с служебного слова Unit, после которого через пробел пишеться его название. Название обязательно должно совпадать с названием файла модуля.
2. Сам модуль состоит из двух частей разного назначения:
- первая часть модуля - это объявление названий Ваших функций с их параметрами. Озаглавливается эта часть служебным словом Interface:
Unit MyUnit;
Interface
Function MyFunc1(a, b: Integer): Integer;
Function MyFunc(s: string): Integer;
...
- вторая часть модуля - это собственно описание самих функций. Озаглавдивается эта часть служебным словом Implementation:
Implementation
Uses Crt, Dos; {Сюда пишете необходимые для работы Ваших функций модули}
Function MyFunc1(a, b: Integer): Integer;
Begin
{Здесь описываете свою функцию}
End;
Function MyFunc2(s: string): Integer;
Begin
{}
End;
End. {А это для того, чтобы компилятор понял, что модуль кончился :) }
3. Компилируете, подключаете с помощью Uses модуль в свою программу и функции можно использовать так, как будто они находятся в Вашей программе.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 20.11.2006, 15:56 Оценка за ответ: 5 Комментарий оценки: Спасибо за точный и полный ответ
Отвечает: Gh0stik
Здравствуйте, Митрофанов Артем Борисович!
Вот приведу Вам пример использования фодуля.
Только не забывайте, что сперва необходимо откомпилировать сам модуль, а затем уже запускать программу на исполнение...
После компиляции модуля должен создаться файл с расширением TPU.
Листинг модуля....
unit myunit;
interface
function f1(x,y:integer):integer; {описание функции - обязательно}
function f2(x,y:integer):integer;
.....
function fn(x,y:integer):integer;
implementation
function f1(x,y:integer):integer; {непосредственная реализация функций}
begin
if x>y then pmax:=x else pmax:=y;
end;
function f2(x,y:integer):integer;
begin
............
end;
............
...........
function fn(x,y:integer):integer;
begin
............
end;
end.
Листинг программы.
program primer;
uses myunit;
var a,b,c,d,rez:integer;
begin
......
rez:=f1(f1(a,b),f1(c,d));{используем функцию f1, которая описана в модуле myunit}
.......
end.
И еще одно уточнение, расположите программу и модуль в одном каталоге... (или модуль в каталог который у вас является каталогом для хранения модулей - посмотрите в настройках компилятора).
Удачи!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 20.11.2006, 16:07 Оценка за ответ: 5 Комментарий оценки: Спасибо