2017-01-15 3 views
1

Я хочу написать программу pascal, которая проверяет, делится ли определенное число на 2, 3, 5, 7, 9 и 11 и будет ли сумма цифр четной или нечетной. В самом конце я хочу написать оператор типа «Это число делится на 5 и 9», а сумма чисел четная/нечетная. Что мне делать?Делимость чисел в pascal

+0

Нет, честно, я даже не знаю, как начать. – charlie

+0

Число даже делится с другим числом, если остаток равен нулю. Используйте оператор mod, чтобы проверить это. Используйте функцию Odd для проверки того, является ли число нечетным. Чтобы сделать сумму цифр, которая делает число, добавьте модуль 10 числа к сумме и разделите число на 10 в цикле, пока число не станет равно нулю. –

+1

Вы можете использовать ** mod ** для проверки конкретного номера –

ответ

0

Это Мой код, я разделить на 2 части:

program checkNumber; 
var number : integer; 
    divider : string; 
    digit1, digit2, sum : integer; 

begin 

//First// 
write('Number : '); readln(number); 
if (number MOD 2 = 0) then divider := divider+'2, '; 
if (number MOD 3 = 0) then divider := divider+'3, '; 
if (number MOD 5 = 0) then divider := divider+'5, '; 
if (number MOD 7 = 0) then divider := divider+'7, '; 
if (number MOD 9 = 0) then divider := divider+'9, '; 
if (number MOD 11 = 0) then divider := divider+'11, '; 
write('This number is divisible by '); write(divider); 
//////////////////////////////////////////////////////// 

//Second// 
digit1 := number DIV 10; 
digit2 := number MOD 10; 
sum := digit1 + digit2; 
write('and the sum of the numbers is '); 
if (sum MOD 2 = 0) then write('even') else write('odd'); 
//////////////////////////////////////////////////////// 

end. 

Первая часть

Вам нужны MOD (модуль) операции, чтобы получить список значений делителя:

write('Number : '); readln(number); 
if (number MOD 2 = 0) then divider := divider+'2, '; 
if (number MOD 3 = 0) then divider := divider+'3, '; //divider 2 3 5 7 9 11 
. 
. 

Затем сохранить делитель в переменный делителя как строка и записать его на мониторе.

write('This number is divisible by '); write(divider); 

Вторая часть

Вы должны отделить цифры в одну переменную с помощью DIV (деление) и MOD (модуль) операции. В моем коде, я ограничить ввод номера для 2 цифры (1 до 99):

digit1 := number DIV 10; 
digit2 := number MOD 10; 
sum := digit1 + digit2; 

(Вы изменить использование кода if..then .. функцию, если вы хотите ввода большего числа).


Затем используйте MOD проверить число четным или нечетным:

if (sum MOD 2 = 0) then write('even') else write('odd'); 
+1

спасибо, теперь я, наконец, понимаю это. :) – charlie

+0

Решена ли ваша проблема? –

+0

Да, это так! :) – charlie

1

Использование модуля:

program ModulusTest; 
begin 
     if 8 mod 2 = 0 then 
     begin 
       write(8); 
       writeln(' is even'); 
     end; 
     if 30 mod 5 = 0 then 
     begin 
       write(30); 
       writeln(' is divisible by 5'); 
     end; 
     if 32 mod 5 <> 0 then 
     begin 
       write(32); 
       writeln(' is not divisible by 5'); 
     end; 
end. 

Modulus является то, что остается после того, как целочисленного деления :)

+0

Отлично, спасибо! Один вопрос: что означает 8, 30, 32? Или это просто случайные числа, и это просто пример? – charlie

+0

Есть только что полностью составленные номера :) – jacmoe

+0

Хорошо. И не могли бы вы рассказать мне, почему вы использовали <> вместо = в последнем примере? – charlie

Смежные вопросы