Лекция: Пример 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], если это фактический параметр, передаваемый в подпрограмму?

 

еще рефераты
Еще работы по информатике