Помощь - Поиск - Пользователи - Календарь
Полная версия: Цикл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
cxt
На первую клетку он положил 1 зерно на 2 -2 на 3 -4 и т.д. на каждую следующую в 2 раза больше...

Не подскажете как это записать

при помощи sqr(x) ?
volvo
Записать-то просто, вопрос - поместится ли значение в переменную? Ответ - нет, не поместится ;)

Кстати, это НЕ при помощи Sqr, т.к. Sqr - это квадрат числа, но никак не удвоенное число...
VelarThind
НУ я думаю в задаче есть какой-то предел. А писать можно так -

Код
a := 1;
For i := 1 to {например} 100 do
 a:=a*2;


Можно и Repeat-Until или While-do
volvo
VelarThind,
типы проставь. Какого типа у тебя A?
cxt
Предел есть нужно узнать сколько зерен нужно чтобы покрыть шахматную доску.
volvo
cxt, тебе сюда: FAQ: Длинночисленная арифметика, потому что тебе нужно знать с точностью до единиц, а пример приведенный VelarThind-ом просто не будет работать корректно при таких порядках.

Если же использовать real то можешь забыть о точности до единиц. Результат будет приблизительным. Выбирай.
cxt
Код

program xxx;
uses crt;
var
a,i:integer;
begin clrscr;
writeln('Введите число (на доске 64 клетки)');
read(i);
for i:=1 to i do
a:=(a+2);
a:=a-2;
writeln('a,' зерен потребуются для заполнения доски');
end.


Помогите сделать чтобы когда вводишь 1 выводилось тоже 1 ,а не 0

пытался зделать через if но не получилось

Код

if i=1 then
begin
writeln('i,' зерен потребуются для заполнения доски');
end;
else
writeln('a,' зерен потребуются для заполнения доски');
volvo
Читай, что я писал раньше:
Цитата(volvo @ 10.04.05 18:30)
Записать-то просто, вопрос - поместится ли значение в переменную? Ответ - нет, не поместится  ;)


Цитата(volvo @ 11.04.05 18:13)
cxt, тебе сюда: FAQ: Длинночисленная арифметика, потому что тебе нужно знать с точностью до единиц, а пример приведенный VelarThind-ом просто не будет работать корректно при таких порядках.


Решил проверить? Проверил? Убедился? Я же говорил, что смотреть надо в сторону длинночисленной арифметики... Ибо даже LongInt (я уже не говорю про Integer) может хранить значение до 2 в степени 32, а тебе нужно до 2 в степени 64 (по числу клеток на доске) Так что работай с длинными числами...

Кстати, вот это:
Код
{ а кто тебе разрешил использовать I
и как переменную цикла и как конечное значение? }
for i:=1 to i do
 a:=(a+2);
a:=a-2;
вообще лишено всякого смысла. Тебе нужно считать, сколько зерен потребуется чтобы закрыть всю доску, то есть нужно в любом случае пройти по всем 64-м клеткам, а не вводить число I... И умножать на 2, а не прибавлять двойку...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.