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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 22:28   #1
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию Организация в процедуры части кода !

//Заданы два целых числа М, N. Определить, больше ли сумма простых делителей
//числа М, произведения составных делителей числа N.
Код:
uses crt;
var n,i,kol,pro,m,j,sum,c,delit:integer;
flag:boolean;
begin
kol:=0;
pro:=1;
sum:=0;

repeat
writeln('Введите первое число');
readln(n);
if n=1 then writeln('0 и 1 нельзя вводить ', 'сумма простых делителей этого числа= ',sum)
       else if n=0 then writeln('0 и 1 нельяз вводить ', 'сумма простых делителей этого числа= ',sum);
until n>1;

for i:=2 to n-1 do
   if n mod i=0 then begin
              flag:=true;
              delit:=2;
              while flag and (delit<=i div 2) do
                      if i mod delit=0 then flag:=false
                                       else delit:=delit+1;
             if flag then sum:=sum+i;
                      end;

writeln('сумма простых делителей этого числа= ',sum);

repeat
writeln('Введите второе число');
readln(m);
if m=1 then writeln('0 и 1 нельзя вводить ', 'сумма простых делителей этого числа= ',sum)
       else if m=0 then writeln('0 и 1 нельяз вводить ', 'сумма простых делителей этого числа= ',sum);
until m>1;

flag:=true;
delit:=2;

for i:=2 to m-1 do

if m mod i=0 then begin
kol:=kol+1;
while flag and (delit<=i div 2) do
      if i mod delit=0 then
                        begin
                        flag:=false;
                        pro:=pro*i;
                        end
                        else
                        delit:=delit+1;

end;
if kol=0 then pro:=0;
writeln('произведение составных делителей этого числа= ',pro);


if n>pro then writeln('сумма простых делителей первого числа равная ',sum, ' > ', ' произведения составных делителей второго числа равного ', Pro)
         else if n<pro then writeln('сумма простых делителей первого числа равная ',sum, ' < ', ' произведения составных делителей второго числа равного ', Pro)
                       else writeln('сумма простых делителей первого числа равная ',sum, ' = ', ' произведению составных делителей второго числа равного ', Pro);


end.

Кто может подскажите (по возможности покажите), какие части кода можно организовать процедурами. Что-то голова уже не соображает, помоему тут любая процедура будет бесцельна в плане универсальности её применения...

Последний раз редактировалось Stilet; 26.12.2011 в 22:41.
Alexbmgn вне форума Ответить с цитированием
Старый 27.12.2011, 02:04   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> тут любая процедура будет бесцельна в плане универсальности её применения

не факт.

Создайте процедуру нахождения суммы делителей числа, ей будет передаваться само число и два boolean параметра, определяющих, нужны нам простые или составные делители, и их сумма или произведение. После этого ваша программа из текущей каши превратится в стойный цветок:

Код:
readln(N, M);
//
if ((findDivisorsOp(M, false, false) > findDivisorsOp(N, true, true)) then
  writeln('Да, в общем-то, похоже, что больше.')
else
  writeln('Или меньше, или равна, но явно не больше.')
сама findDivisorsOp() может выглядеть так:
Код:
function findDivisorsOp(X: Integer; Complex: Boolean; Multiply: Boolean): Integer;
begin
  if (Complex) then ... // ищем составные делители
  else  ... // ищем простые делители
  //
  if (Multiply) then ... // вычисляем произведение
  else  ... // вычисляем сумму
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение кода на части kilgore Общие вопросы Delphi 11 17.07.2017 14:53
статья - Организация кода Pblog Обсуждение статей 0 11.11.2011 16:40
if then в части процедуры kostghost Помощь студентам 2 20.03.2010 19:21
JS для скрытия части кода lukoie JavaScript, Ajax 3 29.01.2010 09:34
Замена части кода при отключённом JavaScript в браузере DJ Triton PHP 7 18.08.2009 19:47