Хелпикс

Главная

Контакты

Случайная статья





Федеральное государственное автономное образовательное учреждение



Федеральное государственное автономное образовательное учреждение

Высшего образования

«Национальный исследовательский университет

«Высшая школа экономики»

 

Московский институт электроники и математики им. А.Н. Тихонова НИУ ВШЭ

Департамент компьютерной инженерии

 

Курс: Алгоритмизация и программирование

 

ОТЧЕТ

по лабораторной работе № 2

Студент: Чубаров Михаил Ильич

Группа: БИВ204

Вариант: № 281 (10, 2)

Руководитель: Лежнев Евгений Владимирович

Оценка:___________

                                        МОСКВА 2020

Оглавление

Задание. 3

Постановка задачи. 4

Метод решения задачи. 5

Внешняя спецификация. 6

Описание алгоритма на псевдокоде. 8

Листинг программы. 11

Распечатка тестов к программе и результатов. 14

 

 


 

Задание.

1.Даны целочисленная матрица A[1:n, 1:m] и целочисленный массив B[1:k].

Найти максимальный среди элементов матрицы A, не встречающихся в

массиве B.

2. Для каждого элемента массива поменять порядок следования цифр на

обратный.


 

                            Постановка задачи

Дано:

1. n,m,k-цел, a[1:n,1:m] – цел, b[1:k] – цел;

2. B[1:n] – цел.

Результат:

1. max – цел или сообщение «все элементы матрицы совпадают с элементами массива»

2. 2. B[1:n]

При: 1. n, m, k ∈ ℕ, n, m, k ≤ lmax

2. 𝑛∈ℕ,𝑛≤𝑙𝑚𝑎𝑥,∀𝑖=1,𝑛̅ 𝑎[𝑖]∈ℕ

Связь:

1. ∃𝑡=1,𝑛̅,∃𝑝=1,𝑚̅∶ ∀𝑖=1,𝑛̅ ∀𝑗=1,𝑚̅ 𝑎[𝑝,𝑡]≥𝑎[𝑖,𝑗]

∄𝑡1:𝑡1=1,𝑘̅: 𝑏[𝑡1]=𝑎[𝑡,𝑝]

max=a[t,p]

 


 

                     Метод решения задачи


 

                   Внешняя спецификация

Лабораторная работа №2

Программа 1

ввод кол-во строк n от 1 до <<n_max>> и кол-во столбцов m от 1 до <<m_max>>

{ <𝑛> }∗ до n>0 и n≤n_max { <𝑚> }∗ до m>0 и m≤m_max

ввод элементов матрицы

<a[1,1]><a[1,2]>…<a[n,m]>

исходная матрица

<< a[1,1]>><< a[1,2]>>…<< a[n,m]>>

ввод кол-во элементов k в массиве от 1 до <<k_max>>

{ <k> }∗ до k>0 и k≤k_max

ввод элементов массива

<b[1]><b[2]>…<b[k]>

исходный массив

<<b[1]>><<b[2]>>…<<b[k]>>

При fl

максимальный элемент: <<max>>

imax: <<imax>> jmax: <<jmax>>

Иначе

{ все элементы матрицы совпадают с элементами массива}

Программа №2

Введите длину массива от 1 до <<lmax>>:

{<𝑛>}* до n>0 и ≤ lmax

Введите элементы массива B в отдельных строчках

{для 𝑖=1,𝑛{<𝐵[𝑖]>}∗до 𝐵[𝑖]=[𝐵[𝑖]]

Вывод измененного массива {<<B[1]>>, <<B[2]>>, …, <<B[n]>>


 

         Описание алгоритма на псевдокоде

Алг

нач

вывод('программа 1')

вывод('ввод кол-во строк n от 1 до ',n_max,' и кол-во столбцов m от 1 до',m_max)

ввод(n, m)

пока (n > 0) и (m > 0) и (n <= n_max) и (m <= m_max)

вывод('ввод элементов матрицы')

цикл от i := 1 до n

цикл от j := 1 до m

ввод(a[i,j])

вывод('исходная матрица')

цикл от i:=1 до n

цикл от j:=1 до m

вывод(a[i,j]:4)

вывод('ввод кол-во элементов k в массиве от 1 до ',k_max)

ввод(k)

пока (k > 0) и (k <= k_max)

вывод('ввод элементов массива')

цикл от i:=1 до k

ввод(b[i])

вывод('исходный массив')

цикл от i:=1 до k

вывод(b[i]:4,' ')

fl := false

максимум := a[1, 1]

цикл от i := 1 до n нц

цикл от j := 1 до m нц

flag := true x := 0

пока (x < k) и (flag = true) нц

x := x + 1

если a[i, j] = b[x] то flag := false

все

кц

если (flag) и (a[i, j] >=max) то

max:= a[i, j]

imax := i jmax := j fl := true

все

если fl то

вывод('максимальный элемент: ', max)

вывод('imax: ', imax, ' jmax: ', jmax)

иначе вывод('все элементы матрицы совпадают с элементами массива')

все

вывод(«Программа №2»)

вывод(«Введите длину массива от 1 до », lmax)

цикл

ввод(n)

до n > 0 и n <= lmax

вывод(«Введите элементы массива B в отдельных строчках»)

цикл от i=1 до n

цикл

ввод(s)

число(s)

до err=0 и z > 0 и z <= maxint и z=[z]

B[i] = z

кц

цикл от i=1 до n

j=0

цикл пока B[i] > 0 то

j=j*10+(B[i] mod 10)

B[i] = B[i] div 10

кц

B[i]=j

кц

вывод(«Вывод измененного массива»)

цикл от i=1 до n

вывод(B[i])

кц

кон

 


 

                          Листинг программы

Program 1

const

n_max = 10;

m_max = 10;

k_max = 100;

var

i, n, k, m, j, x, max, imax, jmax: integer;

flag, fl: boolean;

a: array [1..n_max, 1..m_max] of integer;

b: array [1..k_max] of integer;

begin

writeln('Программа 1');

writeln('ввод кол-во строк n от 1 до ',n_max,' и кол-во столбцов m от 1 до',m_max);

repeat

read(n, m)

until (n > 0) and (m > 0) and (n <= n_max) and (m <= m_max);

writeln('ввод элементов матрицы');

for i := 1 to n do

for j := 1 to m do

read(a[i,j]);

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

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:4);

writeln;

end;

writeln('ввод кол-во элементов k в массиве от 1 до ',k_max);

repeat

read(k)

until (k > 0) and (k <= k_max);

writeln('ввод элементов массива');

for i:=1 to k do

read(b[i]);

writeln('исходный массив');

for i:=1 to k do

write(b[i]:4,' ');

writeln;

fl := false;

max := a[1, 1];

for i := 1 to n do

for j := 1 to m do

begin

flag := true; x := 0;

while (x < k) and (flag = true) do

begin

x := x + 1;

if a[i, j] = b[x] then flag := false

end;

if (flag) and (a[i, j] >= max) then

begin

max := a[i, j];

imax := i; jmax := j; fl := true;

end;

end;

if fl then

begin

writeln('максимальный элемент: ', max);

writeln('imax: ', imax, ' jmax: ', jmax);

end

else writeln('все элементы матрицы совпадают с элементами массива');

program 2

const lmax=20;

type mass=array[1..lmax] of integer;

var B:mass;

s:string;

z:real;

n, i, j, err:integer;

begin

writeln('Программа №2');

writeln('Введите длину массива от 1 до ', lmax);

repeat

readln(n);

until (n > 0) and (n <= lmax);

writeln('Введите элементы массива B в отдельных строчках');

for i:=1 to n do

begin

repeat

readln(s);

val(s, z, err);

until (err=0) and (z > 0) and (z <= maxint) and (z=round(z));

B[i]:=round(z);

end;

for i:=1 to n do

begin

j:=0;

while B[i] > 0 do

begin

j:= j * 10 + (B[i] mod 10);

B[i]:=B[i] div 10;

end;

B[i]:=j;

end;

writeln('Вывод измененного массива:');

for i:=1 to n do

writeln(B[i])

end


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.