Пусть даны матрица размерности n ´ m и матрица размерности m ´ k. Матрица размерности n ´ k равна произведению матриц A и B, если ее элементы определены по формуле
.
Рассмотрим пример умножения матрицы A размерности 2 ´ 3 на матрицу B размерности 3 ´ 4. Матрица C, равная произведению матриц A и B будет иметь размерность 2 ´ 4.
Блок-схема алгоритма умножения матриц A и B представлена на рис. 23.
Рис.23. Блок-схема алгоритма умножения матриц.
Программа.
program Umnozh_matrix;
Const
m=3;
n=2;
k=4;
Var
A : array[1..n,1..m] of integer;
B : array[1..m,1..k] of integer;
C : array[1..n,1..k] of integer;
i,j,l : Integer;
BEGIN
Writeln('Ввод матрицы A');
for i:= 1 to n do
begin
writeln('Cтрока',i:2);
for j := 1 to m do
begin
write('Столбец',j:2,'->');
readln(A[i,j])
end;
end;
Writeln('Ввод матрицы B');
for i:= 1 to m do
begin
writeln('Cтрока',i:2);
for j := 1 to k do
begin
write('Столбец',j:2,'->');
readln(B[i,j])
end;
end;
writeln('Матрица С - умножение матриц A и B') ;
for i:= 1 to n do begin
for j := 1 to k do begin
C[i,j] := 0 ;
for l := 1 to m do
C[i,j] := C[i,j] +A[i,l] * B[l,j] ;
write(C[i,j]:3)
end ;
writeln ;
end
End.
Помимо числовой информации компьютер может обрабатывать символьную информацию. Паскаль оперирует с символьной информацией, которая может быть представлена отдельными символами или строками символов.
Для хранения и обработки отдельных символов используются переменные типа CHAR. Значением переменной типа CHAR может быть любой символ.
Переменная символьного типа должна быть объявлена в разделе описания переменных так:
Имя : CHAR ;
где Имя ¾ имя переменной символьного типа; CHAR ¾ ключевое слово обозначения символьного типа.
Примеры: otv : char ;
ch : char ;
Как и любая переменная программы, переменная типа CHAR может получить значение в результате выполнения инструкции присваивания или ввода (READ, READLN). Если переменная типа CHAR получает значение в результате выполнения операции присваивания, то справа от знака := должно стоять выражение типа CHAR, например, переменная типа CHAR или символьная константа¾ символ, заключенный в двойные кавычки.
В результате выполнения программы
Var c1,c2,otvet : char ;
Begin
c1 := ‘*’ ;
c2 := c1 ;
write(‘Вы хотите научиться программированию ?’) ;
readln(otvet) ;
writeln(‘Ваш ответ :’, otvet)
End.
переменная c1 получает значение присваиванием значения константы, c2 ¾ присваиванием значения переменной c1, а значение переменной otvet вводится с клавиатуры.
Обратим внимание: переменная otvet объявлена как CHAR, т. е. один символ. Поэтому если в ответ на вопрос программы будет введено, например, слово “Да”, то переменная otvet получит значение ’Д’.
Переменную типа CHAR можно сравнить с другой переменной типа CHAR или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствие число, причем символу ‘0’ соответствует число меньшее, чем символу ‘9’, символу ‘A’ ¾ меньшее, чем ‘B’, символу ‘Z’ ¾ меньшее, чем ‘a’. Таким образом можно записать
Переменные и константы типа CHAR можно использовать при конструировании условий. В программе
Var otvet : char ;
begin
. . .
writeln(‘Продолжить вычисления ? (д / н) ‘ ) ;
readln(otvet) ;
if (otvet=‘Д’) or (otvet=‘д’) then begin
. . .
end ;
end.
переменная otvet используется для проверки ответа на запрос программы.
Обратим внимание: программа сравнивает ответ с двумя константами ‘д’ и ‘Д’, так как переменная otvet может получить ‘д’, если клавиша нажата <д> без <Shift>, или ‘Д’, если с <Shift>.
Каждый символ кодируется числом. Однако не все символы есть на клавиатуре. Например, на клавиатуре нет символов, с помощью которых рисуются рамки. Если в программе нужно ввести на экран символ, которого нет на клавиатуре, то можно воспользоваться функцией CHR, возвращающей в качестве значения символ, код которого указывается при обращении к функции. Например, в результате выполнения инструкции ch := Chr(218) ; значением переменной ch будет символ ‘é‘ (переменная ch, естественно, должна быть объявлена как CHAR).
Следующая программа использует функцию CHR для оформления выводимого текста.
Program Example ;
VAR
tl,tr,bl,br,g,v : Char ;
i : Integer ;
BEGIN
tl :=chr(218) ;
tr := chr(191) ;
bl := chr(192) ;
br := chr(217) ;
g := chr(196) ;
v := chr(179) ;
write(tl) ;
for i := 1 to 34 do write(g) ;
writeln(tr) ;
writeln(v,' Пример использования функции CHR ',v) ;
writeln(v,' для рисования рамки. ',v) ;
write(bl) ;
for i := 1 to 34 do write(g) ;
writeln(br)
END.
Вот результат работы программы:
Пример использования функции CHR
для рисования рамки.