Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2010, 00:52   #1
remlena
 
Регистрация: 05.09.2010
Сообщений: 3
По умолчанию Проверить тождество

Знаю, что программа ерундовая, но у меня не работает.
Нужно проверить тождество:
1^2 +2^2 +3^2 +...n^2 = n*(n +1)*(2*n+1)/6
remlena вне форума Ответить с цитированием
Старый 05.09.2010, 01:43   #2
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Код:
Uses crt;
FUNCTION Toj(Osnovanie:Real;  Stepen:Word) : Real;
VAR   a:Real;
      i:Integer;
       BEGIN
       a:=1;
     	 for i:=1 to Stepen do a:=a*Osnovanie;
	     Toj:=a
       END;
       
var n,i,n1,j,b:Integer;
BEGIN
Writeln('Введите степень');
Readln(n);
Writeln('Введите сколько будет чисел');
Readln(b);
for i:=1 to b do begin
end;
if ((Toj( i,n))+(Toj( i,n))= i*(i +1)*(2*i+1)/6) then   Writeln('равно')
 else  Writeln('не равно');
END.
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)

Последний раз редактировалось DRAgon™; 05.09.2010 в 02:00.
DRAgon™ вне форума Ответить с цитированием
Старый 05.09.2010, 09:54   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

DRAgon™, уважаемый, объясните мне, плиз, смысл вот этой части Вашего кода

Код:
Readln(b);
for i:=1 to b do begin
end;
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 05.09.2010, 10:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Grag +1

а ещё. Сравнивать так вещественные числа НЕЛЬЗЯ!!!!
только через abs(x1 - x2) < Эпсилон then Равны!
Эпсилон можно взять, например, 0.00001 - вполне достаточно для доказательства тождества.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2010, 12:07   #5
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
DRAgon™, уважаемый, объясните мне, плиз, смысл вот этой части Вашего кода

Код:
Readln(b);
for i:=1 to b do begin
end;
вот же условие
Код:
1^2 +2^2 +3^2 +...n^2
b это N цифр как я понял
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Старый 05.09.2010, 12:12   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

При n примерно до 1000 все решается в целых типа longint, поскольку выражение
n*(n +1)*(2*n+1) всегда кратно 6.

Код:
var n,i,s,p:longint;
begin
repeat
write('N [1..1000] n=');
readln(n);
until (n>0)and(n<=1000);
s:=0;
for i:=1 to n do
s:=s+i*i;
writeln('Sum=',s);
p:=(n*(n+1)*(2*n+1)) div 6;
writeln(n,'*',n+1,'*',2*n+1,'/6=',p);
if s=p then write('Тождество истинно!')
else write('Тождество не верно!');
readln
end.
puporev вне форума Ответить с цитированием
Старый 05.09.2010, 12:19   #7
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
При n примерно до 1000 все решается в целых типа longint, поскольку выражение
n*(n +1)*(2*n+1) всегда кратно 6.

Код:
var n,i,s,p:longint;
begin
repeat
write('N [1..1000] n=');
readln(n);
until (n>0)and(n<=1000);
s:=0;
for i:=1 to n do
s:=s+i*i;
writeln('Sum=',s);
p:=(n*(n+1)*(2*n+1)) div 6;
writeln(n,'*',n+1,'*',2*n+1,'/6=',p);
if s=p then write('Тождество истинно!')
else write('Тождество не верно!');
readln
end.
ай емое,забыуся
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)

Последний раз редактировалось DRAgon™; 05.09.2010 в 12:31.
DRAgon™ вне форума Ответить с цитированием
Старый 05.09.2010, 14:16   #8
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

Кстати, сумма натуральных чисел н-той степени считается с помощью чисел Бернулли!
http://ru.wikipedia.org/wiki/Числа_Бернулли
vlad_light вне форума Ответить с цитированием
Старый 05.09.2010, 14:39   #9
remlena
 
Регистрация: 05.09.2010
Сообщений: 3
По умолчанию

Спасибо)) Всё получилось)

Последний раз редактировалось remlena; 05.09.2010 в 14:59.
remlena вне форума Ответить с цитированием
Старый 05.09.2010, 14:52   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Кстати, сумма натуральных чисел н-той степени считается с помощью чисел Бернулли!
Это конечно же проще чем
Код:
s:=0;
for i:=1 to n do
s:=s+i*i;
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить число ли Cpluser Общие вопросы по Java, Java SE, Kotlin 7 03.05.2010 00:04
проверить интернет umnicka Свободное общение 20 26.03.2010 22:12
проверить на баги serckesh Помощь студентам 1 05.02.2010 19:54
Проверить прогу Рітка-кулеметчиця Помощь студентам 5 30.01.2009 12:26