Наши преимущества

Помогите пожалуйсто разобраться с циклами

s_S_s

Турист
Credits
0
Дано действительное число n. Вычислить:
2^n
Все перепробовал
невыходит не чего
procedure TForm1.Button1Click(Sender: TObject);
var
r,i,n,s,r1:integer;
begin
//s:=0;
i:=1;
r:=1;
n:=strtoint(Edit1.text);
While i<=n do begin
//if i=1 then
//showmessage('2 â â n-îé ñòåïåíè ðàâíî 1');

//s:=s+i;
i:=i+1;
r:=2*2;
showmessage('2 в n-ой степени равно ' +inttostr(r1));
r1:=r+r;
end;

//showmessage('2 в n-ой степени равно ' +inttostr(r1));

// end;

end;

end.
 
Молодой человек, извините, но у Вас явные проблемы с математикой, судя по Вашим постам. Может начнете с ее изучения?
По существу: 2^0 = 1, 2^1 = 2; 2^n=2*2*...*2 - n раз. В цикле, исходя из этого, r=r*2.

While i<=n do
begin
r:=r*2;
showmessage('2 в ' i '-ой степени равно ' +inttostr(r));
i:=i+1;
end;
 
Молодой человек, извините, но у Вас явные проблемы с математикой, судя по Вашим постам. Может начнете с ее изучения?
По существу: 2^0 = 1, 2^1 = 2; 2^n=2*2*...*2 - n раз. В цикле, исходя из этого, r=r*2.

While i<=n do
begin
r:=r*2;
showmessage('2 в ' i '-ой степени равно ' +inttostr(r));
i:=i+1;
end;

С математькои я знаю что у меня проблемы но с этим я уже разобрался, осталось правельно цикл построить.
то что вы написали к сожелению не работает. Извеняюсь если что не так.
 
Молодой человек, извините, но у Вас явные проблемы с математикой, судя по Вашим постам. Может начнете с ее изучения?
По существу: 2^0 = 1, 2^1 = 2; 2^n=2*2*...*2 - n раз. В цикле, исходя из этого, r=r*2.

While i<=n do
begin
r:=r*2;
showmessage('2 в ' i '-ой степени равно ' +inttostr(r));
i:=i+1;
end;

решил наконецто через оператор фор во:

var
i,n,r:integer;

begin
n:=strtoint(Edit1.text);
i:=0;
r:=2;
for i:=1 to n-1 do
r:=r*2;
showmessage('2 n-oй степени равно' +inttostr(r));
i:=i+1;
end;


end.
 
Можно еще вот так:
Код:
var
i,n,r:integer;
begin
n := StrToInt(Edit1.text);
r := 0;
for i:=0 to n-1 do begin
power(r,i);
showmessage('2 n-oй степени равно' +inttostr(r));
                            end;
end;
 
Можно еще вот так:
Код:
var
i,n,r:integer;
begin
n := StrToInt(Edit1.text);
r := 0;
for i:=0 to n-1 do begin
power(r,i);
showmessage('2 n-oй степени равно' +inttostr(r));
                            end;
end;

а ДАВАЙТЕ УСЛОЖНИМ ЗАДАЧУ...
Подсчитаем с точностью до 1 зерна на шахматной доске =
2^64 - 1...

Была такая девняя задачка..
 
Последнее редактирование модератором:
to y.victor:

Можно и 2^100 :)

Например, используя GInt (Как увидеть ссылки? | How to see hidden links?.

А без Гинты? Попробуй - интересно будет.. Но только не округленно, а с точностью до единицы..

Еще вот задачка.. Сколько всего бывает счастливых билетов..
Счастливый это кода первые 3 цифры равны в сумме последним 3 цифрам..
654933, 381426, к примеру...

И вот еще.. Правда не совсем в тему, но интересно..

y + x^2 = 31
x + y^2 = 41

система уравнений.. Ясно, что х=5, у=6.. Но.. попробуйте алгебраически решить..:D
 
А вот еще маленькая задачка:
Дано два числа а,b они чему то равны (например а=5, b=10 ). Надо поменять ихние значения без использования дополнительной переменной (Тоесть а дожно равнятся 10, а b = 5).
 
to Unsiker

a := a Xor b;
b := b Xor a;
a := a Xor b;

Есть хорошая книжка на эту тему: "Жемчужины программирования".

to y.victor

Как давно это было. Занимательная комбинаторика. Ностальгия!
Когда начинаешь заниматься комбинаторикой профессионально, на такие задачки смотришь совсем по-другому...
Сколько всего неизоморфных абелевых полурегулярных груп порядка 128? Шутка.

А GInt я привёл как пример библиотеки поддержки больших целых чисел (в int64 ведь не влезет). Алгоритм вычисления - это другое дело.
 
Верх