Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 21.12.2015, 20:21   #1 (permalink)
кот67
Новичок
 
Регистрация: 21.12.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, с двумя программами на Turbo Pascal

1. Задача на циклы
В диапазоне [M, N] найти число с максимальной суммой делителей. Турбо Паскаль.
2. Одномерный массив
В массиве A(n) подсчитать количество минимальных элементов. Турбо Паскаль.
Буду очень благодарен.
кот67 вне форума   Ответить с цитированием

Старый 21.12.2015, 20:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Представлю вашему вниманию схожие с вашей темы

Привет, помогите в написании программы TURBO PASCAL
Помогите, пожалуйста, написать программу на Turbo Pascal

Старый 21.12.2015, 20:53   #2 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

№2.

Код:
var  A:array[1..50] of integer;
     i,n,m,min:integer;
begin
     Write('Razmer massiva <50 = ');
      Readln(n);
       Writeln; Writeln;
     Writeln('Massiv A:');
      Writeln;
     Randomize;
      for i:=1 to n do
       begin
         A[i]:=Random(20);
          Write(A[i]:4);
       end;
            Writeln; Writeln;
     min:=A[1];
      m:=1;
       for i:=2 to n do
        if A[i]<min
         then
          begin
            min:=A[i];
             m:=1;
          end
         else
          if A[i]=min
           then Inc(m);
     Writeln('Min = ',min);
      Writeln('V massive min.elementov : ',m);
    Readln;
end.
Евгений вне форума   Ответить с цитированием
Старый 21.12.2015, 21:19   #3 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

№1 (если я правильно понял задание)

Код:
function Summ(ai:integer):integer;
var  j,k:integer;
begin
     if ai=1
      then Summ:=1
      else
       begin
         k:=0;
          for j:=1 to ai do
           if (ai mod j)=0 then
            k:=k+j;
             Summ:=k;
       end;
end;
var  n,m,i,sum,t,e:integer;
begin
     Write('M = ');
      Readln(m);
       Write('N > M = ');
        Readln(n);
         Writeln;
     sum:=0; t:=0;
      for i:=m to n do
       begin
         e:=Summ(i);
          if e>sum then
           begin
             t:=i;
              sum:=e;
           end
       end;
     Writeln('Cislo = ',t);
      Writeln('Summa deliteley = ',sum);
     Readln;
end.
Евгений вне форума   Ответить с цитированием
Старый 24.12.2015, 22:58   #4 (permalink)
кот67
Новичок
 
Регистрация: 21.12.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

можно задачу №1 с комментарием?плиз
кот67 вне форума   Ответить с цитированием
Старый 25.12.2015, 17:07   #5 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Код:
function Summ(ai:integer):integer;
var  j,k:integer;
begin
     if ai=1                {если заданное число 1, то у него один делитель}
      then Summ:=1          {значению функции присваивается 1}
      else                  {если не равно 1}
       begin
         k:=0;              {обнуление суммы} 
          for j:=1 to ai do {инициализация цикла до заданного числа}
           if (ai mod j)=0 then {если нет остатка при делении, то это делитель}
            k:=k+j;         {суммирование делителей}
             Summ:=k;       {значению функции присваивается сумма}
       end;
end;
var  n,m,i,sum,t,e:integer;
begin
     Write('M = ');
      Readln(m);            {ввод первого значения диапазона}
       Write('N > M = ');
        Readln(n);          {ввод второго значения диапазона}
         Writeln;
     sum:=0; t:=0;          {обнуление наибольшей суммы делителей}
      for i:=m to n do      {инициализация цикла перебора в диапазоне}
       begin
         e:=Summ(i);        {вызов функции подсчёта суммы делителей очередного числа}  
          if e>sum then     {если значение функции больше наибольшей суммы то}
           begin          
             t:=i;          {запоминаем число}
              sum:=e;       {запоминаем сумму}
           end
       end;
     Writeln('Cislo = ',t);
      Writeln('Summa deliteley = ',sum);
     Readln;
end.
Евгений вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:42.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.