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

Задача: 

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

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

Алгоритм решения задачи: 
  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) < 10 then
			write('single')
		else 
			if (abs(n) >= 10) and (abs(n) < 100) 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

Комментарии

Мой вариант правда на C#

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Сказать сколько цифр в числе и его знак");
            Console.WriteLine("Введите число:");
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.White;
 
            string number = Console.ReadLine();
            string tmp = Convert.ToString(number);
            char[] num = tmp.ToCharArray();
 
            if (int.Parse(number) > 0)
                Console.WriteLine("Число {0} положительное и состоит из {1} цифр", number, num.Length);
            else
                Console.WriteLine("Число {0} отрицательное и состоит из {1} цифр", number, num.Length-1);

Можно проще

var
  minus, n:integer;
begin
readln(n);
if (n<0) then minus:=1 else minus:=0;
write('length: ', (length(inttostr(n))-minus));
if (n>0) then write(' and bigger then 0');
if (n<0) 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.

Быстро, не значит качественно, твой вариант хуже.

Если я введу -(-4) то твоя прога ответит что длина: 4.
Вот скрин http://www.fayloobmennik.net/5582653

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

Var x:integer; s:string;
Begin
 
    writeln('Enter your number : '); readln(x);
      begin
        If x = 0 then writeln('Zero')
         else 
        begin
           If x<0 then writeln('Negative')
          else writeln('Positive');
        end
      end;
 
   str(x,s); 
 
 writeln('Length : ',length(s) );
 
  readln;
 
End.

не надежнее, если число

не надежнее, если число отрицательное lenght посчитает и минус тоже, соответственно при отрицательном числе количество цифр(разрядов) будет ошибочно, на один больше.