Форум «Всё о Паскале» _ Задачи _ зделал програмку все нармальна идет и результаты выводит те которые нужна
Автор: maksimla 19.04.2008 16:12
вот программка
Код
program Bevarde1; var a,b,i,z:integer; x,y:array [1..1000] of integer; begin WriteLn('введиде большои делитель'); Readln(a); WriteLn('и наименьшее повторяющееся'); Readln(b); for i:= a*b downto 1 do y[i]:=i; for z:= a*b downto 1 do x[z]:=z; begin for i:= 1 to a*b do for z:= a*b downto 1 do if y[i]*x[z]=a*b then writeln(y[i],' и ',x[z]); end; readln end.
вводим 8 и 2 выводит 1 и 16 2 и 8 4 и 4 8 и 2 16 и 1 введешь большее число превышающее массив и все ошибка можна избавится от массива чтобы какое хочешь число в приделах longint ввел и небыло ошибки или чтобы сам себя массив регулировал ?
Автор: volvo 19.04.2008 16:26
Я вообще не понимаю, зачем тебе тут массив - ты ж его заполняешь линейно...
program Bevarde1; var a,b,i,z:longint; begin WriteLn('введите большой делитель'); Readln(a); WriteLn('и наименьшее повторяющееся'); Readln(b);
for i:= 1 to a*b do for z:= a*b downto 1 do if i * z = a*b then writeln(i, ' и ', z); readln end.
Результаты совпадают с твоими...
Только учти, что работать правильно это будет только тогда, когда A*B помещается в диапазон LongInt, а не для любых двух чисел из диапазона LongInt...