Сказать сколько цифр в числе и его знак

Задача: 

Пользователь вводит целое число. Надо вывести на экран сколько в этом числе цифр и положительное оно или отрицательное. Например, "это однозначное положительное число".

Пусть достаточно будет определить, является ли число однозначным, двухначным или трехзначным и более.

Алгоритм решения задачи: 
  1. Проверяем, не является ли число нулем. Хотя ноль и однозначное число, он не является ни положительным, ни отрицательным.
  2. После этого проверяем знак числа и выводим на эран соответствующее сообщение.
  3. Проверяем количество знаков в числе, дополняем сообщение.
Программа на языке Паскаль: 

var
    n: integer;
 
begin
    write('n = '); readln(n);
 
    if n = 0 then
                write('Zero')
        else begin
                if n > 0 then
                        write('Positive ')
                else 
                        write('Negative ');
                if abs(n) then
                        write('single')
                else 
                        if (abs(n) >= 10) and (abs(n) ) then
                                write('two-digit')
                        else
                                write('three-digit or more');
        end;
        writeln;
end.

Примеры выполнения программы:

n = -102
Negative three-digit or more

n = 45
Positive two-digit

Комментарии

Можно проще

var
  minus, n:integer;
begin
readln(n);
if (n) then minus:=1 else minus:=0;
write('length: ', (length(inttostr(n))-minus));
if (n>0) then write(' and bigger then 0');
if (n) then write(' and smaller then 0');
if (n=0) then write(' and it is 0');
writeln;

Найдет количество цифр в числе. А не как у вас

Такой вариант программы не

Такой вариант программы не эффективен с точки зрения быстродействия. Если срабатывает второе условие, то нет смысла проверять третье и четвертое. А у вас оно будет проверяться. Поэтому правильнее использовать конструкцию if-else.

Можно сделать иначе.

Так как мы имеем четко поставленную задачу, то ее можно решить четко направленным кодом:

var x : string;
 
begin
    write('Enter number:'); readln(x);
    if (x[1] = '-') then
    begin
        writeln('Отрицательное');
        delete(x, 1, 1);
    end
    else
        writeln('Положительное');
 
    writeln('Длина - ', length(x));
end.

Проще и надежнее...

Var x:integer; s:string;
Begin

writeln('Enter your number : '); readln(x);
begin
If x = 0 then writeln('Zero')
else
begin
If x else writeln('Positive');
end
end;

str(x,s);

writeln('Length : ',length(s) );

readln;

End.