Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Razdel_13_Osn_alg_i_i_progr_ya_11_05_10

.pdf
Скачиваний:
22
Добавлен:
09.04.2015
Размер:
1.98 Mб
Скачать

Часть 13. Основы алгоритмизации и программирования

Школьный АЯ

алг Ниже диагонали (арг цел N,

арг цел таб

A[1:N, 1:N],

рез лит Otvet)

нач цел i, j, лит Flag

Flag:="Нет"; i:=2

нц пока (i< =N) и (Flag="Нет") | цикл по строкам

j:=1

нц пока (j<i) и (Flag="Нет") | цикл по элементам

строки

если A[i, j]<0 | условие прерывания циклов

то Flag:="Да"

иначе j:=j+1 | продви-

жение по строке все

кц

i:=i+1 | переход на новую строку

кц

если Flag="Да"

то Otvet:="Есть отрицательные ниже диагонали"

иначе Otvet:="Нет отрицательных ниже диагонали"

все

кон

Исполнение алгоритма

Обозначения проверяемых условий:

(i <= N) и (Flag = "Нет") => (1)

(j < i) и (Flag = "Нет")

=> (2)

161

Часть 13. Основы алгоритмизации и программирования

 

 

 

 

 

 

 

 

 

 

N те-

 

i

Flag

(1)

j

(2)

 

A[i]=A[j]

Otvet

ста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

"Нет"

+

1

+

 

-

 

 

 

 

 

 

2

-

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

+

 

-

 

 

 

3

"Да"

+

2

 

 

 

 

 

 

 

 

 

 

-

 

+

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

-

 

 

 

 

"Есть отрицатель-

 

 

 

 

(кц)

 

 

 

 

ные"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

"Нет"

+

1

+

 

-

 

 

 

 

 

 

2

-

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

+

 

-

 

 

 

3

 

+

2

 

 

 

 

 

 

 

 

 

 

-

 

-

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

-(кц)

 

 

 

 

"Нет отрицатель-

 

 

 

 

 

 

 

 

 

ных"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Turbo Pascal

Program UnderDiagonal;

Uses Crt;

Type Mas = Array [1..10, 1..10] of Integer;

Var A

: Mas;

N, i, j : Integer;

Flag

: Boolean;

{-----------------------------------

}

162

Часть 13. Основы алгоритмизации и программирования

Procedure InputOutput(Var A : Mas);

{описание проце-

дуры }

 

Begin

{ввода-вывода

данных}

ClrScr;

Write('Количество строк и столбцов - '); ReadLn(N);

For i := 1 to N do

For j := 1 to N do

begin Write('A[' , i , ', ' , j , ']= ? '); ReadLn(A[i, j])

end; WriteLn; WriteLn('Матрица :'); For i := 1 to N do

begin

For j := 1 to N do Write(A[i, j] : 5);

WriteLn

end; WriteLn

End; { of InputOutput } {------------------------------------}

Procedure Solution(Var A : Mas); {описание процедуры поиска решения}

Begin

i := 2 ; Flag := FALSE; While (i<=N) and not Flag do

begin j:=1;

While (j<i) and not Flag do

If (A[i, j]<0)

then Flag:=TRUE

163

Часть 13. Основы алгоритмизации и программирования

 

else j:=j+1;

i:=i+1

end;

 

End; { of

Solution }

{--------------------------------------------

}

Procedure

OutResult;

Begin

 

WriteLn('О т в е т :');

Write('Среди элементов, лежащих ниже главной диаго-

нали, ');

 

If Flag

then WriteLn('есть отрицательные.')

 

else WriteLn('нет отрицательных.');

ReadLn

 

End; { of

OutResult }

{--------------------------------------------

}

BEGIN

 

InputOutput(A); {вызов процедуры ввода-вывода дан-

ных }

Solution(A); {вызов процедуры поиска решения зада-

чи}

OutResult {вызов процедуры вывода результата }

END.

QBasic

CLS : INPUT "Количество строк и столбцов матрицы = ",

N

DIM A(N, N)

FOR i = 1 TO N

FOR j = 1 TO N

PRINT "A(" ; i ; ", " ; j ; ") = " ;

164

Часть 13. Основы алгоритмизации и программирования

INPUT A(i, j)

NEXT j

NEXT i

CLS : PRINT "Матрица А"

FOR i = 1 TO N

FOR j = 1 TO N

PRINT A(i, j);

NEXT j : PRINT

NEXT i

i = 2 : Flag = 0

WHILE (i < = N) AND (Flag = 0) j = 1

WHILE (j < i ) AND (Flag = 0)

IF A(i, j) < 0 THEN Flag = 1 ELSE j = j + 1 WEND

i = i + 1 WEND

PRINT : PRINT "О т в е т :"

PRINT "Среди элементов матрицы, лежащих ниже главной диагонали, ";

IF Flag = 1 THEN

PRINT "есть отрицательные."

ELSE PRINT "нет отрицательных."

END IF

END

Пример 3. Выяснить, есть ли в баскетбольных командах "Спартак" и "Зе-

нит" игроки одинакового роста.

Система тестов

165

Часть 13. Основы алгоритмизации и программирования

Обозначения:

N - количество игроков в команде "Спартак";

M - количество игроков в команде "Зенит";

S(N) - массив ростов игроков команды "Спартак" (см);

Z(N) - массив ростов игроков команды "Зенит" (см).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Данные

 

 

 

Результат

Номер

 

Проверяемый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Спартак

 

 

Зенит

 

 

 

 

 

 

 

 

 

 

 

теста

 

случай

 

 

 

 

 

 

 

 

 

 

Otvet

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

S(N)

 

M

 

Z(M)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

200

 

4

 

198

 

"Есть игро-

 

 

 

 

 

 

 

195

 

 

 

200

 

ки одинако-

1

 

Есть

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

205

 

 

 

206

 

вого роста"

 

 

 

 

 

 

 

 

 

 

 

192

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

200

 

2

 

198

 

"Нет игро-

 

 

 

 

 

 

 

195

 

 

 

201

 

ков одина-

2

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кового ро-

 

 

 

 

 

 

 

 

 

 

 

 

 

ста"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

166

Часть 13. Основы алгоритмизации и программирования

Школьный АЯ

алг Рост (арг цел N, M, арг целтаб

S[1:N],

Z[1:M], резлит Otvet)

нач цел i, j, лит Flag i:=1; Flag:="Нет"

нц пока (i<=N) и (Flag="Нет") |цикл по игрокам "Спарта-

ка"

j:=1

нц пока (j<=M) и (Flag="Нет") |цикл по игрокам "Зени-

та"

если S[i]=Z[j] |проверка ра-

венства ростов

то Flag:="Да"

иначе j:=j+1

все

кц

i:=i+1

кц

если Flag="Да"

то Otvet:="Есть игроки одина-

кового роста"

иначе Otvet:="Нет игроков оди-

накового роста"

все

кон

Исполнение алгоритма

167

Часть 13. Основы алгоритмизации и программирования

 

 

 

 

 

Обозначения проверяемых условий:

 

 

 

(i <= N) и (Flag = "Нет")

=> (1)

 

 

 

 

 

 

(j < i) и (Flag = "Нет") => (2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

Flag

 

(1)

 

j

 

(2)

 

S[i]=Z[j]

 

Otvet

 

 

теста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

"Нет"

 

+

 

1

 

+

 

-

 

 

 

 

 

 

 

 

"Да"

 

 

 

2

 

-

 

+

 

 

 

 

1

 

 

 

 

 

 

 

 

 

-(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

-

 

 

 

 

 

 

 

"Есть"

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

"Нет"

 

+

 

1

 

+

 

-

 

 

 

 

 

 

 

 

 

 

 

 

2

 

+

 

-

 

 

 

 

 

 

 

 

 

 

 

 

3

 

-(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

+

 

1

 

+

 

-

 

 

 

 

 

 

 

 

 

 

 

 

2

 

+

 

-

 

 

 

 

 

 

 

 

 

 

 

 

3

 

-(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

-(кц)

 

 

 

 

 

 

 

"Нет"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Turbo Pascal

 

 

Program EqualHeight;

 

Uses

Crt;

 

 

Type

Mas = Array [1..20] of Integer;

Var

 

 

 

Spart, Zenit : Mas;

{массивы ростов игроков}

N,

M, i, j

: Integer; {N - к-во игроков "Спар-

така",

M - "Зенита"}

 

Flag

: Boolean;

 

Name

: String;

{название команды}

{------------------------------------------}

Procedure Input(NCommand : Integer; Var Number : In-

teger;

Var Rost:Mas);

 

168

Часть 13. Основы алгоритмизации и программирования

{NCommand - номер команды (равен 1 или

2)}

Begin {описание процедуры ввода данных по команде}

If NCommand=1 then Name:='Спартак' else Name:='Зенит';

Write('Введите количество игроков команды ',

Name, ': ');

ReadLn(Number);

WriteLn('Введите роста игроков:');

For i := 1 to Number do

begin Write(i, ' игрок - '); ReadLn(Rost[i])

end;

WriteLn

End;

{------------------------------------------}

Procedure Search; {описание процедуры поиска решения задачи}

Begin

i:=1; Flag:=FALSE;

While (i<=N) and not Flag do {цикл по игрокам Спартака}

begin j:=1;

While (j<=M) and not Flag do {цикл по игрокам

Зенита}

If Spart[i]=Zenit[j] then Flag:=TRUE else

j:=j+1;

i:=i+1

end;

End;

169

Часть 13. Основы алгоритмизации и программирования

{----------------------------------------------------

--------}

Procedure OutResult; {описание процедуры вывода ре-

зультата}

Begin

Write('О т в е т : в командах Спартак и Зенит ');

If Flag then Write('есть игроки ') else

Write('нет игроков ');

 

WriteLn('одинакового роста.');

 

ReadLn

 

End;

{

------------------------------------------}

BEGIN ClrScr; {вызов процедур}

Input(1, N, Spart); {ввод данных для первой коман-

ды}

Input(2, M, Zenit); {ввод данных для второй коман-

ды}

 

 

Search;

{поиск

решения задачи}

OutResult

{вывод

результата}

END.

 

 

QBasic

CLS

INPUT "Введите количество игроков команды Спартак : "

, N

DIM Spart(N)

PRINT "Введите роста игроков:"

FOR i = 1 TO N

PRINT i ; " игрок - " ; : INPUT Spart(i) NEXT i

170

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]