Описание алгоритма на псевдокоде 2
Титульный лист
Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики"
Московский институт электроники и математики НИУ ВШЭ Департамент компьютерной инженерии
Курс: Алгоритмизация вычислений
ОТЧЕТ по лабораторной работе № 4
Раздел | Маx оценка | Итог. оценка |
Постановка | 0,5 | |
Метод | ||
Спецификация | 0,5 | |
Алгоритм | 1,5 | |
Работа программы | ||
Листинг | 0,5 | |
Тесты | ||
Вопросы | ||
Доп. задание |
Студент: Эрматов Сухайл Дилшодович
Группа: БИВ 165
Вариант: 167
Руководитель: Хруслова Диана
Владимировна
Оценка: _____
Москва 2016
Оформления отчета по
лабораторной работе 4
Задание.
1)Даны целочисленная матрица Y[1:n, 1:m] и целочисленный массив A[1:k]. В каждой строке матрицы Y обнулить минимальный и максимальный элементы, если они оба отсутствуют в массиве A. Сохранить обнуленные элементы в новом массиве.
2) Дан массив целых положительных чисел.Для каждого элемента массива произвести циклическую перестановку
цифр на одну цифру вправо. Например, 1623-> 3162.
Постановка задачи 1
Дано:
k-цел, n-цел, m-цел, a[1:k]-цел, y[1:n,1:m]
Результат:
c[1:t] - цел, y[1:n, 1:m] или сообщение «Нет обнуления»;
При: kЄN, nЄN, mЄN, k<=100, k<=100, k<=100.
Связь:
Постановка задачи 2
Дано:
k-цел, n-цел, m-цел, a[1:k]-цел, y[1:n,1:m] – цел.
Результат:
c[1:t] - цел, y[1:n, 1:m] или сообщение «Нет обнуления»;
При: kЄN, nЄN, mЄN, k<=100, k<=100, k<=100.
Связь:
Метод решения задачи 1
1. max = -maxint-1;
min = maxint;
min1 = 0;
max1 = 0;
l = 0;
для i = 1,n , j = 1,m
max = y[i , j];
max1 = j, если max < y[i , j];
min = y[i , j];
min1 = j, если max < y[i , j];
l = l + 1;
d[l] = min1;
l = l + 1;
d[l] = max1;
i = 2;
l1 = 0;
l2 = 0;
l1 = 1, для j = 1,k , если y[i div2, d[i - 1]] = b[j];
l1 = 1, для j = 1,k , если y[i div2, d[i]] = b[j];
t = t + 1;
c[t] = y[i div2, d[i - 1]];
t = t + 1;
c[t] = y[i div2, d[i]];
y[i div2 , d[i]] := 0;
y[i div2, d[i - 1]] := 0, если l1 = 0, l2 = 0;
i = i + 2, пока i <= l;
Метод решения задачи 2
2. x = 0;
для i = 1,n
f = a[i];
f = f div10;
x = x + 1, пока f div10 > 0
d[i] = (a[i] mod10) * power(10,x) + a[i] div10;
x = 0;
e [3201]" strokecolor="black [3200]" strokeweight="2pt">
Лабораторная работа 4 Задание 1 Введите размер матрицы <n> на <m> Введите элементы матрицы : <y[1,1]><y[1,2]>….<y[1,m]> <y[2,1]><y[2,2]>….<y[2,m]> ……………………………………… <y[n,1]><y[n,2]>….<y[n,m]> Введите размер массива a:<k> Введите элементы массива а: <a[1]><a[2]>….<a[k]> |
Обнуления нет |
Полученная матрица: <<y[1,1]>><<y[1,2]>>….<<y[1,m]>> <<y[1,1]>><<y[1,2]>>….<<y[1,m]>> ……………………………………… <<y[1,1]>><<y[1,2]>>….<<y[1,m]>> Полученный массив: <<a[1]>><<a[2]>>….<<y[t]>> |
Внешняя спецификация 2
Лабораторная работа 4 Задание 2 Введите размер массива a : <n> Введите элементы массива a: <a[1]><a[2]>….<a[k]> Полученные элементы: <<d[1]>><<d[2]>>….<<d[t]>> |
Описание алгоритма на псевдокоде 1
Алг «Лабораторная работа 4»
Нач
цикл
ввод (n )
если n < то
вывод(<<размер матрицы не должно быт отрицательным>>)
все
до n > 0
кц
цикл
ввод (m)
если m < то
вывод(<<размер матрицы не должно быт отрицательным>>)
все
до m > 0
кц
ввод(y[1:n, 1:n])
цикл от i := 1 до n
max := -maxint-1;
min := maxint;
min1 := 0;
max1 := 0;
цикл от j:= 1 до m
если max < y[i , j] то
max := y[i , j];
max1 := j;
всё
если min > y[i , j] то
min := y[i , j];
min1 := j;
всё
кц
l := l + 1;
d[l] := min1;
l := l + 1;
d[l] := max1;
кц
цикл
ввод (k )
если k < 0 то
вывод(<<размер матрицы не должно быт отрицательным>>)
все
до k > 0
кц
ввод(a[1:k])
i := 2;
цикл-пока i <= l
l1 := 0;
l2 := 0;
цикл от j := 1 до k
если y[i div2, d[i - 1]] = b[j] то
l1 := 1;
всё
если y[i div2, d[i - 1]] = b[j] то
l1 := 1;
всё
если (l1 = 0) и (l2 = 0) то
t := t + 1;
c[t] := y[i div2, d[i - 1]];
t := t + 1;
c[t] := y[i div2, d[i]];
y[i div2 , d[i]] := 0;
y[i div2, d[i - 1]] := 0;
кц
i := i + 2;
кц
если t = 0 то
вывод(<<Обнуления нет>>)
иначе
вывод(<<y[i , j]>>)
вывод(<<c[i]>>)
все
кон
Листинг программы 1
Var
y: array[1..100,1..100] ofinteger;
c , d, b: array[1..100] ofinteger;
n , m , t , i , j , l , l1 , l2 , k, max , max1 , min , min1: integer;
Begin
writeln('Лабараторная работа 4');
writeln('Задание 1');
writeln('Введите размер матрицы n на m:');
l := 0;
read(n,m);
writeln('Введите элементы матрицы:');
fori := 1 ton do
forj := 1 tom do
read(y[i , j]);
fori := 1 ton do
Begin
max := -maxint-1;
min := maxint;
min1 := 0;
max1 := 0;
forj:= 1 tom do
Begin
Ifmax < y[i , j] then
Begin
max := y[i , j];
max1 := j;
end;
Ifmin > y[i , j] then
Begin
min := y[i , j];
min1 := j;
end;
end;
l := l + 1;
d[l] := min1;
l := l + 1;
d[l] := max1;
end;
writeln('Введите размер массива a');
read(k);
writeln('Введите элементы массива а');
fori := 1 tok do
read(b[i]);
i := 2;
whilei <= l do
Begin
l1 := 0;
l2 := 0;
forj := 1 tok do
Begin
ify[i div2, d[i - 1]] = b[j] then
l1 := 1;
ify[i div2, d[i]] = b[j] then
l2 := 1;
end;
if(l1 = 0) and(l2 = 0) then
Begin
t := t + 1;
c[t] := y[i div2, d[i - 1]];
t := t + 1;
c[t] := y[i div2, d[i]];
y[i div2 , d[i]] := 0;
y[i div2, d[i - 1]] := 0;
end;
i := i + 2;
end;
ift = 0 thenwriteln('Обнуления нет')
Else
Begin
writeln('Полученная матрица:');
fori := 1 ton do
Begin
forj := 1 tom do
write(y[i , j], ' ');
writeln;
end;
writeln('полученный массив:');
fori := 1 tot do
write(c[i], ' ');
end;
end.
Листинг программы 2
Var
r: array[1..100] ofreal;
a: array[1..100] ofinteger;
d: array[1..100] ofreal;
n , i ,j,k, f , x: integer;
Begin
writeln('Лабараторная работа 4');
writeln('Задание 2');
writeln('введите размер массива:');
Repeat
read(n);
Ifn < 0 then
writeln('размер массива не должно быт отрицательным');
untiln > 0;
writeln('Введите элементы массива:');
fori := 1 ton do
Begin
Repeat
read(r[i]);
if(r[i] < 0) or(r[i] <> round(r[i])) or(r[i] <= 9) then
writeln('Элементы массива должны быть целыми положительными и больше 9');
until(r[i] > 0) and(r[i] = round(r[i])) and(r[i] > 9);
a[i] := round(r[i]);
end;
x := 0;
fori := 1 ton do
Begin
f := a[i];
Whilef div10 > 0 do
Begin
f := f div10;
x := x + 1;
end;
d[i] := (a[i] mod10) * power(10,x) + a[i] div10;
x := 0;
end;
fori := 1 ton do
write(d[i] , ' ');
end.
Описание алгоритма на псевдокоде 2
Алг «Лабораторная работа 4»
Нач
цикл
ввод (n )
если n < то
вывод(<<размер матрицы не должно быт отрицательным>>)
все
до n > 0
кц
ввод(a[1:n])
x := 0
цикл от i := 1 до n
f := a[i];
цикл -пока f div10 > 0
f := f div10;
x := x + 1;
кц
d[i] := (a[i] mod10) * power(10,x) + a[i] div10;
x := 0;
кц
вывод(<<d[i]>>)
кон