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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2015, 18:23   #1
vlad0079
 
Регистрация: 11.05.2015
Сообщений: 4
Восклицание Помогите с Паскалем,пожалуйста.

Составить программу для нахождения чисел из интервала [M, N], имеющих наибольшее количество делителей.
Только обязательно через процедуру!!!

Вот программа, решённая через функцию
Код:
uses crt;
function KolDel(n:longint):integer;
var i,k:integer;
begin
k:=1;
for i:=1 to round(sqrt(n))do
if n mod i=0 then k:=k+1;
KolDel:=k;
end;
var m,n,i:longint;
mx:integer;
begin
clrscr;
repeat
writeln('Ведите интервал вычислений n>m');
readln(m,n);
until n>m;
mx:=1;
for i:=m to n do
if KolDel(i)>mx then mx:=KolDel(i);
writeln('Максимальное количество делителе=',mx,' имеют: ');
for i:=m to n do
if KolDel(i)=mx then write(i,' ');
readln
end.
Используйте тег code для оформления программного кода. Подробнее по ссылке: http://www.programmersforum.ru/showp...23&postcount=4

Последний раз редактировалось Вадим Мошев; 05.06.2015 в 18:35.
vlad0079 вне форума Ответить с цитированием
Старый 05.06.2015, 19:12   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Или так
Код:
procedure procKolDel(n:longint;var KolDel:integer);
var i,k:integer;
begin
k:=1;
for i:=1 to round(sqrt(n))do
if n mod i=0 then k:=k+1;
KolDel:=k;
end;

var m,n,i:longint;
    mx,kd:integer;
begin

repeat
writeln('Введите интервал вычислений m,n (n>m)');
readln(m,n);
until n>m;
mx:=1;
for i:=m to n do
 begin
  procKolDel(i,kd);
  if kd>mx then mx:=kd;
 end;
writeln('Максимальное количество делителе=',mx,' имеют:  ');
for i:=m to n do
 begin
  procKolDel(i,kd);
  if kd=mx then write(i,' ');
 end;
readln
end.
Или так
Код:
function KolDel(n:longint):integer;
var i,k:integer;
begin
k:=1;
for i:=1 to round(sqrt(n))do
if n mod i=0 then k:=k+1;
KolDel:=k;
end;

procedure prDelit(k1,k2:LongInt;var mxd:Integer);
var i:LongInt;
begin
 mxd:=1;
 for i:=k1 to k2 do
  if KolDel(i)>mxd then mxd:=KolDel(i);
end;

var m,n,i:longint;
    mx:integer;
begin

repeat
writeln('Введите m, n  (n>m)');
readln(m,n);
until n>m;
prDelit(m,n,mx);
writeln('Максимальное количество делителе=',mx,' имеют:  ');
for i:=m to n do
  if KolDel(i)=mx then write(i,' ');
readln
end.

Последний раз редактировалось type_Oleg; 05.06.2015 в 19:14.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с паскалем(( nikitaong Помощь студентам 5 06.12.2013 15:55
Помогите пожалуйста с Паскалем Jenny104 Помощь студентам 1 22.10.2008 08:38
Помогите с Паскалем пожалуйста LLIypLLIyH Помощь студентам 0 31.05.2008 08:40
помогите пожалуйста с Паскалем!!! STEPP Помощь студентам 2 29.05.2008 10:52
помогите с паскалем, пожалуйста Зинуся Помощь студентам 6 28.04.2008 02:02