Regnar Жалоба Опубликовано 23 марта, 2009 Спасибо, очень помогли. Как то подозрительно точно паскаль синусы считает, если учесть, что из себя представляет число Пи =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 В данный момент изучаю циклы и натолкнулся на небольшую проблему, объясните пожалуйста, где моя ошибка? Задача - посчитать (2^n)! program faktorial; var n,s,k: real; begin write('Ввод n '); readln(n); s:=1; k:=1; n:=(exp(n*ln(2))); {считаем выражение в скобках} while k<n do begin k:=k+1; s:=s*k; end; writeln(n); writeln('Ответ ',s:0:1); end. при вводе n = 2 ответ получается 120, хотя должне быть равен 24. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 затерто Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MpakV Жалоба Опубликовано 25 марта, 2009 Кажется тут все верно - ошибок не нашел. При запуске с 2йкой дает 24(Free Pascal Compiler version 2.0.4 [2007/02/02] for i386,Linux tapu-desktop 2.6.22-16-generic #1 SMP Mon Jan 26 00:07:52 GMT 2009 i686 GNU/Linux). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 То есть дело в самом компиляторе? Очень-очень странно... У меня Borland Pascal 7.0... Сейчас попробовал другой дистрибутив - тоже самое. Черт. P.S. А в Turbo Pascal 7.0 все работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MpakV Жалоба Опубликовано 25 марта, 2009 Может где исходить не такой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 Может где исходить не такой? Ммм... Не понял вопроса :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 xct спасибо Еще 1 проблема =( Подскажите, где на этот раз скосячил? Вот код программы, выводящей на экран значения 2-х функций chisl и znam. (chisl:=n! znam:=(2^n)!) program faktorial; var n,x: real; function znam (var n:real):real; var s1,k1 :real; begin s1:=1; k1:=1; while k1<n do begin k1:=k1+1; s1:=s1*k1; end; znam:=s1; end; function chisl (var n:real):real; var s, k: real; begin s:=1; k:=1; n:=(exp(n*ln(2))); while k<n do begin k:=k+1; s:=s*k; end; chisl:=s; end; begin write('Введите n '); readln(n); writeln(chisl(n):0:0); writeln(znam(n):0:0); end. у меня chisl и znam при любых значениях n равны n!, хотя chisl должен быть (2^n)! Где косяк? Ошибка, chisl и znam при любых вводимых n принимают значения (2^n)! Хотя znam должен быть равен n! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 xct Спасибо, все понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 А теперь собственно, конечная цель моих мучений Найти сумму ряда с точностью e=10^(-3), общий член которого: В матане я полный профан, поытался освоить ряды, конечно ничего не вышло Как мне обьяснили добрые люди, мне нужно найти сумму всех слагаемых ряда, не превышающих e=10^(-3). Правильно ли я понимаю, что сумма ряда это 1/(1*2) + (1*2)/(1*2*3*4) + (1*2*3)/(1*2..*8)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BearKing Жалоба Опубликовано 25 марта, 2009 xct, требуй по сто баксаф за листинг :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 ExER у меня и ста рублей на данный момент не наберется xct Спасибо, что помогаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BearKing Жалоба Опубликовано 25 марта, 2009 Regnar Шутка) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 xct Программа ругается на несоответствие типа n, оно не может быть integer, так как из него высчитывается натуральный логарифм, и real оно тоже быть не может, поскольку в счетчике используются только значения порядкового типа. Никак не соображу, как это обойти. Не подскажете? P.S. Разобрался . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AmericaMustDie Жалоба Опубликовано 25 марта, 2009 Regnar var ch, zn, s:real; n:integer; begin n:=1; ch:=1; zn:=2; while ch/zn > 0.001 do begin s:=s+ch/zn; inc(n); ch:=ch*n; zn:=zn*exp(n*ln(2)); end; writeln('Result: ', s); end. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 AmericaMustDie я примерно так и делаю. только вопрос назрел. Почему Вы zn приравниваете к единице? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AmericaMustDie Жалоба Опубликовано 25 марта, 2009 Regnar Исправил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 25 марта, 2009 Вот мой код: program faktorial; uses crt; var x,y,a,e,s: real; n: integer; function chisl (var n:integer):real; var s1,k1,n1 :real; begin s1:=1; k1:=1; n1:=n; while k1<n1 do begin k1:=k1+1; s1:=s1*k1; end; chisl:=s1; end; function znam (var n:integer):real; var s,k,n2: real; begin s:=1; k:=1;n2:=n; n2:=(exp(n2*ln(2))); while k<n2 do begin k:=k+1; s:=s*k; end; znam:=s; end; begin clrscr; n:=1; e:=0.001; x:=chisl(n); y:=znam(n); a:=x/y; s:=0+a; while a>e do begin n:=n+1; a:=x/y; s:=s+a; end; writeln(s:0:5); readln(x); end. Только что то в нем неправильно, программа не выходит из последнего цикла. Опять я где-то накосячил =). Не подскажете, где именно? AmericaMustDie Кстати, я ни ch ни zn не могу приравнять к какому либо значению, паскаль ругается :"Ошибочная ссылка на переменную" П.С. Проблема решена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MpakV Жалоба Опубликовано 27 марта, 2009 Это магическое шаманство - без него работать не будет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 27 марта, 2009 Да хз, пусть будет, делу не мешает =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 27 марта, 2009 Кстати, еще вопрос. Препод задал написать программу на Turbo C, выводящую на экран капли дождя. (Количество капель):= (случайное число), капли должны падать под углом, заданным с клавиатуры. Возможно ли реализовать ее на паскале? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
WishMaster Жалоба Опубликовано 27 марта, 2009 Кстати, еще вопрос. Препод задал написать программу на Turbo C, выводящую на экран капли дождя. (Количество капель):= (случайное число), капли должны падать под углом, заданным с клавиатуры. Возможно ли реализовать ее на паскале? Возможно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 27 марта, 2009 Спасибо, буду мучить книжки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Regnar Жалоба Опубликовано 31 марта, 2009 А ведь я догадывался, что эта программа пишется в "пару строк" Препод упадет, когда увидит мой код Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Дос Жалоба Опубликовано 31 марта, 2009 xct Зря реализацию раскладываешь, он так ничему не научится ИМХО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты