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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2015, 12:28   #1
sasha_virtus95
 
Регистрация: 16.11.2015
Сообщений: 4
По умолчанию Даны два массива А и В. Разработайте программу, содержащую процедуру, которая находит среднеарифметическое ... (Pascal ABC)

Даны два массива А и В. Разработайте программу, содержащую процедуру, которая находит среднеарифметическое отрицательных компонентов, расположенных после максимального элемента.
sasha_virtus95 вне форума Ответить с цитированием
Старый 16.11.2015, 16:29   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

можно как то так
Код:
const 
n = 10 ;
type 
	vect=array [1..n] of integer;
var 
arr1,arr2:vect;
i:byte;

procedure VECTOR (n,a,b:integer; var arr:vect);
	var i: integer;
begin
 randomize;
 for i:= 1 to n do
	arr[i]:=random(b-a+1)+a;
end;


function Max(n:Byte;arr:Vect):byte;
	var ma:integer;
		inMax,i:byte;
begin
 ma:=(arr[1]);
 for i:=2 to n do
	if (arr[i] > ma) then 
		Begin
		  ma:=arr[i];
		  inMax:=i;
		end;
		max:=inMax;
end;


function srAr(n:Byte;arr:Vect):real;
	var sum:integer;
		pov,i:byte;
begin
sum:=0;
pov:=0;
for i:=(Max(n,arr)+1) to n do
	if arr[i]<0 then 
    	begin
		 sum:=sum+arr[i];
		 inc(pov);
	    end;
srAr:=sum/pov;
end;

procedure writeporjadok(n:integer; arr:vect);
	var i:integer;
begin 
 for i:=1 to n do
	Write(arr[i]:3);
end;

begin 
VECTOR(n,-5,2,arr1);
writeporjadok(n,arr1);
Writeln;
Writeln('Max = ',arr1[Max(n,arr1)]);
Writeln;
Writeln('ednee arefmeticheskoe',srAr(n,arr1):3:5);

VECTOR(n,-5,2,arr2);
writeporjadok(n,arr2);
Writeln;
Writeln('Max = ',arr1[Max(n,arr2)]);
Writeln;
Writeln('ednee arefmeticheskoe',srAr(n,arr2):3:5);
readln;
readln;
end.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 16.11.2015, 17:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

В целом всё хорошо.
Но есть замечания.

Цитата:
Код:
function Max(n:Byte;arr:Vect):byte;
	var ma:integer;
		inMax,i:byte;
begin
 ma:=(arr[1]);
 for i:=2 to n do
	if (arr[i] > ma) then 
		Begin
		  ma:=arr[i];
		  inMax:=i;
		end;
		max:=inMax;
end;
допущена очень грубая ошибка. поставьте максимальный элемент первым и расскажите, что вернёт функция?!
да и переменная ma избыточна.
сравните
Код:
function Max(n:Byte;arr:Vect):byte;
var inMax,i:byte;
begin
 inMax:=1;
 for i:=2 to n do
   if (arr[i] > arr[inMax]) then inMax := i;
 max:=inMax;
end;

при вычислении среднего нужно проверять, что переменная pov не равна нулю.
Если отрицательных элементов после максимального нет - то в этой строке
Цитата:
Код:
srAr:=sum/pov;
будет деление на ноль.

Последний раз редактировалось Serge_Bliznykov; 16.11.2015 в 17:09.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2015, 17:29   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
строке будет деление на ноль.
каюсь, на ноль больше делить не буду.

а вообщем спасибо, постараюсь больше не повторять глупых ошибок.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны два целочисленных массива. Выяснить, является ли один из них подмножеством другого (Free Pascal) Ilai Помощь студентам 2 12.11.2014 16:51
Программа, которая находит в массиве значения, повторяющиеся два и более раз yugik Общие вопросы C/C++ 6 08.03.2013 18:14
Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран -KAZtrel- Помощь студентам 1 18.11.2011 23:25
Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран -KAZtrel- Помощь студентам 2 18.11.2011 22:29
Напишите процедуру SeekFun(f), которая находит в файле, содержащем текст программы на Паскале, идентифика polarity Помощь студентам 0 05.06.2010 18:57