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

Razdel_13_Osn_alg_i_i_progr_ya_11_05_10

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

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

DIM X(NPoints), Y(NPoints) 'описание массивов коорди-

нат точек

FOR i = 1 TO NPoints

PRINT i; "-ая точка "

INPUT "x = ", X(i)

INPUT "y = ", Y(i) : PRINT

NEXT i

Flag = 0 : i = 1

WHILE i <= NPoints AND Flag = 0

IF (X(i)–a)^2 + (Y(i)–b)^2 < Radius^2 THEN Flag=1 ELSE i=i+1

WEND

PRINT "О т в е т : в множестве точек ";

IF Flag = 1 THEN PRINT "cодержатся" ELSE PRINT "не содержатся"

PRINT " точки, принадлежащие заданной области."

END

Пример 3. Определить, имеется ли среди элементов главной диагонали

заданной целочисленной матрицы A(N, N) хотя бы один положительный

нечётный элемент.

141

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

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

 

 

 

 

 

 

 

 

 

 

Номер

 

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

 

 

Данные

 

Результат

 

теста

 

чай

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

Матрица А

 

Текст

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Имеется

3

 

 

 

"Есть такие"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

Не имеется

2

 

 

 

"Нет таких"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Школьный АЯ

алг Диагональ (арг цел N, арг цел таб А[1:N, 1:N],

рез лит Teкст)

нач

цел

i, лит Flag

 

i:=1;

Flag:="Нет"

 

нц пока (i<=N) и (Flag="Нет")

| условие продолже-

ния

цикла

 

если (A[i, i]>0) и (mod(A[i, i], 2)=1) | условие завершения цикла

то Flag := "Да"

иначе i:=i+1

все

кц

если Flag = "Да"

то Текст := "Есть такие"

иначе Текст := "Нет таких"

все

кон

142

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

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

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

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

(A[i, i] > 0) и (mod(A[i, i], 2) = 1) => (2)

N те-

 

i

 

Flag

 

(1)

 

(2)

 

Текст

 

ста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

"Нет"

 

+

 

-

 

"Есть

 

 

 

2

 

"Да"

 

+

 

+

 

такие"

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

1

 

"Нет"

 

+

 

-

 

"Нет та-

 

 

 

2

 

 

 

+

 

-

 

ких"

 

 

 

3

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

143

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

Turbo Pascal

 

 

 

Program Diagonal;

 

 

Uses

Crt;

 

 

 

Type

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

Var

A

 

: Mas;

 

 

N, i, j

: Integer;

 

 

Flag

 

: Boolean;

 

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

 

Procedure InputOutput(Var A : Mas);

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

цедуры

ввода-}

 

 

Begin

 

 

 

{вывода исход-

ных данных

}

 

 

ClrScr;

Write(’Количество строк и столбцов – ’); Read(N);

144

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

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); {описание процедуры поиска решения}

Var Flag : Boolean;

Begin

 

 

Flag:=FALSE;

i:=1;

While (i<=N)

and not Flag do

If (A[i, i]>0) and (A[i, i] mod 2 = 1)

 

then Flag:=TRUE

 

else i:=i+1;

WriteLn(’О т

в е т :’);

Write(’Среди

элементов главной диагонали ’);

If Flag then

WriteLn (’есть нечетные положитель-

ные.’)

 

 

 

else

WriteLn(’нет нечетных положитель-

ных.’);

 

 

ReadLn;

 

End;

{ of

Solution }

145

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

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

}

BEGIN

 

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

ных}

 

Solution(A);

{вызов процедуры поиска решения за-

дачи}

 

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

EXT i

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

FOR i = 1 TO N

FOR j = 1 TO N

PRINT A(i, j) ;

NEXT j : PRINT

NEXT i

’Цикл "пока" по элементам главной диагонали A(i,i) i = 1 : Flag = 0

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

IF (A(i, i)>0) AND (A(i, i) MOD 2 = 1) THEN Flag=1 ELSE i=i+1

WEND

146

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

PRINT : PRINT "О т в е т :"

PRINT "Среди элементов главной диагонали ";

IF Flag = 1 THEN

PRINT "есть положительные нечетные."

ELSE

PRINT "нет положительных нечетных."

END IF

END

Пример 4. Числа Фибоначчи ( Fi ) определяются по формулам F0 = F1 = 1; Fi = Fi –1 + Fi –2 при i = 2, 3, ... (каждое очередное число равно сумме двух предыдущих). Вычислить сумму всех чисел Фибоначчи, которые не превос-

ходят заданного натурального числа М.

Тест

Номер теста

 

Данные

 

Результат

 

 

 

 

 

 

 

 

 

 

1

 

M=10

 

S=1+1+2+3+5+8=20

 

 

 

 

 

 

 

 

 

 

2

 

M=1

 

S=1+1=2

 

 

 

 

 

 

 

 

 

 

Школьный АЯ

алг Фибоначчи (арг цел М, рез цел S)

дано

 

| M>0

нач цел F0,

F1,

F2

F0:=1; F1:=1;

F2:=2

S:=4

| 4 – сумма первых трех чисел Фибоначчи

нц пока F2<=M

 

F0:=F1;

F1:=F2; F2:=F0+F1 | серия переприсваива-

ний

 

 

 

S:=S+F2;

 

 

147

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

кц

S:=S–F2 | из S вычитается последнее значение F2,

превосходящее M

кон

Блок-схема

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

 

 

 

 

 

 

 

 

 

 

F0

 

F1

 

F2

 

S

 

F2<M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

2

 

4

 

+

 

1

 

2

 

3

 

4+3=7

 

+

 

2

 

3

 

5

 

7+5=12

 

+

 

3

 

5

 

8

 

12+8=20

 

+

 

5

 

8

 

13

 

20+13=33

 

-(кц)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33-13=20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Turbo Pascal

 

Program SummaFib;

 

Uses Crt;

 

Var M,

{заданное число }

F0, F1, F2,

{три последовательных числа

Фибоначчи}

 

S : Integer;

{сумма чисел Фибоначчи}

148

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

BEGIN

ClrScr;

Write(’Введите натуральное М : ’);

ReadLn(M);

F0:=1; F1:=1; F2:=2;

S:=4; {4 – сумма первых трех чисел Фибо-

наччи}

Write(’Числа Фибоначчи, не превосходящие ’, M, ’ :’, F0:4, F1:4);

While F2<=M do begin

F0:=F1; F1:=F2; Write(F1 : 4);

F2:=F0+F1; S:=S+F2;

end;

S:=S–F2; {вычитание из суммы последнего числа, ко-

торое превосходит М}

WriteLn; WriteLn;

WriteLn(’О т в е т : Сумма этих чисел равна ’, S);

ReadLn

END.

Результаты работы Pascal-программы

 

 

 

 

 

Введите

натуральное

M>0 : 10 <Enter>

Числа

Фибоначчи, не

превосходящие 10 : 1 1 2 3

5

8

 

 

 

О

т в

е

т : Сумма этих чисел равна 20

 

 

 

 

 

 

 

 

 

 

QBasic

CLS

INPUT "Введите натуральное М : " , M

149

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

F0 = 1 : F1 = 1 : F2 = 2

S = 4 ’4 – сумма первых трех чисел Фибоначчи

PRINT "Числа Фибоначчи, не превосходящие "; M ; " : "

; F0 ; F1 ; WHILE F2 <= M

F0=F1 : F1=F2 : PRINT F1;

F2=F0+F1 : S=S+F2

WEND

S=S–F2 ’вычитание из суммы последнего числа, кото-

рое превосходит М

PRINT : PRINT : PRINT "О т в е т : Сумма этих чисел равна "; S

END

Пример 5. Включить заданное число D в массив A(N), упорядоченный по возрастанию, с сохранением упорядоченности.

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

Номер

 

Проверяемый

 

 

 

Данные

 

Результат

 

теста

 

случай

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

Массив А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

D <= a1

 

0

 

A=(1, 3, 5)

 

A=(0, 1, 3, 5)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

a1< D <= aN

 

4

 

A=(1, 3, 5)

 

A=(1, 3, 4, 5)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

aN < D

 

6

 

A=(1, 3, 5)

 

A=(1, 3, 5, 6)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Школьный АЯ

алг Включение (арг цел N, арг вещ D, арг рез вещ таб

A[1:N+1])

150

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