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

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

 

Пример 3.5. В массиве a(n, n) вычислить две суммы элементов, расположенных ниже и выше главной диагонали. Тест

 

 

Данные

Результат

N=3 

S1=6 

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]

    кц

  кц

кон

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

i

j

S1

S2

 

 

2

3

 

 

1

1

2

 

0

0+3=3

3+2=5

5+1=6

0

1

 

2

2

3

3

 

0+2=2

2+4=6

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

          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

        For j := i+1 to N do

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

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

      ReadLn

    End;

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

BEGIN