Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ деление чисел

Автор: Гость 31.05.2006 3:03

п-а,которая делает проверку, делится ли числo А на число B

Автор: Zxzc 31.05.2006 3:10

Любое A делится на любое B не равное 0! smile.gif
Наверное, без остатка?

If a div b = a/b then write('delits') else write('NOT');

Автор: volvo 31.05.2006 3:13

Все-таки остаток лучше mod-ом вычислять... Для чего-то же он есть в Паскале...

Автор: Гость 31.05.2006 3:32

а возможно ли решение этой программы через массив или функцию, или рекурсию?

Автор: Zxzc 31.05.2006 3:36

Цитата
а возможно ли решение этой программы через массив или функцию, или рекурсию?

blink.gif blink.gif blink.gif blink.gif (Нет смайлика с отпадающей челюстью dry.gif )
Я даже не знаю что и ответить.... Задача в 3 строки
var a,b:integer
begin
readln(a,b);
If a mod b <>0 then write('delits') else write('NOT');
end.

Автор: Гость 31.05.2006 3:41

я понимаю,но я пишу курсовик,а там такая пр-га,я и подумал,что мало ли.... wacko.gif wacko.gif wacko.gif я уже с ума схожу

Автор: Zxzc 31.05.2006 3:48

Цитата
я уже с ума схожу

А я уж было подумал что со мной что-то... smile.gif

Автор: volvo 31.05.2006 3:58

Ну, в принципе, можно через функцию сделать (вычислить НОД(A, B), и если он = 1, то число A не делится на B нацело):

function GCD (A: integer;  B: integer): integer;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
GCD := a + b;
end;

Var A, B: integer;
begin
ReadLn(A, B);
If GCD(A, B) <> 1 Then Write('Yes') Else Write('No');
end.


При желании можно и рекурсивно GCD вычислить...

Автор: Dmitry 31.05.2006 4:11

Цитата
а возможно ли решение этой программы через массив или функцию, или рекурсию?

Можно. У нас в начале этого года такая лаба была. Массивом (или сторокой но ею дольше) можно вычислять, если числа очень большие и не влезают ни в один тип данных (десятки разрядов).

Автор: klem4 31.05.2006 14:01

Цитата
Я даже не знаю что и ответить.... Задача в 3 строки

var a,b:integer
begin
readln(a,b);
If a mod b <>0 then write('delits') else write('NOT');
end.



Всеже наверное
Код
If a mod b = 0 then write('delits')


? mod - остаток от деления а на б, если он НЕ равен нулю значит деления нацело не было.

Автор: Zxzc 31.05.2006 14:12

Цитата
Всеже наверное

Код
If a mod b = 0 then write('delits')



? mod - остаток от деления а на б, если он НЕ равен нулю значит деления нацело не было.


Ну да.. yes2.gif Я это и имел в виду smile.gif