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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 22:11   #1
Sheffdmb2010
 
Регистрация: 18.10.2011
Сообщений: 9
По умолчанию Почему не работает ZAMENA?

Код:
uses crt;
const n=10;
type mas=array[1..n] of real;
var x,y:mas;
i:integer;
Procedure SOZD(var z:mas;k:integer);
var i:integer;
begin for i:=1 to k do
        z[i]:=-5+random(10);
end;

procedure VIVOD(z:mas;k:integer;t:string);
var i:integer;
begin writeln(t);
        for i:=1 to k do
         write(z[i]:6:3,' ');
            writeln;
end;
procedure SOZDOTR(z,x:mas;k:integer);
var i,c:integer;
begin c:=0;
        for i:=1 to k do
         begin if z[i]<0 then
                  begin c:=c+1;
                           x[c]:=z[i]
                   end;
         end;
        VIVOD(x,c,'massiv iz otricat')
END;

function min(z:mas;k:integer):real;
var i:integer;m:real;
begin m:=maxint;
        for i:=1 to k do if z[i]<m then m:=z[i];
        min:=m
end;
function max(z:mas;k:integer):real;
var i:integer;m:real;
begin m:=-maxint;
        for i:=1 to k do if z[i]>m then m:=z[i];
        max:=m
end;

function SRARP(z:mas;k:integer):real;
var i:integer;c,p:real;
begin c:=0;p:=0;
        for i:=1 to k do
         if z[i]>0 then begin c:=c+z[i];
                                    p:=p+1
                           end;
          if (c>0) and (p>0) then SRARP:=c/p
          else SRARP:=0

end;
procedure ZAMENA(z:mas;k:integer;zamen1,zamen2:real);
var i:integer;
begin for i:=1 to k do
        if z[i]=zamen1 then z[i]:=zamen2
end;

begin clrscr;randomize;
        SOZD(x,n); VIVOD(x,n,'massiv X');
        SOZDOTR(x,y,n);
         writeln('max= ',max(x,n):6:3,' ','min= ',min(x,n):6:3);
        if SRARP(x,n)<>0 then
        begin writeln('srednee arifmeti4= ',srarp(x,n):6:3);
               ZAMENA(x,n,min(x,n),SRARP(x,n));
                ZAMENA(x,n,max(x,n),SRARP(x,n));
                VIVOD(x,n,'massiv X posle zameny');
        end
        else writeln('v massive net polo)|(it 3lementov');
        readkey
end.
Всем доброго времени суток. Данная прога должна менять макс и мин в массиве на ср арифметич положит элементовю. Но почему-то она выводит исходный массив Может кто сможет помочь мне в решении этой проблемы. Буду премного благодарен!


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.10.2011 в 23:23.
Sheffdmb2010 вне форума Ответить с цитированием
Старый 18.10.2011, 23:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

остальное не смотрел, но, запомните на будущее,
если Вы изменяете какой-то параметер внутри процедуры/функции, то его нужно передавать ПО ССЫЛКЕ (дописать перед именем формального параметра ключевое слово var).
измените описание процедуры ZAMENA так:
Код:
procedure ZAMENA(var z:mas;k:integer;zamen1,zamen2:real);

p.s. саму программу (алгоритм/логику) я НЕ СМОТРЕЛ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.10.2011, 18:31   #3
Sheffdmb2010
 
Регистрация: 18.10.2011
Сообщений: 9
По умолчанию

Спасибо все заработало!!!
Sheffdmb2010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
почему не работает ((( yuta_86 Общие вопросы Delphi 2 24.12.2010 13:06
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46
почему не работает domovoi Общие вопросы Delphi 1 15.10.2008 18:42