Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Помогите, пожалуйста, с двумя программами на Turbo Pascal (http://www.tehnari.ru/f43/t105953/)

кот67 21.12.2015 20:21

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

Евгений 21.12.2015 20:53

№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

№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.


кот67 24.12.2015 22:58

можно задачу №1 с комментарием?плиз

Евгений 25.12.2015 17:07

Код:

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.



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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.