Главная страница
Навигация по странице:

  • 1.12. Удаление строки (столбца) из матрицы

  • 1.13. Добавление строки (столбца) в матрицу

  • 2.3. Программа на языке PASCAL Program

  • Then Begin

  • Вопросы для самоконтроля

  • КРИПТОГРАФИЯ. Лабораторная работа 7- 8 БАС 18. Реализация на языке turbopascal ввода и вывода элементов массивов


    Скачать 140.16 Kb.
    НазваниеРеализация на языке turbopascal ввода и вывода элементов массивов
    АнкорКРИПТОГРАФИЯ
    Дата03.12.2020
    Размер140.16 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 7- 8 БАС 18.docx
    ТипЛабораторная работа
    #156483
    страница3 из 3
    1   2   3

    1.11. Перестановка строк (столбцов) матрицы

    Пример. Дана матрица А[1:5,1:5]. Если сумма элементов на главной диагонали больше 50, то поменять местами первую и пятую строки.

    В данной процедуре сначала выделяются ячейка S для накопления суммы элементов на главной диагонали и ячейка Р для промежуточного хранения элементов массива. Для получения суммы элементов, находящихся на главной диагонали, используется суммирование элементов с совпадающими номерами строки и столбца (i= j). Перестановка элементов первой и пятой строк осуществляется с использованием метода ‘трёх стульев’. Сначала в каждом столбце значение текущего элемента первой строки помещают в ячейку Р. Затем этот элемент принимает значение элемента того же столбца из пятой строки. После этого элемент из пятой строки принимает значение Р, в котором находится значение элемента первой строки.

    Фрагмент алгоритма:


    Рис. 43

    Фрагмент программы:



    S:=0;P:=0;

    For i:=1 to 5 do S:=S+A[i,i];

    If S>50

    Then

    Begin

    For j:=1 to 5 do Begin P:= A[1,j]; A[1,j]:=A[5,j]; A[5,j]:=P;

    WriteLn (‘Преобразованная матрица');

    For i:=1 to 5 do

    Begin

    For j:=1 to 5 do Write(b[i,j]:5:2,’ ‘);

    WriteLn;

    End;

    End

    Else WriteLn (‘Сумма элементов на главной диагонали меньше 50');




    Перестановка столбцов осуществляется аналогично, только цикл перестановки идет по строкам (по переменной i).
    1.12. Удаление строки (столбца) из матрицы
    Пример. Дана матрица А[1:5,1:4]. Удалить третью строку матрицы.

    Фрагмент алгоритма представлен на рис. 12.

    Рис. 44

    Фрагмент программы:



    n:=5;m:=4;

    For i:=3 to n do For j:=1 to m do A[i,j]:=A[i+1,j];

    WriteLn (‘Преобразованная матрица');

    For i:=1 to n-1 do

    Begin

    For j:=1 to m do Write(A[i,j]:5:2,’ ‘);

    WriteLn;

    End;



    В данной задаче первые две строки остаются без изменения. Строки, начиная с четвертой, сдвигаются на одну строку вверх - четвертая строка помещается на место третьей, (третья строка при этом затирается и перестает существовать), пятая строка помещается на место четвертой.

    Удаление столбцов осуществляется аналогично, в цикле по столбцам (по переменной j).

    1.13. Добавление строки (столбца) в матрицу
    Пример. Дана матрица А[1:4,1:5]. В матрицу между третьей и четвертой строками добавит строку, элементы которой будут произведением элементов первой и третьей строк одноименных столбцов.

    Данная задача разбивается на два этапа. На первом этапе матрица раздвигается, четвертая строка смещается на строку вниз и становится пятой. При этом на месте четвертой строки останутся прежние значения, которые затем можно заменить на новые. На втором этапе четвертая строка заполняется новыми значениями. При объявлении массива в программе число строк должно быть равным 5.

    Фрагмент алгоритма:



    Рис. 45

    Фрагмент программы:



    k:=4;n:=5;m:=4;

    For i:=n+1 downto k do For j:=1 to m do A[i,j]:=A[i-1,j];

    For j:=1 to m do A[4,j]:=A[1,j]*A[4,j];

    WriteLn (‘Преобразованная матрица');

    For i:=1 to n+1 do

    Begin

    For j:=1 to m do Write(A[i,j]:5:2,’ ‘);

    WriteLn;

    End;



    Порядок решения задачи

    2.1. Таблица соответствия

    Имя математической переменной

    Ci,j

    i

    j

    k

    СрАр

    Мин3

    НМин3

    Переменная языка TURBO-PASCAL

    Ci,j)

    i

    j

    k

    Sra

    Min3

    Nmin3

    Тип переменной

    R

    Int

    Int

    Int

    R

    R

    Int




    Имя математической переменной

    Мин5

    НМин5

    Макс5

    НМакс5

    Фл

    ПрП

    Переменная языка TURBO-PASCAL

    Min5

    Nmin5

    Min5

    NMax5

    F

    Ppol

    Тип переменной

    R

    Int

    R

    Int

    Int

    R


    2.2. Алгоритм задачи

    В данной задаче необходимо реализовать несколько действий с одними и теми же элементами матрицы. Поскольку действия с элементами массивов выполняются в циклах, то, в принципе, все действия задания можно реализовать в двух вложенных циклах по элементам матрицы. Однако реализация задачи при этом будет громоздкой и запутанной. Целесообразнее действия выполнять последовательно. В этом случае задача становится более логичной и понятной. Таким образом, в задаче необходимо выполнить следующие действия:

    Ввести и напечатать элементы исходной матрицы. Для ввода элементов можно использовать любую структуру ввода, рассмотренную в главе 6. Для данной задачи целесообразно ввести элементы матрицы с использованием генератора случайных чисел. Поскольку в задании предусматривается работа с положительными и отрицательными значениями матрицы, ввод элементов необходимо сделать в диапазоне, охватывающем отрицательные и положительные числа. В данной задаче необходимо заменить нулевые элементы произведением положительных элементов. Если выбрать вещественный тип элементов матрицы, то при их генерации с помощью датчика случайных чисел нулевое значение, скорее всего не будет получено. Поэтому для получения такого значения необходимо при формировании элементов матрицы брать целую часть сгенерированных случайных чисел с использованием функции Int(). В этом случае для генерирования чисел в диапазоне [-20  +20] значения будут формироваться по выражению:

    C[i,j] := Int(40*Randm-20);

    В двух вложенных циклах по строкам и столбцам матрицы получить сумму и количество отрицательных элементов, и произведение положительных элементов.

    Получить и напечатать среднеарифметическое отрицательных элементов.

    Для третьей строки в цикле по столбцам определить и напечатать значение и номер минимального элемента третьей строки.

    Для пятого столбца в цикле по строкам определить значения и номера минимального и максимального элементов.

    Поменять местами минимальный и максимальный элементы пятого столбца.

    Задать значение флажка F=0.

    В двух вложенных циклах по строкам и столбцам матрицы. Находить нулевые элементы и заменять их найденным ранее произведением положительных элементов. При первом же найденном нулевом элементе установить значение флажка F=1.

    Проверить значение флажка, и если F=0, напечатать сообщение, что в матрице не найдены нулевые элементы.

    Напечатать матрицу после изменений значений.

    Блок-схема алгоритма будет следующей:


    Рис. 46
    2.3. Программа на языке PASCAL
    Program zadacha;

    var

    C:array[1..5,1..6] of real;

    Ppol,Sra,Min3,Min5,Max5: Real;

    i,j,k,F,Nmin3,Nmin5,Nmax5: integer;

    begin

    WriteLn('Лабораторная работа N 7');

    WriteLn(‘Пpогpаммиpование типовых алгоритмов работы с элементами массивов ');

    WriteLn('Выполнил студент группы ATC-99-1 Иванов Борис ');

    Randomize;

    writeln(‘Исходная матрица');

    for i:=1 to 5 do

    begin

    for j:=1 to 6 do

    begin

    C[i,j]:=Int(40*random-20);

    Write(C[i,j]:3:0,’ ‘);

    End;

    WriteLn;

    End;

    Sra:=0;k:=0;Ppol:=1;

    for i:=1 to 5 do for j:=1 to 6 do

    Begin

    If C[i,j]<0 Then Begin Sra:=Sra+C[i,j];k:=k+1;End;

    If C[i,j]>0 Then Ppol:=Ppol*C[i,j];

    End;

    Min3:=C[3,1];Nmin3:=1;

    for j:=1 to 6 do

    If C[3,j]Then Begin Min3:=C[i,j];Nmin3:=j;End;

    WriteLn(‘Минимальный элемент третьей строки равен’,Min3:3:0);

    WriteLn(‘Он находится в’,Nmin3:1,’ строке’);

    Min5:=C[1,5];Nmin5:=1;Max5:=C[1,5];Nmax5:=1;

    for i:=1 to 5 do

    Begin

    If C[i,5]Then Begin Min5:=C[i,5];Nmin5:=i;End;

    If C[i,5]>Max5 Then Begin Max5:=C[i,5];Nmax5:=i;End;

    End;

    C[Nmin5,5]:=Max5;C[Nmax5,5]:=Min5;

    F:=0;

    for i:=1 to 5 do for j:=1 to 6 do

    If C[i,j]=0 Then Begin F:=1;C[i,j]:=Ppol;End;

    If F=0 Then WriteLn(‘В матрице нет нулевых элементов’);

    WriteLn(‘Полученная матрица');

    for i:=1 to 5 do

    begin

    for j:=1 to 6 do

    Write(C[i,j]:7:0,’ ‘);

    WriteLn;

    End;

    End.
    При печати полученной матрицы необходимо изменить первоначальный формат, отводящий для каждого элемента 3 позиции, на формат, отводящий большее число позиций, например 7, так как нулевые элементы в матрице заменяются произведением положительных элементов, которое будет большим числом.

    Вариант N 1

    Дан вектор А[1:20]

    а) найти сумму S элементов из интервала [-3 +6].

    б) найти произведение этой суммы на min элемент вектора.

    в) найти номер максимального элемента между номерами 5 и 15.

    г) удалить 16-ый элемент вектора.
    Вариант N 2

    Дана матрица А[1:3; 1:4]

    а) найти разность сумм элементов, попадающих в интервалы [0 5] и [5 15]

    б) найти номер минимального эелемента в третьем столбце.

    в) заменить min элемент в 4-ом столбце на min элемент в третьем столбце.

    г) получить среднеарифметическое значение последних 10-ти элементов матрицы.

    Вариант N 3

    Дана матрица А[1:4; 1:4]

    а) получить сумму и количество элементов в интервале [-10 +5], и минимальный элемент в третьей строке.

    б) получить произведение номеров min и max элементов матрицы.

    в) получить среднеарифметическое значение матрицы.

    г) получить произведение среднеарифметического значения на min элемент в третьем столбце.
    Вариант N 4

    Дан вектор А [1:20].

    а) найти количество и сумму элементов из диапазона [-5 5] и максимальный элемент из последних десяти

    б) получить произведение номеров min и max элементов вектора.

    в) удалить 6-ой элемент вектора.

    г) получить среднеарифметическое значение последних 10-ти элементов вектора.
    Вариант N 5

    Дан вектор А[1:15].

    а) найти минимальный элемент

    б) найти произведение минимального элемента и суммы элементов вектора, больших - 2

    в) найти номер максимального элемента из первых 10 элементов вектора

    г) найти произведение среднеарифметического значения вектора на максимальный элемент вектора.
    Вариант N 6

    Дан вектор А[1:25].

    а) найти произведение элементов больших - 2 и сумму последних 10 элементов

    б) удалить минимальный элемент вектора

    в) получить среднеарифметическое значение элементов с четными индексами

    г) поменять местами максимальные элементы из первых десяти и последних десяти элементов вектора.
    Вариант N 7

    Дана матрица А[1:4; 1:4].

    а) найти минимальный и максимальный элементы матрицы

    б) определить число положительных элементов во второй и третьей строках

    в) получить среднеарифметическое значение матрицы

    г) заменить минимальный элемент в 3-ей строке на 0.
    Вариант N 8

    Дан матрица А[1:6; 1:5].

    а) в четных строках найти сумму элементов больших - 3, а в нечетных столбцах произведение положительных элементов.

    б) переставить местами минимальный и максимальный элементы матрицы.

    в) получить среднеарифметическое значение отрицательных элементов матрицы.

    г) в четвертой строке заменить минимальный элемент на 0.
    Вариант N 9

    Дан вектор В[1:25].

    а) найти произведение элементов в диапазоне [-3,3] и сумму положительных элементов.

    б) удалить минимальный элемент вектора.

    в) заменить максимальный элемент вектора среднеарифметическим значением последних 15 элементов.

    г) поменять местами максимальные элементы из первых 10 и последних десяти элементов вектора.

    Вариант N 10

    Дан матрица А[1:3:1:3].

    а) найти количество N положительных элементов в каждой строке.

    б) найти сумму S отрицательных элементов в каждом столбце.

    в) заменить минимальный элемент матрицы суммой предыдущих элементов.

    г) определить номера минимальных элементов в третьем столбце и второй строке.
    Вариант N 11

    Дан вектор В[1:20].

    а) найти минимальный элемент вектора.

    б) найти произведение Р ненулевых элементов.

    в) вставить за min элементом произведение ненулевых элементов.

    г) найти номер максимального из 10 последних элементов вектора.
    Вариант N 12

    Дан вектор В[1:10].

    а) найти минимальный и максимальный элементы вектора.

    б) поменять местами максимальный и минимальный элементы.

    в) получить сумму элементов между их номерами.

    г) получить произведение отрицательных элементов.
    Вариант N 13

    Дан вектор В[1:20].

    а) найти сумму S элементов в диапазоне [0 5].

    б) найти произведение Р отрицательных элементов.

    в) поменять местами минимальный и максимальный элементы вектора.

    г) удалить минимальный элемент.
    Вариант N 14

    Дан вектор из 10 элементов.

    а) получить сумму S элементов в интервале [-5 5].

    б) получить произведение S на минимальный элемент матрицы.

    в) определить номер минимального элемента из первых 5 элементов.

    г) удалить этот элементов
    Вариант N 15

    Дана матрица [1:3;1:5].

    а) найти сумму S элементов >5 и произведение элементов <1

    б) найти номера максимального элемента второй строки и третьего столбца.

    в) переставить найденные максимальные элементы матрицы.

    г) получить среднеарифметическое значение 3-го и 5-го столбцов.
    Вариант N 16

    Дан вектор В[1:15].

    а) найти сумму S элементов в диапазоне [-2 2].

    б) найти произведение Р элементов в диапазоне [-3 3].

    в) получить произведение min и max элементов вектора.

    г) получить сумму элементов между max и min элементами вектора.
    Вариант N 17

    Дана матрица А[1:4, 1:6].

    а) найти сумму элементов четных строк лежащих в диапазоне [-6 11].

    б) найти произведение min элемента 3-ей строки на max элемент 4-го столбца.

    в) найти среднеарифметическое положительных элементов матрицы.

    г) поменять местами min и max элементов матрицы.

    Вопросы для самоконтроля:

    1. Способы объявления массивов в TURBO PASCAL.

    2. Реализация приема «накопление» при работе с элементами массивов.

    3. Порядок задания начальных значений при нахождении минимального или максимального элементов массива.

    4. Способы перестановки элементов массива.

    5. Порядок удаления элемента из массива.

    6. Порядок вставки элемента в массив.

    7. Принцип сортировки элементов массива по возрастанию или убыванию.

    8. Порядок и смысл использования приема «флажок» в программировании.
    1   2   3


    написать администратору сайта