Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример 9.9



Дана матрица C(4х6), каждая строка которой содержит положительные, отрицательные и нулевые элементы. Сформировать вектор D(4) по следующему правилу: если количество положительных элементов i-той строки (i=1..4) больше количества отрицательных, элементу вектора D присвоить значение равное 1, в противном случае 0. Подсчёт количества положительных и отрицательных элементов строки оформить в виде процедуры.

Алгоритм главной программы

       
 
 
   


Алгоритм подпрограммы

 
 


program example99;

type t = array [1..4,1..6] of real;

r = array [1..4] of real;

var

c: t;

d: r;

m, n, s1, s2: integer;

procedure Pro (f: t; var k1, k2:integer; i: integer);

var

j:integer;

begin

for j:=1 to 6 do

if f [i,j] > 0 then k1:= k1 + 1 else

if f [i, j] < 0 then k2:= k2 + 1

end;

{ ***** начало главной программы ***** }

begin

for m:=1 to 4 do

for n:=1 to 6 do read (c [m, n]);

writeln;

for m:=1 to 4 do

begin

s1:=0; s2:=0; Pro (c, s1, s2, m);

if s1 > s2 then d [ m ]:= 1 else d [ m ]:= 0;

end;

writeln ('Вектор D ');

for m:=1 to 4 do write (d [ m ])

end.

Сложный цикл, который необходим для обработки заданной матрицы, разделён между процедурой и главной программой. Процедура содержит внутренний цикл, который обрабатывает строку матрицы, подсчитывая в ней количество положительных и отрицательных элементов.

Внешний цикл, расположенный в главной программе, меняет номера строк матрицы и передаёт их в процедуру в момент её вызова. Результаты счёта - количество положительных и отрицательных элементов строки возвращается в главную программу посредством глобальных переменных s1 и s2 (в процедуре им соответствуют параметры-переменные k1 и k2), которые сравниваются между собой. Исходя из результатов сравнения, принимается решение о том присвоить ли очередному элементу вектора D единицу или ноль.

Вопросы для самоконтроля

1) Что представляет собой программа с иерархической структурой?

2) Дайте определение главной программы и подпрограммы.

3) Для чего служит оператор вызова и что он должен содержать?

4) В каких случаях разрабатываются программы иерархической структуры?

5) Приведите структуру описания подпрограммы.

6) Что представляют собой глобальные и локальные имена и какие принципы, положены в основу их деления?

7) Какова роль фактических и формальных параметров при организации подпрограмм?

8) Может ли формальный параметр быть константой?

9) Как согласуются между собой формальные и фактические параметры?

10) Как описываются параметры-значения и параметры-переменные?

11) Объясните механизм передачи данных с помощью параметров значений и параметров-переменных.

12) В чём разница между процедурами и функциями?

13) Где указывается тип значения, возвращаемого функцией в вызывающую программу?

14) Какой оператор должен присутствовать в теле функции обязательно?

15) Что понимают под рекурсией?

16) Если массив предполагается использовать в подпрограмме, то где его следует описать?

17) Можно ли используемый в подпрограмме массив описать только в разделе описания переменных?

18) Является ли правильной запись a[i], если это фактический параметр, передаваемый в подпрограмму?





Дата публикования: 2015-01-24; Прочитано: 175 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...