Составить процедуру вычисления значения целого числа по заданной строке символо?
Составить процедуру вычисления значения целого числа по заданной строке символо?? являющейся записью этого числа в десятичной системи счисления(паскаль)
Ответ(ы) на вопрос:
Гость
Несколько вариантов:
program StrToInt;
uses crt;
var
st : string;
num : integer;
function val1 (s : string) : integer;
var
i, res : integer;
s1 : string;
begin
s1 := '';
res := 0;
for i:=1 to length(s) do
case s[i] of
'0' : s1 := s1+'0';
'1' : s1 := s1+'1';
'2' : s1 := s1+'2';
'3' : s1 := s1+'3';
'4' : s1 := s1+'4';
'5' : s1 := s1+'5';
'6' : s1 := s1+'6';
'7' : s1 := s1+'7';
'8' : s1 := s1+'8';
'9' : s1 := s1+'9';
end;
val (s1, res);
if s[1]='-' then res := res * -1;
val1 := res;
end;
function isnumber (ch : char) : boolean;
var res : boolean;
begin
res := false;
case ch of
'0' : res := true;
'1' : res := true;
'2' : res := true;
'3' : res := true;
'4' : res := true;
'5' : res := true;
'6' : res := true;
'7' : res := true;
'8' : res := true;
'9' : res := true;
end;
isnumber := res;
end;
function val2 (s : string) : integer;
var
i, res : integer;
begin
res := 0;
for i:=1 to length(s) do begin
if isnumber(s[i]) then res := res*10 + byte(s[i])-byte('0');
end;
val2 := res;
end;
BEGIN
write('Input a string: ');
readln(st);
val(st, num);
writeln('Standart function: ', num);
num := val1(st);
writeln('Function VAL1: ', num);
num := val2(st);
writeln('Function VAL2: ', num);
END.
Не нашли ответ?
Похожие вопросы