Составить процедуру вычисления значения целого числа по заданной строке символов...

0 голосов
116 просмотров

Составить процедуру вычисления значения целого числа по заданной строке символов являющейся записью этого числа в десятичной системи счисления(паскаль)


Информатика (41 баллов) | 116 просмотров
0

Непонятно условие. Пример приведите.

Дан 1 ответ
0 голосов

Несколько вариантов:
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.

(1.7k баллов)