Показать сообщение отдельно
Старый 20.11.2009, 22:09   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Denim1916 Посмотреть сообщение
и вот еще одна...
Заданный масив целых чисел делится на три части двумя элементами: максимальным и минимальным. определите сумму элементов в каждой части массива. используйте функции для нахождения индексов минимального и максимального элементов и подсчета суммы элементов в указанной части массива..
Благодарю за ранее( особенно тем кто придумал этот сайт огромное спасибо и большой респект и уважуха!!!)))))))
Как-то так. Ничего, что для индексов использована процедура, а не функции? Если это критично, процедуру можно разбить на две функции, просто программа еще раздуется. Ну а уж подсчет сумм в какие-то функции упихивать - по-моему, перебор. По здравому смыслу тут вообще подпрограммы ни нафиг не нужны!

Код:
CONST
 N=7;
 R=50;
TYPE
 AR=ARRAY[1..N] of INTEGER;
VAR
 A:AR;
 i,Imax,Imin,S1,S2,S3,b1,b2:INTEGER;

PROCEDURE Search_Min_Max(As:AR; VAR IminS, ImaxS:INTEGER);
 VAR
  Max,Min,Is,IminScur,ImaxScur:INTEGER;
 BEGIN
  Max:=-(R+1);
  Min:=R+1;
  FOR Is:=1 TO N DO
   BEGIN
    IF As[Is]>Max THEN
     BEGIN
      Max:=A[Is];
      ImaxScur:=Is;
     END;
    IF As[Is]<Min THEN
     BEGIN
      Min:=A[Is];
      IminScur:=Is;
     END;
   END;
  ImaxS:=ImaxScur;
  IminS:=IminScur;
 END;

BEGIN
 Randomize;
 FOR i:=1 TO N DO
   BEGIN
    A[i]:=RANDOM(2*R)-R;
    Write(A[i]:4);
   END;
 WriteLn;
 WriteLn;

 Search_Min_Max(A,Imin,Imax);
 IF Imin<Imax THEN
  BEGIN
   b1:=Imin;
   b2:=Imax;
  END ELSE
  BEGIN
   b1:=Imax;
   b2:=Imin;
  END;

 S1:=0;
 S2:=0;
 S3:=0;

 FOR i:=1 TO b1 DO
  S1:=S1+A[i];
 FOR i:=b1 TO b2 DO
  S2:=S2+A[i];
 FOR i:=b2 TO N DO
  S3:=S3+A[i];

 WriteLn('S1= ',S1);
 WriteLn('S2= ',S2);
 WriteLn('S3= ',S3);

 ReadLn;

 END.
И еще. В условии не сказано, включать или не включать максимальный и минимальный элементы в подсчет сумм. В программе они включены, причем каждый - дважды (подсчитывается сумма от первого элемента до, например, минимального (включая последний), потом от минимального до максимального (включая оба) и, наконец, от максимального до последнего, тоже включая максимальный.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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