• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, с двумя программами на Turbo Pascal

кот67

Ученик
Регистрация
21 Дек 2015
Сообщения
2
Реакции
0
Баллы
0
Помогите, пожалуйста, с двумя программами на Turbo Pascal

1. Задача на циклы
В диапазоне [M, N] найти число с максимальной суммой делителей. Турбо Паскаль.
2. Одномерный массив
В массиве A(n) подсчитать количество минимальных элементов. Турбо Паскаль.
Буду очень благодарен.
 
№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.
 
№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.
 
можно задачу №1 с комментарием?плиз
 
Код:
function Summ(ai:integer):integer;
var  j,k:integer;
begin
     if ai=1                {[COLOR="Red"]если заданное число 1, то у него один делитель[/COLOR]}
      then Summ:=1          {[COLOR="Red"]значению функции присваивается 1[/COLOR]}
      else                  {[COLOR="Red"]если не равно 1[/COLOR]}
       begin
         k:=0;              {[COLOR="Red"]обнуление суммы[/COLOR]} 
          for j:=1 to ai do {[COLOR="Red"]инициализация цикла до заданного числа[/COLOR]}
           if (ai mod j)=0 then {[COLOR="Red"]если нет остатка при делении, то это делитель[/COLOR]}
            k:=k+j;         {[COLOR="Red"]суммирование делителей[/COLOR]}
             Summ:=k;       {[COLOR="Red"]значению функции присваивается сумма[/COLOR]}
       end;
end;
var  n,m,i,sum,t,e:integer;
begin
     Write('M = ');
      Readln(m);            {[COLOR="Red"]ввод первого значения диапазона[/COLOR]}
       Write('N > M = ');
        Readln(n);          {[COLOR="Red"]ввод второго значения диапазона[/COLOR]}
         Writeln;
     sum:=0; t:=0;          {[COLOR="Red"]обнуление наибольшей суммы делителей[/COLOR]}
      for i:=m to n do      {[COLOR="Red"]инициализация цикла перебора в диапазоне[/COLOR]}
       begin
         e:=Summ(i);        {[COLOR="Red"]вызов функции подсчёта суммы делителей очередного числа[/COLOR]}  
          if e>sum then     {[COLOR="Red"]если значение функции больше наибольшей суммы то[/COLOR]}
           begin          
             t:=i;          {[COLOR="Red"]запоминаем число[/COLOR]}
              sum:=e;       {[COLOR="Red"]запоминаем сумму[/COLOR]}
           end
       end;
     Writeln('Cislo = ',t);
      Writeln('Summa deliteley = ',sum);
     Readln;
end.
 
Назад
Сверху