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

Razdel_13_Osn_alg_i_i_progr_ya_11_05_10

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

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

Procedure OutRes(Var A:Mas); {описание процедуры вы-

вода результатов} Begin

WriteLn('Матрица-результат :');

For i := 1 to N do begin

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

end; ReadLn End; { of OutRes}

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

----} BEGIN

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

ходных данных}

Change(P, Q); {вызов процедуры замены строк }

OutRes(A) {вызов процедуры вывода результатов}

END.

QBasic

CLS

INPUT "Количество строк - ", N

INPUT "Количество столбцов - ", M

DIM A(N, M) 'Резервирование памяти для матрицы

FOR i = 1 TO N 'Ввод матрицы

FOR j = 1 TO M

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

j)

NEXT j

NEXT i : PRINT

121

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

INPUT "P = " , P : INPUT "Q = " , Q

CLS : PRINT "Исходная матрица :"

FOR i = 1 TO N 'Вывод матрицы

FOR j = 1 TO M

PRINT A(i, j) ;

NEXT j

PRINT

NEXT i

Результаты работы

FOR j = 1 TO M 'Замена строк

QBasic-программы

Исходная мат-

Tmp=A(P,j):A(P,j)=A(Q,j):A(Q,j)=Tmp

рица:

NEXT j

1 2 1

PRINT : PRINT "Матрица-результат :"

2 2 2

FOR i = 1 TO N 'Вывод результата

3 1 3

FOR j = 1 TO M

Матрица-

PRINT A(i, j) ;

результат:

NEXT j

3 1 3

PRINT ' переход на новую строку

2 2 2

NEXT i

1 2 1

END

Пример 4. Элементы заданного числового массива a1, a2, ..., aN упорядо-

чить по возрастанию.

Тест

 

 

 

 

 

 

 

 

Данные

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

N=4

 

A=(5, 2, 7, 1)

 

A=(1, 2, 5, 7)

 

 

 

 

 

 

 

 

 

 

 

 

 

122

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

Школьный АЯ

алг Возрастание(арг цел N, арг рез

вещ таб A[1:N])

нач цел i, j, вещ Tmp

нц для i от 1 до N-1

нц для j от i+1 до N ecли A[i] > A[j]

то Tmp:=A[i];

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

A[i]:=A[j]; A[j]:=Tmp

все

кц

кц

кон

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

 

 

 

 

 

 

 

 

 

i

 

j

 

A[i]>A[j]

 

Массив A

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

+

 

2, 5, 7,

 

 

2

 

-

 

 

1

 

 

 

3

 

+

 

 

 

 

 

 

4

 

 

 

1,

5,

7,

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

3

 

-

 

 

 

 

 

 

 

 

 

 

1,

2,

7,

 

 

4

 

+

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,

2,

5,

3

 

4

 

+

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Turbo Pascal

Program Regulation;

Uses Crt;

Type Mas = Array [1..10] of Real;

123

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

Var A

: Mas;

i, j, N : Integer;

Tmp

: Real;

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

}

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

}

 

 

Begin

 

ClrScr;

 

Write('Введите N = '); ReadLn(N);

 

WriteLn('Введите элементы массива: ');

 

For i := 1 to N do

 

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

 

ReadLn(A[i])

 

end;

 

End; {of Input}

{

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

Procedure

Regulate; {описание процедуры упорядоче-

ния по возрастанию}

 

Begin

 

 

For i

:= 1 to

N-1 do

For

j := i+1 to N do

If A[i] >

A[j] then

 

begin Tmp:=A[i]; A[i]:=A[j]; A[j]:=Tmp

 

end;

 

End; {of Regulate}

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

 

}

Procedure

Output;

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

зультата} Begin

WriteLn('Упорядоченный массив :');

124

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

For i:=1 to N do Write( A[i] : 6 : 1);

WriteLn; ReadLn

End; {of Output} {--------------------------------------------}

BEGIN

Input; {вызов процедуры ввода массива } Regulate; {вызов процедуры упорядочения по возрас-

танию}

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

END.

QBasic

CLS : INPUT "N = "; N : DIM A(N)

FOR i = 1 TO N

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

INPUT A(i)

NEXT i

FOR i = 1 TO N-1

FOR j = i+1 TO N

IF A(i) > A(j) THEN Tmp=A(i) : A(i)=A(j) :

A(j)=Tmp

NEXT j

NEXT i

PRINT : PRINT "Упорядоченный массив :"

FOR i = 1 TO N

PRINT A(i) ;

NEXT i : PRINT

END

125

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

Пример 5. В массиве A(N, N) вычислить две суммы элементов, располо-

женных ниже и выше главной диагонали.

 

Тест

 

 

 

 

 

Данные

 

 

Результат

 

 

 

 

 

 

 

 

 

 

 

 

 

S1=6

 

N=3

 

 

S2=9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Школьный АЯ

алг Две суммы (арг цел N, арг вещ таб A[1:N, 1:N],

рез вещ S1, S2)

надо | S1 = сумма элементов ниже главной диагонали

| S2 = сумма элементов выше главной диагонали нач цел i, j

S1:=0; S2:=0

нц для i от 2 до N | циклы по элементам, располо-

женным

нц для j от 1 до i-1 | ниже главной диагонали

S1:=S1 + A[i, j]

кц

кц

нц для i от 1 до N-1 | циклы по элементам, располо-

женным

нц для j от i+1 до N | выше главной диагонали

S2:=S2 + A[i, j]

кц

кц

кон

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

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

126

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

 

 

 

 

 

 

 

 

i

 

j

 

S1

 

S2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

0

 

 

 

2

 

1

 

0+3=3

 

 

 

3

 

1

 

3+2=5

 

 

 

 

 

2

 

5+1=6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

0+2=2

 

 

 

3

 

 

 

2+4=6

 

2

 

3

 

 

 

6+3=9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Turbo Pascal

Program TwoSums;

Uses Crt;

Var A : Array [1..10, 1..10] of Real;

S1, S2 : Real; {S1, S2 - суммы элементов, рас-

положенных ниже

и выше главной диагонали,

соответственно}

N, i, j : Integer; {--------------------------------------------}

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

вывода исходных данных}

Begin ClrScr;

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

For i := 1 to N do {Ввод матрицы}

For j := 1 to N do

127

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

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

');

ReadLn(A[i, j])

 

end; WriteLn;

ClrScr; WriteLn(' Матрица А');

For

i := 1 to N do {Вывод матрицы}

begin

 

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

 

WriteLn

end; WriteLn

End; { of InputOutput }

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

}

Procedure Under;

Begin

{описание процедуры суммирования элементов,

}

 

S1 := 0; {расположенных ниже главной диагонали

}

For i := 2 to N do

For j := 1 to i-1 do

 

S1 := S1 + A[i, j];

 

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

 

WriteLn('Сумма элементов, лежащих ниже главной

диагонали

=', S1:5:1);

 

End;

 

 

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

 

}

Procedure Over;

 

Begin

{описание процедуры

суммирования элемен-

тов,}

 

 

S2 := 0; {расположенных

выше главной диагонали}

For

i := 1 to N-1 do

 

128

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

For j := i+1 to N do

S2 := S2 + A[i, j];

WriteLn('Сумма элементов, лежащих выше главной диагонали =', S2:5:1);

ReadLn

End;

{--------------------------------------------} BEGIN

InputOutput; {Вызов процедуры ввода-вывода матрицы

}

Under; {Вычисление суммы элементов, лежащих ниже главной диагонали}

Over ; {Вычисление суммы элементов, лежащих выше главной диагонали }

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

129

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

PRINT

NEXT i : PRINT

S1 = 0 'Вычисление суммы элементов, лежащих ниже главной диагонали

FOR i = 2 TO N

FOR j = 1 TO i-1

S1 = S1 + A(i, j)

NEXT j

NEXT i

S2 = 0 'Вычисление суммы элементов, лежащих выше главной диагонали

FOR i = 1 TO N-1

FOR j = i+1 TO N

S2 = S2 + A(i, j)

NEXT j

NEXT i

PRINT "Сумма элементов, лежащих ниже главной диагона-

ли равна "; S1

PRINT "Сумма элементов, лежащих выше главной диагона-

ли равна "; S2

END

130

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