![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вот знаете что то при n = 31 не считает [D5, WinXP]
KingDog © (2005-02-10 10:37:00)(программа вычисляет степень числа 2)
для n = 1 до 30 работает замечательно а вот при n = 31
какой то гон отрицательное число получается
n := StrToInt(Edit1.Text);
Count := 1;
For n := 1 to n do
begin
For I := 1 to Count do
Count := Count + 1;
end;
Edit1.Text := IntToStr(Count);
если кто знаете напишите (да кстати данный код рабочий
все переменные типа integer :-) )
Shirson (2005-02-10 12:50:00) [1]
For n := 1 to n do
Ляпота...
Sagov (2005-02-10 12:29:00) [2]procedure TForm1.Button1Click(Sender: TObject);
function sum(st1,st2:string):string;
var b,b2:byte;
i:integer;
label aa;
begin result:='';b:=0;
for i:=length(st1)to length(st2)-1 do st1:='0'+st1;
for i:=length(st2)to length(st1)-1 do st2:='0'+st2;
for i:=length(st1) downto 1 do begin
b2:=byte(st1[i])and $f+byte(st2[i])and $f+b;
if b2>9 then b:=1 else b:=0;
result:=char(b2-b*10+48)+result;
end;
if b=1 then result:='1'+result;
end;
var st,st2,st3:string;
i:integer;
begin
i:=strtoint(Edit1.Text);
st2:='1';
for i:=1 to i do st2:=sum(st2,st2);
edit1.Text:=st2;
end;
а вот такой код работает до 1000 а может и более.
не тестировал дальше.
Алхимик (2005-02-10 11:53:00) [3]Из справки
Integer -2147483648..2147483647 signed 32-bit
Romkin (2005-02-10 10:43:00) [4]Это ж надо так написать :))) Кстати, есть теги code, весьма рекомендую использовать, читать неудобно без них.
А ответ прост: это не гон! :) integer - целое со знаком 32 бита.
Плохиш (2005-02-10 10:41:00) [5]Странно, всегда считал, что "степень числа 2" вычисляется перемножением двоек или смещением бита.
mojerat (2005-02-10 10:39:00) [6]да код интерестный а ты уверен что он работает