Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Определение счастливого числа!


Автор: Konstantiiin 13.1.2007, 06:21
Из N введенных с клавиатуры 6-ти значных чисел определить "счастливые" номера.
Ими считаются те числа у которых сумма первых трех чисел равна сумме вторых трех чисел.
Например: 123231 - счастливое!

Помогите! PLZ

Автор: doomik 13.1.2007, 13:51
Код

program LuckyNum;
var { main }
   Number:longint;
    FUNCTION First3(N:longint):byte; { readln -> 1 2 3 4 5 6 } 
        var 
        Num1, Num2, Num3:byte;
        begin
            Num1 := N div 100000; {1}
            Num2 := ( N mod 100000 ) div 10000; {2}
            Num3 := ( N mod 10000 ) div 1000; {3}
            First3:= Num1 + Num2 + Num3; { Передаем сумму первых 3  чисел функции }
        end;
    
    FUNCTION Last3(N:longint):byte; 
        var
        Num1, Num2, Num3:byte;
        begin
            Num1 := ( N mod 1000 ) div 100; {4}
            Num2 := ( N mod 100 ) div 10; {5}
            Num3 := N mod 10; {6}
            Last3:= Num1 + Num2 + Num3; { Передаём сумму последних 3 чисел функции  }
        end;

begin { main }

   writeln('Enter number:');
   readln(Number);
   while Number <> 0 do
    begin
        if ( First3(Number) = Last3(Number) ) then { Проверяем если первые 3 и последние 3 числа равны }
            writeln(Number,' is lucky number!');
        writeln('Enter number:');
        readln(Number);
    end;
readln;
end.


или с помощи цикла for 
добавляем в var { main }:
Код

var { main }
    Number, N, I:longint;


и заменяем предыдущий { main } на этот код:
Код

begin { main program }
    writeln('Enter N:');
    readln(N);

    for I:= 1 to N do
        begin
            writeln('Enter number:');
            readln(Number);
            if ( First3(Number) = Last3(Number) ) then  { Проверяем если первые 3 и последние 3 числа равны }
                writeln(Number,' is lucky number!');
        end;
readln;
end.

Автор: volvo877 13.1.2007, 14:34
Или обходимся вообще одной функцией:
Код

function get_s(n: integer): integer;
var _result: integer;
begin
  _result := 0;
  while n > 0 do begin
    _result := _result + (n mod 10);
    n := n div 10;
  end;
  get_s := _result;
end;

var n: longint;
begin
  write('n = '); readln(n);
  if get_s(n mod 1000) = get_s(n div 1000) then writeln('yes')
  else writeln('no');
end.

Автор: Konstantiiin 13.1.2007, 15:20
Спосибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)