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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 11:19   #1
Зорянка
Новичок
Джуниор
 
Регистрация: 01.07.2009
Сообщений: 3
По умолчанию Pascal нахождение точного значения числа

Последовательность определенна своим общим членом an = 2^(n-1)*(1/(корень(3)-1)^n+(-1)^n/(корень(3)+1)^n)
Написать программу, что находит точное значение для любого n из промежутка [0,150].
Для проверки, при n=58 получим 10359022039470231387111424.
Зорянка вне форума Ответить с цитированием
Старый 01.07.2009, 12:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык в чем проблема?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2009, 12:24   #3
Зорянка
Новичок
Джуниор
 
Регистрация: 01.07.2009
Сообщений: 3
По умолчанию

Дуже дякую. Я написала программу она находит члены последовательности, но только она выводит в числе 18 цифр, а мне надо не ограничено. Я где-то читала что это надо делать записывая число в строку, но я не знаю как это делать.
Моя программа:
Код:
{$N+}
program lab;
uses crt;
var a,l,k1,k2,b1,b2,s1,s2:extended;
i:integer;
begin
clrscr;
a:=0;
k1:=sqrt(3)-1;
k2:=sqrt(3)+1;
b1:=1/k1;
b2:=1/k2;
for i:=0 to 150 do
begin
if i mod 2=0 then
begin
a:=exp((i-1)*ln(2));
s1:=exp(i*ln(b1));
s2:=exp(i*ln(b2));
l:=a*(s1+s2);
writeln(l:20:2,' ',i);
end;
if i mod 2=1 then
begin
a:=exp((i-1)*ln(2));
s1:=exp(i*ln(b1));
s2:=exp(i*ln(b2));
l:=a*(s1-s2);
writeln(l:20:2,' ',i);
end;
end;
end.

Последний раз редактировалось Stilet; 01.07.2009 в 12:55.
Зорянка вне форума Ответить с цитированием
Старый 01.07.2009, 12:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а мне надо не ограничено.
Это немного проблематично, ибо тут придется пользоваться длинной арифметикой, а стандартных типов паскаля врядле хватит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2009, 13:18   #5
Зорянка
Новичок
Джуниор
 
Регистрация: 01.07.2009
Сообщений: 3
По умолчанию

Поэтому я к вам и обратилась.
Зорянка вне форума Ответить с цитированием
Старый 01.07.2009, 13:22   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Увы я длинную арифметику не знаю...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2009, 13:47   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Этот вопрос по длинной арифметике подымался уже не раз и периодически. Имеется библиотека длинных чисел от Vit с сайта Vingrad (поищите там в поиске). Если Вас не устроит обратитесь ко мне, имеется самописная (четыре основных операции и ряд преобразований). Отличие от Витовской - более низкая скорость и длина чисел ограничена длиной строки (имеется ввиду длинные строки AnsiString, т.е. по сути сколько Вам Виндовс позволит). Предупреждаю сразу во всех таких модулях длинных чисел деление жутко хромает и если у Вас проц слабенький результата могут дождаться уже Ваши внуки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивами в С++ (нахождение мин и макс числа) Lorden Помощь студентам 10 29.01.2009 21:42
Поиск точного значения с помощью функции БИЗВЛЕЧЬ THE_ENGINEER Microsoft Office Excel 8 23.07.2008 11:37