![]() |
#1 (permalink) |
Member
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
|
![]() |
![]() |
![]() |
![]() |
#2 (permalink) |
Member
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
|
![]()
Если я правильно понял Вам нужна процедура, которая получает на входе основание и число логарифма и потом используя стандартную функцию Паскаля Ln(x) вычисляет логарифм?
Вот сама математика: log a (B)= ln(B)/ln(a) |
![]() |
![]() |
![]() |
#4 (permalink) |
Member
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
|
![]()
Собственно, вот программный код:
Program lg; Uses crt; Var a,x: word; c: real; Procedure log (x,a: word; c: real); begin If (x>0) and (a>0) and (a<>1) then c:=ln(x)/ln(a); end; Begin Clrscr; Writeln('Введите число логарифма и его основание: '); Readln(x,a); Log(x,a,c); Write('Полученное значение равно ',c:3:1); End. |
![]() |
![]() |
![]() |
#5 (permalink) |
Member
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
|
![]()
Надо подумать и сообразить(или вспомнить процедуры), что переменная с должна быть указана со словом var, то бишь надо писать
Procedure log (x,a: word; var c: real); Последний раз редактировалось DDS; 26.01.2010 в 01:21 Причина: опечатка |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
#6 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,777
Записей в дневнике: 71
Сказал(а) спасибо: 163
Поблагодарили 201 раз(а) в 85 сообщениях
Репутация: 75660
|
![]()
В процедуру вообще можно значения не передавать, тогда она работает с глобальными переменными, а в вашем случае вы подсчитываете значение локальной переменной с, потом возвращаетесь в основную программу и выводите значение глобальной переменной с, которое равно 0, так как не изменено.
Вывод значения лучше реализовать внутри процедуры, тогда будет выводиться вычисленное значение.
__________________
Убить всех человеков! |
![]() |
![]() |
![]() |
#7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
И еще - какой смысл в целочисленном (word) формате переменной x? Я бы ее сделал REAL. К тому же зачем тут вообще процедура? Куда логичнее использовать функцию. В общем, я бы так оформил:
Код:
Program lg; Uses crt; Var a: word; x: real; Function log(Xl:real; Al:word):Real; begin log:=ln(Xl)/ln(Al); end; Begin Clrscr; Repeat Write('The base of logarithm= '); Readln(a); Write('The argument= '); Readln(x); If (a<=1) or (x<0) then Writeln('The input data is wrong!'); Until (a>1) and (x>0); Write('The value of logarithm is ',Log(x,a):8:5); ReadLn; End. |
![]() |
![]() |
![]() |
#8 (permalink) |
Member
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
|
![]()
Всех благодарю за ответы.
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|