Рекомендуемые сообщения

Спасибо, очень помогли.

Как то подозрительно точно паскаль синусы считает, если учесть, что из себя представляет число Пи =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данный момент изучаю циклы и натолкнулся на небольшую проблему, объясните пожалуйста, где моя ошибка?

Задача - посчитать (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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кажется тут все верно - ошибок не нашел. При запуске с 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).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть дело в самом компиляторе? Очень-очень странно... У меня Borland Pascal 7.0...

Сейчас попробовал другой дистрибутив - тоже самое. Черт.

P.S. А в Turbo Pascal 7.0 все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А теперь собственно, конечная цель моих мучений :)

Найти сумму ряда с точностью e=10^(-3), общий член которого:

b558ed407dbd.gif

В матане я полный профан, поытался освоить ряды, конечно ничего не вышло :)

Как мне обьяснили добрые люди, мне нужно найти сумму всех слагаемых ряда, не превышающих e=10^(-3).

Правильно ли я понимаю, что сумма ряда

b558ed407dbd.gif

это

1/(1*2) + (1*2)/(1*2*3*4) + (1*2*3)/(1*2..*8)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ExER

у меня и ста рублей на данный момент не наберется :)

xct

Спасибо, что помогаете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

xct

Программа ругается на несоответствие типа n, оно не может быть integer, так как из него высчитывается натуральный логарифм, и real оно тоже быть не может, поскольку в счетчике используются только значения порядкового типа. Никак не соображу, как это обойти. Не подскажете?

P.S. Разобрался :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AmericaMustDie

я примерно так и делаю.

только вопрос назрел. Почему Вы zn приравниваете к единице?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой код:

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 не могу приравнять к какому либо значению, паскаль ругается :"Ошибочная ссылка на переменную"

П.С. Проблема решена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, еще вопрос. Препод задал написать программу на Turbo C, выводящую на экран капли дождя. (Количество капель):= (случайное число), капли должны падать под углом, заданным с клавиатуры. Возможно ли реализовать ее на паскале?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Кстати, еще вопрос. Препод задал написать программу на Turbo C, выводящую на экран капли дождя. (Количество капель):= (случайное число), капли должны падать под углом, заданным с клавиатуры. Возможно ли реализовать ее на паскале?

Возможно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ведь я догадывался, что эта программа пишется в "пару строк" :lol:

Препод упадет, когда увидит мой код :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

xct

Зря реализацию раскладываешь, он так ничему не научится ИМХО

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединиться к общению

Вы можете написать сейчас, а зарегистрироваться потом. Если у Вас есть аккаунт, войдите, чтобы написать с него.

Гость
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...