Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 258
от 25.11.2006, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 221, Экспертов: 50
В номере:Вопросов: 5, Ответов: 7


Вопрос № 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
Добрый вечер! Очень прошу помочь с описанием алгоритма нахождения определителя кв. матрицы (рекурсивно) или с написанием данной процедуры.
Отправлен: 19.11.2006, 20:44
Вопрос задала: MariaErohina (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Олег Владимирович
Здравствуйте, 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


Вопрос № 63.303
(Функция-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,

{-3 строчки вместе,под одной скобкой

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.

Как ввести значения a,b,x,y.Проверьте,пожалуйста.

Отправлен: 19.11.2006, 21:09
Вопрос задал: Богданова Виктория Сергеевна (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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.
Подскажите,как это реализовать в Турбо Паскале.

С уважением,
Oleg.K
Отправлен: 19.11.2006, 21:43
Вопрос задал: Kulikov_Oleg_Viktorovich (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Kulikov_Oleg_Viktorovich!

Насколько я понял, "" это деление нацело.

Тогда можно сделать так:


var x,r,y:integer;
begin
readln(y);
for x:=1 to 100 do
begin
R:=(x*50) div Y;
writeln(R);
end;
readln;
end.

Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 19.11.2006, 21:59

Отвечает: 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 не справляется. Как бы это осуществить?
Отправлен: 20.11.2006, 13:52
Вопрос задал: Другов-Кручинский Владимир Валерьевич (статус: 8-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: 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 или как то по-другому), и надо ли указывать что-то специфическое при вызове функции из модуля. В общем опишите пожалуйста в подробностях. В модуле будет находится около десяти функций для работы с длинными числами(простое уточнение)
Спасибо всем ответившим.
Отправлен: 20.11.2006, 15:06
Вопрос задал: Митрофанов Артем Борисович (статус: 5-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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
Комментарий оценки:
Спасибо


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное