Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика алгоритмизации и программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
517.53 Кб
Скачать

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 ; ") = " ;

  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

 

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

 

 

Обозначения:    N -  количество игроков в команде "Спартак";    M -  количество игроков в команде "Зенит";    S(N) - массив ростов игроков команды "Спартак" (см);    Z(N) - массив ростов игроков команды "Зенит" (см).   

Номер теста

Проверяемый случай

Данные

Результат

Спартак

Зенит

 Otvet

N

S(N)

M

Z(M)

 1

 Есть

3

200

195

205

4

198

200

206

192

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

2

 Нет

2

200

195

2

198

201

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

 

Демонстрация

Начало формы

Конец формы

Школьный АЯ 

алг Рост (арг цел 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:="Нет игроков одинакового роста"  

  все 

кон 

Блок-схема (фрагмент) 

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

 

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

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

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

Номер    теста

 

Flag

(1)

j

(2)

 S[i]=Z[j]

Otvet

1

1

 "Нет"     "Да"

+

 1    2

+

-

-(кц)

-

+

 

2

 

 -(кц)

 

 

 

"Есть"

2

1

 "Нет"

+

1

2

3

+

+

-(кц)

-

-

 

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 : Integer; Var Rost:Mas);

{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;

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

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 

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

DIM Zenit(M)

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

FOR i = 1 TO M

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

NEXT i 

i = 1 : Flag = 0

WHILE (i <= N) AND (Flag = 0) 'цикл по игрокам Спартака

  j = 1

  WHILE (j <= M) AND (Flag = 0) 'цикл по игрокам Зенита

  IF Spart(i) = Zenit(j) THEN Flag = 1 ELSE j = j + 1

  WEND

  i = i + 1

WEND 

PRINT "О т в е т : в командах Спартак и Зенит ";

IF Flag = 1 THEN PRINT "есть игроки "; ELSE PRINT "нет игроков ";

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

END