русский
Germany.ruForen → Архив Досок→ Computer & Co

кто в ПАСКАЛЕ разбирается?

111  
Niko13 прохожий24.10.02 17:31
Niko13
NEW 24.10.02 17:31 
нужно написать программу которая находит наименьшее общее кратное двух чисел
СПАСИБО
#1 
Alexden посетитель24.10.02 22:20
Alexden
NEW 24.10.02 22:20 
in Antwort Niko13 24.10.02 17:31
Ты сам принцип нахождения этого кратного знаешь ? если да то напиши а я тебе постараюсь помочь. чтото давно я математикой не занимался тормозной стал ...
Всегда с приветом ...
-=Alex Den=-
#2 
Alexden посетитель24.10.02 22:38
Alexden
NEW 24.10.02 22:38 
in Antwort Niko13 24.10.02 17:31
Ладно не стал много думать решил в инете найти что это такое и заодно наткнулся на решение ... ой ленивый я стал :(((
Var n,m,nok:integer;
{Функция, определяющая НОД двух чисел:}
Function nod(m,n:integer):integer;
Var r:integer;
begin
while n>0 do begin
r:=m mod n;
m:=n;
n:=r
end;
nod:=m;
end;
BEGIN {Основной программы}
{Ввод значений n и m:}
while n<=0 do
begin
write('Введите число n ',0);readln(n,0);
if n<=0 then
writeln('Число n должно быть положительным!')
end;
while m<=0 do
begin
write('Введите число m ',0);readln(m,0);
if m<=0 then
writeln('Число m должно быть положительным!')
end;
{Определяем и печатаем значение nok:}
nok:=m*n div nod(m,n,0);
writeln('НОК чисел n и m равен ', nok)
END.
Всегда с приветом ...
-=Alex Den=-
#3 
Alexden посетитель24.10.02 22:55
Alexden
NEW 24.10.02 22:55 
in Antwort Alexden 24.10.02 22:38
Niko13 прохожий25.10.02 00:39
Niko13
25.10.02 00:39 
in Antwort Alexden 24.10.02 22:55
СПАСИБО ЕЩЕ РАЗ
#5 
Niko13 прохожий25.10.02 14:43
Niko13
NEW 25.10.02 14:43 
in Antwort Niko13 25.10.02 00:39
еще один вопрос,
а=16 b=8
BEGIN
clrscr;
write('число_1=',0);readln(a,0);
write('число_2=',0);readln(b,0);
while b>0 do
begin
o:=a mod b;
a:=b;
b:=o;
end;
NOD:=a;
writeln(NOD,0);

NOK:=a*b div NOD;
writeln(NOK,0);
END.
ПОЧЕМУ ОН ПИШЕТ, ЧТО NOK=0 ???
#6 
Alexden посетитель25.10.02 15:03
Alexden
NEW 25.10.02 15:03 
in Antwort Niko13 25.10.02 14:43
while b>0 do
Смотри к чему ты здесь стремишься ...
begin
o:=a mod b;
a:=b;
b:=o;
end;
а здесь ты умножаешь твое а на б которое равно нулю :) заведи еще переменную , даже две - для старых значений а и б ... а что тебе с функцией то не понравилось то ?
NOK:=a*b div NOD;
Всегда с приветом ...
-=Alex Den=-
#7 
teuter прохожий25.10.02 18:51
NEW 25.10.02 18:51 
in Antwort Niko13 24.10.02 17:31
Я давно не программировал на Pascal, но думаю прога могла бы выглядеть так:
program n_o_k;
const
privet='*Данная программа вычисляет НОК двух целых положительнах чисел*'
question='Продолжить?(Y/N)'
foul='Число должно быть целым и положительным! Повторите ввод:'
var
a,b,result: integer;
stop: boolean;
function nod(a,b: integer): integer;
var
rest: integer;
begin
repeat
begin
rest:=a mod b;
a:=b;
b:=rest
end
until rest=0;
nod:=a
end;
function nok(a,b: integer): integer;
begin
nok:=a*b/nod(a,b)
end;
procedure eingabe;
begin
a=0; b=0;
while a<=0 do
begin
writeln('Введите первое число:',0);
readln(a,0);
if a<=0 then writeln (foul)
end;
while b<=0 do
begin
writeln('Введите второе число:',0);
readln(a,0);
if b<=0 then writeln (foul)
end
end;
procedure rechnung;
begin
result:=nok(a,b)
end;
procedure ausgabe;
begin
writeln ('НОК чисел ',a,' и ',b,' равен: ', result)
end.
begin {n_o_k}
ClrScr;
stop:=false;
writeln(privet,0);
repeat
begin
eingabe;
rechen;
ausgabe;
writeln(question,0);
if KeyPressed='Y' or KeyPressed='y' then stop:=true
end
until stop=true;
exit
end. {n_o_k}

Может быть, нужно ещ╦ какие-нибудь модули стандартные подключить, а также провести отладку, так как возможности откомпилировать и прогнать программу у меня нет.
Желаю удачи!!!
Если что пиши: teuter@germany.ru
#8 
Niko13 прохожий26.10.02 01:32
Niko13
NEW 26.10.02 01:32 
in Antwort Alexden 25.10.02 15:03
ввел две новых переьенных и пошло
СПАСИБО ЗА ПОМОЩ
#9