IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задача с геометрической прогрессией
сообщение
Сообщение #1


Гость






Помогите плз решить такую задачу в Паскале через проседуры
Условие:
По одной легенде шах предложил мудрецу любой подарок какой тот захочет. Мудрец сказал чтобы на первую кетку шахматной доски положили одно зерно, на 2 - 2 зерна, на 3 - 4 зерна, на 4 - 16 зёрен и.т.д. ( геометрическая прогрессия)
Составить программу, с помощью которой модно вычислить на какой клетке суммарное кол-во зёрен превысит N шт. ( на шахматной доске 64 клетки)

Заранее спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






В чем проблема? На чем застопорились?
Не знаем, как оформить геометрическую прогрессию?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


проблема в том ,что cкоро члены ряда перестанут умещаться в
LongInt
;)

Bankir, тебе Сюда

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(klem4 @ 29.05.05 9:25)
проблема в том ,что cкоро члены ряда перестанут умещаться в LongInt ;)

А Comp на что?
С его помощью можно попробовать обойтись без длинной арифметики...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Можт я чего-то не понимаю, но
хмм.. 8-й член = 4294967296*4294967269, так что я даже и не знаю, как тут Comp'ом обойтись
сплошные error'ы ;)

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(Bankir @ 28.05.05 17:37)
По одной легенде шах предложил мудрецу любой подарок какой тот захочет. Мудрец сказал чтобы на первую кетку шахматной доски положили одно зерно, на 2 - 2 зерна, на 3 - 4 зерна, на 4 - 16 зёрен и.т.д. ( геометрическая прогрессия)

Давай уточним условие:
если у тебя прогрессия геометрическая, то на 2-ю клетку должны были положить в 2 раза больше чем на первую, на 3-ю - в 2 раза больше чем на вторую, и т. д. Из чего:
1 - 1
2 - 2 (1 * 2)
3 - 4 (2 * 2)
4 - 8 (4 * 2) У тебя 16... Откуда? Или это гипергеометрическая прогрессия? Уточни...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Да... с 16-ю я ошибся
А застопорился я на том что не могу понять как записать формулу геометрической прогресии - какие переменные куда подставлять и.т.д. и как оформить цыкл
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Вот тебе пример:
{$n+}
var
n, count, sum: comp;
i: byte;

begin
Write('n = '); readln(n);
i := 1; count := 1; sum := 1;
while sum < n do begin
count := count*2;
sum := sum + count;
inc(i)
end;
writeln('На клетке №', i)
end.

Это будет работать почти всегда...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






С типом переменных comp ни чего не работало
показывалась ошибка на строчке "readln(n);" -
error 116: Must be in 8087 mode to compile this.
Но с переменой типа на Integer всё заработало.
Спосиба большое.
P.S. а че за переменная comp в школе нам не рассказывали про неё?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


хех, поставь первой строкой в рограмме

{$n+}


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Так в том-то и дело, что с Integer ты можешь работать только до 16-ой клетки, а сумма - вообще до 15-ой, так как размер Integer - 16 бит. Если же брать Comp (длинное "целое"), то его размер - 8 байт (64 бита), следовательно ты сможешь работать до 64 клетки...

P.S. Программу подправил...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2024 5:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name