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

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

Форум «Всё о Паскале» _ Задачи _ зделал програмку все нармальна идет и результаты выводит те которые нужна

Автор: 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...