Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2011, 19:29   #1
venera-8
Новичок
Джуниор
 
Регистрация: 08.06.2011
Сообщений: 1
По умолчанию Программа на тему очередь.

вот задание.


Цитата:
Дано натуральное N и три простых числа P1, P2, P3. Найти N-ое по величине из натуральных чисел, в разложение которых на простые множители входят только числа P1, P2 и P3.
Вход:
В текстовом файле INPUT.TXT записаны числа N (1 <= N <= 10000), P1, P2, P3
( 2 <= P1 < P2 < P3 < 1000000).
Выход:
В текстовый файл OUTPUT.TXT записать найденное число.
Пример входа:
100 3 7 101
Пример выхода:
1750329
вот собственно код (написанный не мной)
Код:
Program lab4;
Type Toch=array[0..100] of integer;
Var
   N,P1,P2,P3,k,x:integer;
   x1,x2,x3:Toch;
   spos,rpos1,rpos2,rpos3:integer;
   f:text;
{добавить в очередь}
 procedure Qstore(var X:Toch; q:integer);
 begin
  if spos=100
   then WriteLn('Ochered zapolnena')
   else X[spos]:=q;
  end;

{выборка объекта из очереди }
function Qretrieve(var X:Toch;var rpos:integer):integer;
begin
 if rpos=spos
  then begin
        WriteLn('ochered pusta');
        Qretrieve:=0;
       end
  else begin
        rpos:=rpos+1;
        Qretrieve:=X[rpos-1];
       end;
end;

procedure print_Qstore(q:integer);
begin
 Qstore(x1, q*P1);
 Qstore(x2, q*P2);
 Qstore(x3, q*P3);
 spos:=spos+1;
end;

function min(a,b,c:integer):integer;
begin
 if (a<b) and (a<c)
  then min:=a
  else if (b<a) and (b<c)
        then min:=b
        else min:=c;
end;
   
begin
assign(f,'INPUT.TXT');
reset(f);
readln(f,N);
readln(f,P1);
readln(f,P2);;
readln(f,P3);
close(f);
spos:=0;
rpos1:=0;
rpos2:=0;
rpos3:=0;
print_Qstore(1);
k:=1;
while k<>N do
 begin
  x:=min(x1[rpos1],x2[rpos2],x3[rpos3]);
  print_Qstore(x);
  if x=x1[rpos1]
   then x:=Qretrieve(x1,rpos1);
  if x=x2[rpos2]
   then x:=Qretrieve(x2,rpos2);
  if x=x3[rpos3]
   then x:=Qretrieve(x3,rpos3);
  k:=k+1;
 end;
assign(f,'OUTPUT.TXT');
rewrite(f);
writeln(f,x);
close(f);
readln;
END.
когда ввожу числа из задания- выдает не верный ответ. я так понимаю программа не то что нужно считает.не могли бы вы помочь мне с этим заданием?
venera-8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать тему в турбо-паскале на тему типизированные файлы O!e&ka! Паскаль, Turbo Pascal, PascalABC.NET 0 29.05.2011 11:42
Программа на С++ , очень надо, на тему K[i]N[G] Общие вопросы C/C++ 4 31.03.2011 12:01
Программа на тему: конечные графы и их автоморфизмы. Реализация в С++ xxsergxx Фриланс 5 18.02.2011 02:30
программа реализации алгоритма "Сравнение и подсчет" сортировки для АТД «Очередь» (с одной головой) bender_prog Фриланс 7 08.01.2011 01:17
Программа на тему:"Теоретическая мехника" Andreyko Паскаль, Turbo Pascal, PascalABC.NET 7 05.06.2010 10:59