Другие языки программирования и технологии

помогите кто дружит с паскалем! задание : напишите на языке программирования . Дано ...

Напишите на языке программирования . Дано натуральное число n . Определите сколько цифр в записи данного числа .
Ikrombek Urazov
Ikrombek Urazov
99
Вот программа, которая работает с числами типа longint, поэтому вводимые данные должны быть от -2 млрд. до +2 млрд (с хвостиком) . Плюс этой программы, что она работает с отрицательными числами:

var n:longint;
s:byte;
begin
read(N);
s:=0;
repeat
s:=s+1;
n:=n div 10;
until n=0;
writeln(s);
end.

Следующий вариант программи работает со строками, что более выгоднее, но все равно вводимые данные считывают только 256 символов.

var s:string;
flag:boolean;
i:byte;
function is_number(a:char):boolean; {Проверяем, является ли символ цифрой}
begin
if (a='1')or(a='2')or(a='3')or(a='4')or(a='5')or(a='6')or(a='7')or(a='8')or(a='9')or(a='0')
then is_number:=true else is_number:=false
end;
begin
read(s);
i:=1;
flag:=true;
while (i<=length(s))and flag do
begin
if not is_number(s) then flag:=false;
i:=i+1;
end;
if flag then writeln(length(s)) else writeln('Vvedite korrectno 4yslo!');
end.

И последний вариант программы, которая базируется на простом считывании символов. Колличество вводимых цифр ограничено только типом переменной, которая их считает.

uses crt;
var c:char;
flag:boolean;
s:integer;
function is_number(a:char):boolean;
begin
if (a='1')or(a='2')or(a='3')or(a='4')or(a='5')or(a='6')or(a='7')or(a='8')or(a='9')or(a='0')
then is_number:=true else is_number:=false
end;
begin
flag:=true;
s:=0;
c:='1';
while (c<>#13)and flag do
begin
c:=readkey;
write(c);
if c<>#13 then
begin
if (not is_number(c)) then flag:=false;
s:=s+1
end
end;
writeln;
if flag then writeln(s) else writeln('Vvedite korrectno 4yslo!');
end.

____
Минусом последних двух программ есть то, что они не опеределяют колличество цифр отрицательных чисел. Если тебе это надо, пиши, помогу.
Канат Ахметов
Канат Ахметов
2 672
Лучший ответ
var N,S:integer;

begin
read(N);
while N!=0 do
begin
S:=S+N mod 10;
N:=N div 10;
end;
writeln(S);
end.
Пиши в личку сделаю за 40 рублей