Напишите пожалуйста на...

Тема в разделе "Информатика", создана пользователем Alexnap, 1 мар 2010.

  1. Alexnap

    Alexnap New Member

    Напишите пожалуйста на PascalABC Дано N целых чисел. Требуется выбрать из них два таких числа, произведениекоторых максимально.
    Вводится сначала число N - количество чисел в последовательности (2 ≤ N ≤ 100). Далее записана сама последовательность: N целых чисел, по модулю не превышающих 1000.
    Выведите два искомых числа в любом порядке. Если существует несколько различных пар чисел, дающих максимальное произведение, то выведите любую из них.
     
  2. Dikaya

    Dikaya New Member

    var
      N: 2..100;
      a: array [1..100] of -1000..1000;
      max1, max2, MaxPr, i, j: integer;  {MaxPr - максимальное произведение, max1 и max2 - искомые числа}
    function RangeOverfilling(Number: integer; Index: integer): integer; {Функция, возвращающая число в диапазон}
    begin
      if Number in [1..Index] then result := Number;
      if Number > Index then result := Number mod Index;
      if Number < 1 then result := Index + Number mod Index;
    end;
     
    begin
      MaxPr:= -maxint; {Присваиваем максимальному проиведению начальное значение, равное максимальному числу типа integer, взятому со знаком -}
      writeln('Введите N');
      readln(N);
      for i:= 1 to N do
      begin
        writeln('Введите целое число, по модулю не превышающее 1000');
        readln(a);
      end;
      for i:= 1 to N - 1 do
      for j:= 1 to RangeOverfilling(N - i, N) do
        if a * a[i + j] > MaxPr then
        begin
          MaxPr:= a * a[i + j];
          max1:= a;
          max2:= a[i + j];
        end;
      writeln('Пара чисел, дающих максимальное произведение: ', max1,' и ', max2);
    end.
      
      
     

Поделиться этой страницей

Наша группа