Описание алгоритма на псевдокоде 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]>
Внешняя спецификация 1

Обнуления нет
при t = 0

Полученная матрица: <<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]>>)

кон

Наши рекомендации