mas=array [l..m,l..n] of real; var ijrinteger; a:mas; sum:real; begin
fori:=0to m-1 do
forj:=0 to n-1 do
a[i+l,j+l]:=strtofloat(stringgridl.cells[j,i]);
sum:=0;
for i:=l to m do
forj:=l to ndo
sum:=sum+a[ij];
label1 .caption:=floattostr(sum);
end;
end.
6.4. Контрольные вопросы
1. Написать фрагмент программы ввода двумерного целочисленного массива, в котором 5 строк и 10 столбцов.
2. Написать фрагмент программы вывода двумерного вещественного массива, в котором 5 строк и 6 столбцов.
3. Дать описание трехмерного целочисленного массива.
4. Дать описание четырехмерного целочисленного массива с использованием разделов описания type и var.
5. Заданы массивы:
var
А, В: аггау[1.Л5Д.8] of real;
t: boolean;
Какие операции над этими массивами как над единым целым допустимы в системе Delphi?
6. Ввести квадратную вещественную матрицу 4-го порядка, эле- менты которой заданы построчно, и распечатать ее по столбцам.
7. Сколько элементов содержит каждый из описанных ниже ком- понентов?
var MB: array [ А .. С ,2..5] of real;
var MC: array [FALSE..TRUE] of array [1..5] of char;
var MD: array [1..5,2.-8] of integer;
8. Присвоить нулевые значения всем элементам массива
A: array [ К .. Z ] of real
9. Для чего предназначается компонент TStringGrid?
10. Какими свойствами обладает компонент TStringGrid?
6.5. Задания к лабораторной работе№ 6
1. Дана вещественная матрица размером NxM. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу.
2. Дана вещественная матрица размером NxM. Упорядочить ее строки по возрастанию их первых элементов.
3. Дана вещественная матрица размером NxM. Упорядочить ее строки по возрастанию суммы их элементов.
4. Дана вещественная матрица размером NxM. Упорядочить ее строки по возрастанию наибольших элементов.
5. Определить, является ли заданная целочисленная квадратная матрица порядка N симметричной относительно главной диагонали.
6. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке, и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целочисленной матрицы размером NxM напечатать индексы ее седловых точек.
7. Определить, является ли заданная целочисленная квадратная матрица 9-го порядка магическим квадратом, то есть такой, в котором суммы элементов во всех строках и столбцах одинаковы.
8. Даны целые числа А1…А10, целочисленная квадратная матрица порядка N. Заменить нулями в матрице те элементы, для которых имеются равные числа среди A1...,A110.
9. Дана действительная квадратная матрица порядка N. Преобразовать матрицу по правилу: первую строку сделать первым столбцом, вторую строку сделать вторым столбцом и т.д.
10.Даны две действительные квадратные матрицы порядка N. Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее из элементов соответствующей строки второй матрицы.
11.Даны две действительные квадратные матрицы порядка N. Получить новую матрицу прибавлением к элементам каждого столбца первой матрицы минимального элемента соответствующего столбца второй матрицы.
12.В данной действительной квадратной матрице порядка N найти наибольший по модулю элемент. Получить квадратную матрицу порядка N-1 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.
13.В данной действительной квадратной матрице порядка N найти наименьший по модулю элемент. Получить квадратную матрицу порядка N-1 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.
14. Дана действительная матрица размером NxM, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
15. Дана действительная матрица, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наименьший по модулю элемент.
16. Дана действительная квадратная матрица порядка N. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.
17. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные значениям средних арифметических элементов строк.
18. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные значениям средних арифметических элементов столбцов.
19. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные среднему арифметическому значению максимального и минимального элементов каждого столбца.
20. Все элементы с наибольшим по модулю значением в целочис- ленной квадратной матрице порядка N, заменить нулями.
21. В данной действительной квадратной матрице порядка N найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.
22. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные произведениям элементов строк.
23. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные произведению минимального и максимального элементов столбцов матрицы.
24. Дана действительная матрица размером NxM. Определить числа В1..,Вn, равные произведению минимального и максимального элементов строк матрицы.
25. Дана действительная матрица размером NxM. Определить числа В1…Вn равные максимальным значениям элементов строки
С1-.,Сn, равные минимальным значениям элементов столбцов.
Раздел 7. СИМВОЛЫ И СТРОКИ
Компьютер может обрабатывать не только числовую информацию, но и символьную. Язык Delphi оперирует с символьной информацией, которая может быть представлена как отдельными символами, так и строками (поcледовательностью символов).
Символы
Для хранения и обработки символов используются переменные типа Ansicharи WideChar. Тип Ansichar представляет собой набор ANSI-символов, в котором каждый символ кодируется восьмиразрядным двоичным числом (байтом). Тип wideChar представляет собой набор символов в кодировке Unicode, в которой каждый символ кодируется двумя байтами.
Для обеспечения совместимости с предыдущими версиями поддерживается тип Char, эквивалентный AnsiChar.
Значением переменной символьного типа может быть любой отображаемый символ:
· буква русского или латинского алфавитов;
· цифра;
· знак препинания;
И специальный символ, например, "новая строка".
Переменная символьного типа должна быть объявлена в разделе объявления переменных. Инструкция объявления символьной переменной в общем виде выглядит так:
Имя: char;
где:
· имя — имя переменной символьного типа;
· char — ключевое слово обозначения символьного типа.
Примеры:
otv: char; ch: char;
Строки
Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.
Переменной типа shortstringпамять выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически — во время работы программы, поэтому длина таких строк практически не ограничена.
Помимо перечисленных выше типов можно применять универсальный cтроковый тип String. Тип String эквивалентен типуShortstring.
Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так:
Имя: String;
или
Имя: String [длина]
где:
· имя — имя переменной;
· string — ключевое слово обозначения строкового типа;
· длина — константа целого типа, которая задает максимально допустимую длину строки.
Примеробъявления переменных строкового типа:
name: string[30];
buff: string;
Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам, т. е. объявления
stroka: string [255]; stroka: string;
эквивалентны.
В тексте программы последовательность символов, являющаяся строкой (строковой константой), заключается в одинарные кавычки. Например, чтобы присвоить строковой переменной parol значение, нужно записать:
parol:= 'Большой секрет';
или
parol:= '2001';
Следует обратить внимание, что инструкция parol:=2001; неверная, т.к. тип константы не соответствует типу переменной. Во время компиляции этой инструкции будет выведено сообщение: incompatible types: 'Char' and 'Integer' (типы Char и Integer несовместимы).
Используя операции =, <, >, <=, >= и о, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом. В табл. 3.1 приведены примеры сравнения строк.