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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2014, 20:22   #1
Dalmar2008
 
Регистрация: 09.02.2014
Сообщений: 4
По умолчанию Минимальное произведение без массива

Нужно написать следующую программу:
Ввести N чисел(целых, могут быть как отрицательные, так и положительные) и найти минимальное произведение из двух символов. При этом массив использовать нельзя.
Например:
Входные данные:
5
3
5
2
7
10
Вывод:
6
Мои наработки:
Код:
var min1,min2,max1,max2,minG,n,a,i,k1,k2: integer;
begin
min1:=maxint;
min2:=maxint;
max1:=-maxint;
max2:=-maxint;
minG:=0;
readln(n);
 for i:= 1 to n do
begin
 readln(a);
 if a<min1 then
 begin
  min1:=a;
  k1:=i;
 end;
 if (i<>k1) and (a<min2) then min2:=a;
 if a>max1 then
 begin
  max1:=a;
  k2:=i;
 end;
 if (i<>k2) and (a>max2) then max2:=a; 
end;
 if (min1>0) and (min2>0) and (max1>0) and (max2>0) then
 begin
  writeln(min1*min2);
  exit;
 end;
 if (min1<0) and (min2<0) and (max1<0) and (max2<0) then
 begin
  writeln(max1*max2);
  exit;
 end;
 if (min1*max1)<(min2*max2) then minG:=min1*max1
     else minG:=min2*max2;
 if (min1*max2)<(min2*max1) then minG:=min1*max2
     else minG:=min2*max1;
 writeln(MinG);
end.

Последний раз редактировалось Stilet; 06.04.2014 в 22:35.
Dalmar2008 вне форума Ответить с цитированием
Старый 07.04.2014, 12:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

посмотрите на мой вариант:
Код:
var 
 n, A, Min1, Min2, Max, i : integer;
 isMin2 : boolean;
begin

 WriteLn('Введите количество чисел: ');
 ReadLn(n);

 if n<2 then begin
   WriteLn('Задача не имеет решения, чисел слишком мало!');
   Halt(1)
 end;

 ReadLn(A); {прочитали первое число }

 {иницилизация переменных для поиска минимальных/максимальных значений}
 Min1 := A; {считаем его минимальным}
 Max := A; {считаем его максимальным}
 isMin2 := false; {признак, что заполнено число Min2 уставливаем в ЛОЖЬ}

 for i:=2 to n do begin
   ReadLn(A); {прочитали очередное число }

   if A>Max then Max := A;

   if A<=Min1 then begin
       Min2 := Min1;
       isMin2 := true;
       Min1 := A;
   end
   else
     if (Not isMin2) then begin
       Min2 := A;
       isMin2 := true;
     end
     else
       if A<Min2 then Min2 := A;

 end;

 WriteLn('#debug info#');
 WriteLn(' min1 = ', min1,' min2 = ', min2, ' max = ', max);
 WriteLn;

 if Min1*Min2<Min1*Max then
   WriteLn(Min1*Min2)
 else
   WriteLn(Min1*Max);

 Readln

end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.04.2014, 13:03   #3
Dalmar2008
 
Регистрация: 09.02.2014
Сообщений: 4
По умолчанию

Serge_Bliznykov, огромное спасибо тему можно закрывать)
Dalmar2008 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
11. Найти произведение элементов нечетных строк массива. Вывести сам массив и произведение. p-6 Паскаль, Turbo Pascal, PascalABC.NET 1 29.11.2012 23:37
Минимальное значение массива Sweet-_-Orange Помощь студентам 7 12.02.2012 22:59
Минимальное значение без учета пустых ячеек mrantonio Microsoft Office Excel 4 26.06.2011 14:22
Произведение элементов массива в функции (передача массива в функцию) (Delphi) Toxa16 Помощь студентам 1 23.04.2011 04:42
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52