Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Длинная арифметка


Автор: Frogs2009 21.6.2008, 15:49
Составить программу для вычисления степеней чисел вида an, если a> Maxint, n > 10.       Uses CRT;


Код

Var
  a, i,n,b: longint;
Begin
 clrscr;
 Writeln ('Введите A ');
 readln (a);
 b:=a;
 Writeln ('Введите n');
 readln (n);
 for i:=2 to n do begin
 a:=a*b;
 end;
 Writeln (a);
 readln;
end. 



составил программу возведения в степень где А- не большое longint, как А вписать в массив что бы выводилось длинное число, для А > Longint??? помогите пожалуйста! заранее спасибо!!!!

Автор: ne0n 21.6.2008, 19:16
как то непонятно сформулировал вопрос....
ну в паскале longint  это самый большой целочисленный тип данных... ну сделай переменную a типа extended smile  четче сформулируй че надо....

Автор: Frogs2009 22.6.2008, 13:26
когда я ввожу A(чсло возводимое в степень)= 3500, и N(степень, в которую я возвожу число)= 10, у меня не хватает ни какого типа переменных, там надо создать массив,в который я должен записать полученное число,а я не знаю как это сделать, подскажи пожалуйста!

Автор: ne0n 22.6.2008, 14:03
Frogs2009,  я же сказал используй не longint а extended.

Автор: Frogs2009 22.6.2008, 14:30
Цитата(ne0n @ 22.6.2008,  14:03)
Frogs2009,  я же сказал используй не longint а extended.

мне нужно именно через массив делать,а я не знаю как и все равно eхtended не хватит при большем кол-ве цифр

Автор: Frogs2009 22.6.2008, 22:28
Код

program prem123;
uses crt;
const
FileName='moy.dat';
Procedure
Fil(Const n: integer);
var f: file of real;
i: integer;
begin
randomize;
assign(f,FileName);
reWrite(f);
for i:=1 to n do
write(f,Random*100);
close(f);
end;
var
Min,Max,r: real;
f: file of real;
i,n:integer;
begin
clrscr;
write('N=');
readln(n);
writeln('v vayle',FileName);
Fil(n);
assign(f,FileName);
reset(f);
read(f,r);
min:=r;
Max:=r;
write(r:10:5);
for i:=2 to n do
begin 
read(f,r);
write(r:10:5);
if r<min then min:=r;
if r>Max then Max:=r;
if i mod 8 = 0  then writeln;
end;
writeln('Min=',min:10:5);
writeln('Max=', max:10:5);
writeln('summ='.(min+max):10:5);
readln;
end.


составил программу для вычисления A^n, начал запускать - ругается на строчку 
Код

write(f,Random*100);

 пишет:"error 122: Invalid variable reference (недопустимая ссылка на переменную)", в чем дело?? что сдесь не так??? помогите пожалуйста!!! заранее спасибо!

Автор: Majar 23.6.2008, 00:26
Цитата(Frogs2009)

Код

write(f,Random*100);


random - это функция, и ей должен передаваться параметр, у вас же он отсутсвует, должно быть random(x)
А, извините, забыл, что можно объявлять и просто random. Сделал так:
Код

...
var 
 x: real;
...
for i:=1 to n do
 begin
  x:= random*100;
  write(f,x);
 end;
...

И сразу еще об одной ошибке:
Цитата
 
Код

writeln('summ='.(min+max):10:5);


исправьте '.', на ',' 

Автор: Frogs2009 23.6.2008, 13:23
Цитата(Majar @ 23.6.2008,  00:26)

random - это функция, и ей должен передаваться параметр, у вас же он отсутсвует, должно быть random(x)

изменил как вы сказали,а он тоже самое пишет((( что за фигня???

Автор: Majar 23.6.2008, 13:27
Смотрите пост выше, я отредактировал его

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)