Скачиваний:
6
Добавлен:
20.05.2014
Размер:
77.31 Кб
Скачать

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ

ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

(технический университет)

Кафедра ИТАС

ОТЧЕТ

ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ

по дисциплине “Алгоритмические языки и программирование”

Вариант___27______

Исполнитель Руководитель

__Хомич_ ____________

(фамилия) (фамилия)

___________ ____________

(подпись) (подпись)

Группа___АП-11____

Москва 2005

Содержание: с.

Первая часть:

Постановка задачи, внешняя спецификация 3

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

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

Тесты 6-7

Вторая часть:

Постановка задачи, внешняя спецификация 8

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

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

Тесты 11

Самостоятельная работа4

Цель работы:

Алгоритмы с досрочным выходом из цикла.Алгоритмы обработки целых чисел.

Первая часть.

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

1.Вычислить матрицу C[1:p,1:q] где p=max(n,r) q=max(m,l) при условии

Ai,j+Bi,j ,если Ai,j и Bi,j - существуют

Ai,j ,если Bi,j не существует, а Ai,j существует

Сi,j = Bi,j ,если Ai,j не существует, а Bi,j существует

  1. ,если Ai,j и Bi,j не существуют.

В массиве C обнулить максимальный элемент, если он совпадает с одним из элементов первого столбца матрицы A.

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

Дано: A[1:n,1:m],B[1:r,1:l] – array of integer,матрицы заданные в задаче;

Результат:С[1:p,1:q], – array of integer,полученная матрица.

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

НАЧАЛО

Ввод(A[1:n,1:m],B[1:r,1:l]);

Если r>n то x:=r иначе x:=n

Все

Если l>m то y:=l иначе y:=m

Все

max:=-32758;

Цикл от i:=1 до x

Цикл от j:=1 до y

Если (i<=n) и (j<=m) и (i<=r) и (j<=l) то C[i,j]:=A[i,j]+B[i,j]

Все

Если (i<=n) и (j<=m) и ((i>r) или (j>l)) то C[i,j]:=A[i,j]

Все

Если ((i>n) или (j>m)) и (i<=r) и (j<=l) то C[i,j]:=B[i,j]

Все

Если ((i>n) или (j>m)) и ((i>r) или (j>l)) то C[i,j]:=0

Все

Если C[i,j]>max то

max:=C[i,j]

imax:=i

jmax:=j

Все

Кц

Кц

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

Если max=A[i,1] то C[imax,jmax]:=0

Все

Кц

Вывод сообщения(C[1:p,1:q])

КОНЕЦ

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

Program Robokop1;

Uses crt;

Type mas=array [1..100,1..100] of integer;

Var r,l,m,n,i,j,k,x,y,max,imax,jmax:integer; A,B,C:mas;

Begin clrscr;

writeln('Введите размерность матрицы.'); repeat

writeln('Введите n и m:');

read(n,m);

until (n>0) and (m>0);

writeln('Теперь введите элементы матрицы: '); For i:=1 to n do

For j:=1 to m do begin

write(' A[',i,',',j,']= ');

read(A[i,j]);

end;

writeln('Мы получили :');

For i:=1 to n do begin

For j:=1 to m do write(A[i,j]:6); writeln; writeln; end;

Writeln('Введите размерность 2-ой матрицы:'); repeat

write('Введите r и l:');

read(r,l);

until (r>0) and (l>0);

write('Теперь введите элементы этой матрицы: ');

For i:=1 to r do

For j:=1 to l do begin

write(' B[',i,',',j,']= ');

read(B[i,j]);

end;

writeln('Мы получили:');

For i:=1 to r do begin

For j:=1 to l do write(B[i,j]:6); writeln; writeln; end; readkey;

If r>n then x:=r else x:=n; If l>m then y:=l else y:=m; max:=-32758;

For i:=1 to x do

For j:=1 to y do begin

If (i<=n) and (j<=m) and (i<=r) and (j<=l) then C[i,j]:=A[i,j]+B[i,j]; If (i<=n) and (j<=m) and ((i>r) or (j>l)) then C[i,j]:=A[i,j]; If ((i>n) or (j>m)) and (i<=r) and (j<=l) then C[i,j]:=B[i,j]; If ((i>n) or (j>m)) and ((i>r) or (j>l)) then C[i,j]:=0; If C[i,j]>max then begin

max:=C[i,j];

imax:=i;

jmax:=j;

end;

end;

For i:= 1 to n do

If max=A[i,1] then C[imax,jmax]:=0; writeln('Конечная матрица имеет вид:'); For i:=1 to x do begin

For j:=1 to y do write(C[i,j]:6); writeln; writeln; readkey; end; end.

Тесты:

1.Ввод неправильной размерности матриц:

Введите размерность матрицы

Вводим n и m: -3 -4

Вводим n и m: 0 6

Вводим n и m: 0 0

Вводим n и m: 1 -2

Теперь введите элементы этой матрицы: ……………..

2.Вводим такую матрицу, что максимальный эл-т не обнулится:

Введите размерность матрицы

Вводим n и m:2 2

Теперь введите элементы этой матрицы:

A[1,1]= 1

A[1,2]= -4

A[2,1]= 6

А[2,1]= 2

Мы получили:

1 -4

6 2

Введите размерность 2-ой матрицы:

Вводим n и m:2 2

Теперь введите элементы этой матрицы:

B[1,1]= 7

B[1,2]= 6

B[2,1]= -5

B[2,2]= 0

Мы получили:

7 6

-3 0

Мы получили:

8 2

3 2

3.Ввод матриц так,чтобы максимальный обнулился:

Введите размерность матрицы

Вводим n и m:2 2

Теперь введите элементы этой матрицы:

A[1,1]= 1

A[1,2]= -4

A[2,1]= 6

А[2,1]= 2

Мы получили:

8 4

6 2

Введите размерность 2-ой матрицы:

Вводим n и m:2 2

Теперь введите элементы этой матрицы:

B[1,1]= 7

B[1,2]= 6

B[2,1]= -5

B[2,2]= 0

Мы получили:

0 3

-5 0

Мы получили:

0 7

1 2

Вторая часть.

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

Посчитать, сколько элементов заданного массива начинается с задуманной цифры M.

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

Дано: A[1..n] - array [1..n] of integer,заданный массив;

M – integer, задуманная цифра.

Результат: count– integer,количество чисел в массиве, начинающихся с M.

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

НАЧАЛО

Ввод(A[1.n],M)

count:=0;

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

x:=a[i]

Цикл пока x >=10

x:= x div 10

Кц

Если x=m то count:=count+1

Все

Кц

Если count>0 то

Вывод сообщения(count,m)

Иначе Вывод сообщения (m)

КОНЕЦ

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

Program Robocop2;

Uses crt;

Var

A: array [1..100] of integer; count,i:byte; x,m,n:integer;

Begin clrscr;

writeln('Программа считает сколько эл-ов массива начинается с задуманной вами буквы М'); repeat

write('Введите размерность массива: ');

read(n);

until (n>0);

writeln('Теперь введите сам массив');

For i :=1 to n do begin write('A[',i,']='); read(A[i]);

end;

repeat

Writeln('Введите 0<M<10: '); readln(m);

until (m<10) and (m>0); count:=0;

For i:=1 to n do begin x:=a[i]; while x >=10 do

x:= x div 10;

if x=m then count:=count+1; end;

If count>0 then

write('Получается ',count,' чисел, начинающихся с ',m)

else write ('В массиве нет чисел,начинающихся с ',m);

readkey

end.

Тесты

1.Ввод неправильной размерности массива:

Введите размерность массива -4

Введите размерность массива = 0

Введите размерность массива 5

Теперь введите сам массив: ……

2.В массиве нет чисел, начинающихся с заданной цифры:

Введите размерность массива 5

Теперь введите сам массив

A[1]=6

A[2]=81

A[3]=3

A[4]=-12

A[5]=54

Введите 0<M<10: 4

В массиве нет чисел,начинающихся с 4

3.Нормальная работа программы:

Введите размерность массива 6

Теперь введите сам массив

A[1]=1

A[2]=34

A[3]=3000

A[4]=-54

A[5]=98

A[6]=3

Введите 0<M<10: 3

Получается 3 чисел, начинающихся с 3

11

Соседние файлы в папке Отчеты по проге паскаль вариант 27