Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.240.222] |
|
Страницы: (5) 1 [2] 3 4 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Воспользуйся такой функцией вместо MOD:
function FMod (a, b: Double): Double; begin Result := a - b * Trunc(a / b) end; |
Сообщ.
#17
,
|
|
|
С этим, кажется, разобралась - недаром ведь по заданию провежуток дан в мс, а не в с, значит, периоды тоже можно в мс делать, тогда они - целые...
Но он пишет ошибку - когда я пишу присвоить значению функции такое-то значение: I(t):=Im. Почему он это пишет? Как исправить? |
Сообщ.
#18
,
|
|
|
Потому что на Паскале так не пишут. Для этого есть зарезервированное слово Result.
|
Сообщ.
#19
,
|
|
|
Цитата Romtek @ Воспользуйся такой функцией вместо MOD: function FMod (a, b: Double): Double; begin Result := a - b * Trunc(a / b) end; ясно. А что такое a,b и trunc? |
Сообщ.
#20
,
|
|
|
Пардон, пишется имя функции, а не Result.
Result только в Делфи или в FreePascal в режиме ObjFPC. Добавлено Цитата Prutvel @ А что такое a,b и trunc? Trunc отсекает мантиссу вещественного числа. Trunc(-5.3) = -5 Trunc(5.3) = 5 Добавлено a, b - входные параметры для функции. Вроде бы как... В чём, собственно, вопрос? |
Сообщ.
#21
,
|
|
|
Цитата Romtek @ Пардон, пишется имя функции, а не Result. Так вот я и писала I(t):=Im, а он пишет ошибку... И я написала, как Вы сказали - посмотрите, пожалуйста, так? Прикреплённый файлглянь.jpg (40.88 Кбайт, скачиваний: 434) |
Сообщ.
#22
,
|
|
|
Prutvel
Копируйте текст программы из FPC. Edit -> Copy to Windows |
Сообщ.
#23
,
|
|
|
function FMod (t,T3: double):double;
Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin if (t-T3*Trunc(t/T3))<tau then I(t):=Im; if ((t-T3*Trunc(t/T3))>=tau) and ((t-T3*Trunc(t/T3))<T1) then I(t):=-Im; if ((t-T3*Trunc(t/T3))>=T1) and ((t-T3*Trunc(t/T3))<(T1+tau)) then I(t):=Im; if (t-T3*Trunc(t/T3))>=(T1+tau)) and ((t-T3*Trunc(t/T3))<T3) then I(t):=-Im; end. |
Сообщ.
#24
,
|
|
|
Цитата Prutvel @ Я написал только про имя. Если передаём и параметр, то получаем рекурсивный вызов функции. Но так как можно только получить результат рекурсии, а не присвоить ему значени, то получаешь ошибку.Так вот я и писала I(t):=Im, а он пишет ошибку... Убери параметр (t). |
Сообщ.
#25
,
|
|
|
Так компилируется, насколько верно записано - не знаю.
function FMod (a, b: Double): Double; begin FMOD:= a - b * Trunc(a / b); end; Function i(t:Double): Double; Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin if fmod(t,T3)<tau then i:=Im; if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then I:=-Im; if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then I:=Im; if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then I:=-Im; end; begin end. |
Сообщ.
#26
,
|
|
|
а как же мне тогда задавать интервалы?
|
Сообщ.
#27
,
|
|
|
Цитата Prutvel @ а как же мне тогда задавать интервалы? Я подправил предыдущее сообщ. Проверьте. |
Сообщ.
#28
,
|
|
|
пишет на последнем end ошибку Error while linking, подставляла readln, writeln - не помогает...
|
Сообщ.
#29
,
|
|
|
Это когда предыдущие скомпилированные и запущенные программы не были закрыты.
Если они закрыты, надо завершить их процессы в Task Manager. |
Сообщ.
#30
,
|
|
|
а где это?
|