3.2 Руководство оператора

Интерфейс приложения разделён на две части. В верхней части формы отображается матрица исходных данных, которую можно редактировать и размеры которой можно менять. Нижняя часть формы представляет собой набор закладок, каждая из которых соответствует одной из поставленных задач. На каждой закладке содержится описание задания, кнопка «выполнить», а так же элементы, необходимы для отображения результата в рамках этого задания. Некоторые задания состоят в изменении исходной матрицы, результат выполнения таких заданий отображается непосредственно в исходных данных в верхней части формы. Всего существует как минимум три способа выбрать задачу: щёлкнуть мышкой по закладке, выбрать нужный пункт в меню «Задачи», нажать одну из кнопок F1 - F5.

Открытие файла с данными:


Выполнение задачи №1:

Результат выполнения задачи №1:


Переход к задаче №3:


Выполнение задачи №3:

Результат двукратного выполнения задачи №3:


Результат выполнения задачи №2:

Результат выполнения задачи №5:


Результат выполнения задачи №4:


Сохранение полученной матрицы в файл:


Завершение работы программы:

Содержание сохранённого файла:

100000 10000  20000 40000 -4000

50 100  -20  1000  2000

-100  -50  -20 0 20

-1000 -200 200 2 12

4000 -100000 -40000 -10000  80000


Выводы

Двумерный динамический массив – очень удобная конструкция для представления матрицы, размеры которой во время написания программы не известны. Но при его использовании нужно быть осторожным и учитывать некоторые особенности:

·          При вызове SetLength с одним параметром размера будет выделена память только под первую размерность массива (например, будет увеличено число строк в матрице), остальные размерности затронуты не будут (в каждой добавленной строке будет ноль элементов).

·          Каждый подмассив многомерного массива может иметь свою размерность (например, каждая строка матрицы в общем то может иметь длину, отличную от других)

·          Необходимо всегда знать границы каждой размерности, чтобы не выйти за пределы массива в чужую память. Для этого полезны функции low и high.

·          Необходимо всегда освобождать динамически выделенную память.

·          При присваивании динамических массивов копирования данных не происходит, присваиваются лишь указатели, таким образом, после присваивания два массива будут указывать на одну и ту же область памяти. Чтобы получить копию массива, можно использовать функцию Copy.

·          Copy копирует не весь многомерный массив, но только его первую размерность.


Приложения

 

Приложение 1. Тестовые примеры

 

Тест 1: Квадратная матрица 5x5.

Исходная матрица:

-100  -50  -20 0 20

50 100  200 1000 2000

4000 10000  20000 40000  80000

100000  -100000  -40000 -10000  -4000

-1000 -200 -20 2 12

Результат выполнения первого задания:

Максимальные элементы по строкам: 20; 2000; 80000; 100000; 12

Столбцы с максимальными элементами: 5; 5; 5; 1; 5

Результат выполнения второго задания:

S1 = 130

S2 = -40218

S1 > S2, матрица не была изменена

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

-1000 -200 -20  2 12

-100 -50 -20  0 20

50  100 200  1000  2000

4000 10000 20000 40000 80000

100000  -100000  -40000  -10000 -4000

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: -100; 50; 4000; 100000; -1000; -200; -20; 2; 12; -4000; 80000; 2000; 20; 0; -20; -50; 100; 10000; -100000; -40000; -10000; 40000; 1000; 200; 20000

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

4000  10000 20000  40000 80000

50  100 200 1000 2000

-100  -50 -20 0 20

-1000 -200  -20 2 12

100000  -100000 -40000  -10000 -4000

Тест 2: прямоугольная матрица 3x8.

Исходная матрица:

1 - 18 17 -16 15  -14  13 -12

-2  19  20 2000 200000 20000000 2000000000 11

3 -4  5  -6  7  -8 9  -10

Результат выполнения первого задания:

Максимальные элементы по строкам: 17; 2000000000; 9

Столбцы с максимальными элементами: 3; 7; 7

Результат выполнения второго задания:

S1 = -18 S2 = -4

S1 < S2, матрица была изменена:

1  -4  17 -16 15  -14  13 -12

-2  19 20 2000 200000 20000000 2000000000 11

3 -18  5 -6 7  -8 9  -10


Результат выполнения третьего задания:

Число столбцов чётно – был произведён сдвиг «вверх»

-2  19  20  2000  200000 20000000  2000000000 11

3 -18 5  -6 7  -8 9 -10

1  -4  17  -16 15  -14 13 -12

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 1; -2; 3; -4; 5; -6; 7; -8; 9; -10; 11; -12; 13; -14; 15; -16; 17; -18; 19; 20; 2000; 200000; 20000000; 2000000000;

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

-2  19 20 2000 200000 20000000 2000000000 11

3 -4  5 -6  7  -8 9 -10

1 -18 17 -16  15  -14 13 -12

Тест 3: прямоугольная матрица 10x5, наполненная случайными числами.

Исходная матрица:

4490 6540 -12901 20330 -6046

-27459 -22256 26705 14852 -30502

23701 -11502 -30162 -14325 -20739

-15721 -14704 17504 -23934 21020

-27932 7054 -30557 -28698 -19302

-16794 -24715 28069 -2485 -11281

30727 18102 20673 -32373 23140

-16762 -1303 5821 21065 -25295

-24472 27091 -6385 -13002 -22009

-12309 26284 20788 -21316 -25044

Результат выполнения первого задания:

Максимальные элементы по строкам: 20330; 26705; 23701; 21020; 7054

Столбцы с максимальными элементами: 4; 3; 1; 5; 2

Результат выполнения второго задания:

S1 = 4934

S2 = -21774

S1 > S2, матрица не была изменена

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

-12309 26284 20788 -21316 -25044

4490  6540  -12901 20330  -6046

-27459 -22256 26705 14852 -30502

23701 -11502 -30162 -14325 -20739

-15721 -14704 17504 -23934 21020

-27932 7054 -30557 -28698 -19302

-16794 -24715 28069 -2485 -11281

30727 18102 20673 -32373 23140

-16762 -1303 5821 21065 -25295

-24472 27091 -6385 -13002 -22009

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 4490; -27459; 23701; -15721; -27932; -16794; 30727; -16762; -24472; -12309; 26284; 20788; -21316; -25044; -22009; -25295; 23140; -11281; -19302; 21020; -20739; -30502; -6046; 20330; -12901; 6540; -22256; -11502; -14704; 7054; -24715; 18102; -1303; 27091; -6385; -13002; 21065; -32373; -2485; -28698; -23934; -14325; 14852; 26705; -30162; 17504; -30557; 28069; 20673; 5821

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

30727 18102 20673 -32373 23140

4490 6540 -12901 20330 -6046

-12309 26284 20788 -21316 -25044

-15721 -14704 17504 -23934 21020

-16762 -1303 5821 21065  -25295

-16794 -24715 28069 -2485 -11281

-27459 -22256 26705 14852 -30502

-24472 27091 -6385 -13002 -22009

23701 -11502 -30162 -14325 -20739

-27932 7054 -30557 -28698 -19302

Тест 4: матрица с большими по модулю числами.

Исходная матрица:

0  -2000000000 -2100000000 -2000000000 1

1000000000  -800000000  400000000 3  15

0 -2000000000 -2000000000  -2000000000 1

1000000000  -800000000  400000000 3 15

0  -2000000000 -2000000000 -2000000000 1

1000000000  -800000000  400000000  3  15

0  -2000000000 -1900000000 -200000000  1

Результат выполнения первого задания:

Максимальные элементы по строкам: 1; 1000000000; 1; 1000000000; 1; 1000000000; 1

Столбцы с максимальными элементами: 5; 1; 5; 1; 5; 1; 5

Результат выполнения второго задания:

S1 = -7699999981

S2 = -7499999981

S1 < S2, матрица была изменена:

0 -2000000000 -1900000000 -2000000000  1

1000000000 -800000000 400000000 3  15

0 -2000000000 -2000000000  -2000000000 1

1000000000 -800000000 400000000  3 15

0 -2000000000 -2000000000  -2000000000 1

1000000000 -800000000  400000000 3 15

0 -2000000000 -2100000000  -2000000000  1

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

0  -2000000000 -1900000000  -2000000000 1

0  -2000000000 -2100000000  -2000000000 1

1000000000  -800000000 400000000  3  15

0  -2000000000 -2000000000 -2000000000 1

1000000000  -800000000 400000000 3 15

0  -2000000000 -2000000000 -2000000000  1

1000000000  -800000000 400000000 3 15

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 0; 1000000000; 0; 1000000000; 0; 1000000000; 0; -2000000000; -1900000000; -2000000000; 1; 15; 1; 15; 1; 15; 1; -2000000000; -2100000000; -2000000000; -800000000; -2000000000; -800000000; -2000000000; -800000000; 400000000; 3; -2000000000; 3; -2000000000; 3; 400000000; -2000000000; 400000000; -2000000000

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

1000000000  -800000000  400000000  3 15

1000000000  -800000000  400000000  3 15

1000000000  -800000000  400000000  3 15

0  -2000000000 -1900000000 -2000000000 1

0  -2000000000 -2000000000 -2000000000 1

0  -2000000000 -2000000000 -2000000000 1

0  -2000000000 -2100000000 -2000000000 1

Тест 5: матрица с ошибками.

Исходная матрица:

9999999999 123 fdf

456 rt 8888888888

1234567890 9876543210 789

q 0xf e

-77777777777 000 -13

915 -376 19

ddd -ddd 1111111111

Внутри программы такая матрица будет интерпретирована следующим образом:

0 123 0

456  0  0

1234567890  0 789

0  15 0

0  0 -13

915 -376  19

0  0  1111111111

Результат выполнения первого задания:

Максимальные элементы по строкам: 123; 456; 1234567890; 15; 0; 915; 1111111111

Столбцы с максимальными элементами: 2; 1; 1; 2; 1; 1; 3

Результат выполнения второго задания:

S1 = 123

S2 = 1111111130

S1 < S2, матрица была изменена:

0 0 1111111111

456 0 19

1234567890 0 789

0  15 0

0  0  -13

915  -376 0

0  123 0

Результат выполнения третьего задания:

Число столбцов нечётно – был произведён сдвиг «вниз»

0  0 1111111111

0  123  0

456  0  0

1234567890  0  789

0 15 0

0 0  -13

915  -376  19

Результат выполнения четвёртого задания:

Матрица, «развёрнутая» против часовой стрелки: 0; 456; 1234567890; 0; 0; 915; 0; 0; 1111111111; 19; -13; 0; 789; 0; 0; 123; 0; 0; 15; 0; -376

Результат выполнения пятого задания:

Строки отсортированы в невозрастающем порядке сумм:

1234567890 0 789

0 0 1111111111

915 -376  19

456  0  0

0  123  0

0  15 0

0  0 -13


Приложение 2. Полный листинг формы (файл form.pas)

 

14          {

15          Модуль, содержащий форму, переменную для хранения исходной матрицы,

16          процедуры синхронизации содержания матрицы и элементов формы, а так же

17          процедуру задания размеров матрицы

18          }

19          unit form;

20         

21          interface

22         

23          uses

24          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

25          Dialogs, Menus, StdCtrls, ExtCtrls, ComCtrls, Grids,

26          //модули программы

27          fileIO, MatrixOperations;

28         

29          type

30          TMainForm = class(TForm)

31          Pages: TPageControl;

32          Task1: TTabSheet;

33          Task2: TTabSheet;

34          Task3: TTabSheet;

35          Task4: TTabSheet;

36          Task5: TTabSheet;

37          Menu: TMainMenu;

38          A1: TMenuItem;

39          load: TMenuItem;

40          save: TMenuItem;

41          N1: TMenuItem;

42          quit: TMenuItem;

43          N4: TMenuItem;

44          M_Task1: TMenuItem;

45          M_Task2: TMenuItem;

46          M_Task3: TMenuItem;

47          M_Task4: TMenuItem;

48          M_Task5: TMenuItem;

49          GroupBox1: TGroupBox;

50          G_Matrix: TStringGrid;

51          E_RowsN: TEdit;

52          Label1: TLabel;

53          Label2: TLabel;

54          E_ColsN: TEdit;

55          B_SetDimms: TButton;

56          SaveDialog: TSaveDialog;

57          OpenDialog: TOpenDialog;

58          Label3: TLabel;

59          Label4: TLabel;

60          G_Task1B: TStringGrid;

61          Label5: TLabel;

62          Label6: TLabel;

63          G_Task1C: TStringGrid;

64          B_Task1Run: TButton;

65          Label7: TLabel;

66          Label8: TLabel;

67          Label9: TLabel;

68          E_Task2S1: TEdit;

69          B_Task2Run: TButton;

70          E_Task2S2: TEdit;

71          L_Task2MatrxChanged: TLabel;

72          Label10: TLabel;

73          B_Task3Run: TButton;

74          L_Task3Result: TLabel;

75          Label11: TLabel;

76          B_Task4Run: TButton;

77          Label12: TLabel;

78          B_Task5Run: TButton;

79          about: TMenuItem;

80          MEM_Task4: TMemo;

81          procedure saveClick(Sender: TObject);

82          procedure loadClick(Sender: TObject);

83          procedure B_SetDimmsClick(Sender: TObject);

84          procedure FormCreate(Sender: TObject);

85          procedure quitClick(Sender: TObject);

86          procedure M_Task1Click(Sender: TObject);

87          procedure M_Task2Click(Sender: TObject);

88          procedure M_Task3Click(Sender: TObject);

89          procedure M_Task4Click(Sender: TObject);

90          procedure M_Task5Click(Sender: TObject);

91          procedure B_Task1RunClick(Sender: TObject);

92          procedure FormDestroy(Sender: TObject);

93          procedure B_Task2RunClick(Sender: TObject);

94          procedure B_Task3RunClick(Sender: TObject);

95          procedure B_Task4RunClick(Sender: TObject);

96          procedure B_Task5RunClick(Sender: TObject);

97          procedure aboutClick(Sender: TObject);

98          private

99          procedure readMatrix;

100       procedure writeMatrix;

101       public

102       published

103       { Public declarations }

104       end;

105      

106       var

107       MainForm: TMainForm;

108       workMatrix: TMatrix;

109      

110       implementation

111      

112       uses Math;

113      

114       {$R *.dfm}

115      

116       {заполнить матрицу в соответствии с содержанием таблицы на форме}

117       procedure TMainForm.ReadMatrix;

118       var rowN, colN: integer;

119       begin

120       SetLength(workMatrix, G_Matrix.RowCount-1, G_Matrix.ColCount-1);

121       for rowN:= 0 to G_Matrix.RowCount-2 do

122       for colN:= 0 to G_Matrix.ColCount-2 do

123       workMatrix[rowN, colN]:= StrToIntDef(G_Matrix.Cells[colN+1, rowN+1], 0);

124       end;

125      

126       {заполнить таблицу на форме в соответствии с содержанием матрицы}

127       procedure TMainForm.writeMatrix;

128       var rowN, colN: integer;

129       begin

130       G_Matrix.Cells[1, 1]:= '';//если матрица пуста

131       //обновим размеры матрицы

132       E_RowsN.Text:= IntToStr(high(workMatrix) + 1);

133       if(E_RowsN.Text <> '0') then

134       E_ColsN.Text:= IntToStr(high(workMatrix[low(workMatrix)]) + 1)

135       else E_ColsN.Text:= '0';

136       B_SetDimmsClick(self);

137       //заполним таблицу

138       for rowN:= low(workMatrix) to high(workMatrix) do

139       for colN:= low(workMatrix[rowN]) to high(workMatrix[rowN]) do

140       G_Matrix.Cells[colN+1, rowN+1]:= IntToStr(workMatrix[rowN, colN]);

141       end;

142      

143       {обработчик Файл->Сохранить}

144       procedure TMainForm.saveClick(Sender: TObject);

145       var

146       outFile: TextFile;

147       begin

148       //отобразим диалог выбора файла для сохранения, если отмена - выходим

149       if SaveDialog.Execute = false then exit;

150       AssignFile(outFile, SaveDialog.Files[0]);

151       ReWrite(outFile);//создадим файл

152      

153       readMatrix;//прочтём матрицу из таблицы

154       Write2DArray(workMatrix, outFile);//запишем матрицу в файл

155      

156       CloseFile(outFile);//закроем файл

157      

158       end;

159      

160       {обработчик Файл->Загрузить}

161       procedure TMainForm.loadClick(Sender: TObject);

162       var

163       inFile: TextFile;

164       begin

165       //отобразим диалог выбора фала для загрузки, если отмена - выходим

166       if OpenDialog.Execute = false then exit;

167       AssignFile(inFile, OpenDialog.Files[0]);

168       Reset(inFile);//подготовим файл к чтению

169      

170       Read2DArray(workMatrix, inFile);//прочтём матрицу из файла

171       writeMatrix;//отобразим матрицу

172      

173       CloseFile(inFile);//закроем файл

174       end;

175      

176       {обраюотчик уствновки размеров матрицы}

177       procedure TMainForm.B_SetDimmsClick(Sender: TObject);

178       var

179       i: integer;

180       RowsN, ColsN: integer;

181       begin

182       //значения размеров не должны быть меньше 1

183       RowsN:= StrToIntDef(E_RowsN.Text, 0);

184       if RowsN < 1 then begin RowsN:= 1; E_RowsN.Text:= '1' end;

185       ColsN:= StrToIntDef(E_ColsN.Text, 0);

186       if ColsN < 1 then begin ColsN:= 1; E_ColsN.Text:= '1' end;

187       //число строк и столбцов в таблице, учитывая колонку и строку с номерами

188       G_Matrix.RowCount:= RowsN + 1;

189       G_Matrix.ColCount:= ColsN + 1;

190       //в этих таблицах отображаются одномерные массивы из первого задания

191       G_Task1B.RowCount:= RowsN;

192       G_Task1C.RowCount:= RowsN;

193       //одномерный массив из четвёртого задания имеет длину, равную числу элементов исходной матрицы

194       //G_Task4.ColCount:= RowsN * ColsN;

195       //расставим номера строк и столбцов

196       for i:= 0 to RowsN do

197       begin

198       G_Matrix.Cells[0, i+1]:= IntToStr(i+1);

199       G_Task1B.Cells[0, i]:= IntToStr(i+1);

200       G_Task1C.Cells[0, i]:= IntToStr(i+1);

201       end;

202       for i:= 0 to ColsN do

203       G_Matrix.Cells[i+1, 0]:= IntToStr(i+1);

204      

205       //for i:= 0 to RowsN * ColsN do

206       // G_Task4.Cells[i, 0]:= IntToStr(i+1);

207       G_Matrix.Refresh;

208       end;

209      

210       {при создании формы задаём размер матрицы по умолчанию}

211       procedure TMainForm.FormCreate(Sender: TObject);

212       begin

213       B_SetDimmsClick(Sender);

214       end;

215      

216       {при уничтожении формы освобождаем память, выделенную для хранения матрицы}

217       procedure TMainForm.FormDestroy(Sender: TObject);

218       begin

219       workMatrix:= nil;

220       end;

221      

222       {обработчик Файл->Выход}

223       procedure TMainForm.quitClick(Sender: TObject);

224       begin

225       if mrYes = MessageDlg('Вы уверены, что хотите выйти?', mtConfirmation, [mbYes, mbNo], 0)

226       then Close;

227       end;

228      

229       {обработчик Задачи->задача 1}

230       procedure TMainForm.M_Task1Click(Sender: TObject);

231       begin

232       Pages.ActivePageIndex:= 0;

233       end;

234       {обработчик Задачи->задача 2}

235       procedure TMainForm.M_Task2Click(Sender: TObject);

236       begin

237       Pages.ActivePageIndex:= 1;

238       end;

239       {обработчик Задачи->задача 3}

240       procedure TMainForm.M_Task3Click(Sender: TObject);

241       begin

242       Pages.ActivePageIndex:= 2;

243       end;

244       {обработчик Задачи->задача 4}

245       procedure TMainForm.M_Task4Click(Sender: TObject);

246       begin

247       Pages.ActivePageIndex:= 3;

248       end;

249       {обработчик Задачи->задача 5}

250       procedure TMainForm.M_Task5Click(Sender: TObject);

251       begin

252       Pages.ActivePageIndex:= 4;

253       end;

254      

255       {выполнение первого задания}

256       procedure TMainForm.B_Task1RunClick(Sender: TObject);

257       var

258       maxVal: TVector; //массив максимальных элементов из каждой строки

259       maxValCol: TVector; //массив номеров столбцов с максимальными элементами

260       RowN: integer;

261       begin

262       readMatrix;//прочитаем матрицу из таблицы

263       GetMaxVals(maxVal, maxValCol, workMatrix);//сформируем массивы по заданию

264       for RowN:= low(maxVal) to high(maxVal) do

265       begin//выведем сформированные массивы в элементы формы

266       G_Task1B.Cells[1, RowN]:= IntToStr(maxVal[RowN]);

267       G_Task1C.Cells[1, RowN]:= IntToStr(maxValCol[RowN]+1);

268       end;

269       //освободим память

270       maxVal:= nil;

271       maxValCol:= nil;

272       end;

273      

274       {выполнение второго задания}

275       procedure TMainForm.B_Task2RunClick(Sender: TObject);

276       var S1, S2: Int64;//суммы выше и ниже пересечения диагоналей

277       begin

278       readMatrix;//проситаем матрицу из таблицы

279       //высчитаем суммы

280       S1:= GetSumAbove(workMatrix);

281       S2:= GetSumBelow(workMatrix);

282       //выведем суммы в элементы формы

283       E_Task2S1.Text:= IntToStr(S1);

284       E_Task2S2.Text:= IntToStr(S2);

285       if S1 >= S2 then L_Task2MatrxChanged.Caption:= 'Матрица не была изменена'

286       else

287       begin//если S1 < S2, то

288       SwapAboveBelow(workMatrix);//меняем местами элементы выше и ниже пересечения диагоналей

289       writeMatrix;//выводим изменённую матрицу на форму

290       L_Task2MatrxChanged.Caption:= 'Матрица была изменена'

291       end;

292       end;

293      

294       {выполнение третьего задания}

295       procedure TMainForm.B_Task3RunClick(Sender: TObject);

296       begin

297       readMatrix;//прочтём матрицу из таблицы

298       if (high(workMatrix)+1) mod 2 = 0 then

299       begin//если число строк - чётное

300       CircuarShift(workMatrix, true);//осуществим циклический сдвиг вверх

301       L_Task3Result.Caption:= 'был произведён сдвиг "вверх"';

302       end

303       else

304       begin//иначе, если число строк - нечётное

305       CircuarShift(workMatrix, false);//осуществим циклический сдвиг вниз

306       L_Task3Result.Caption:= 'был произведён сдвиг "вниз"';

307       end;

308       writeMatrix;//выведем изменённую матрицу в таблицу

309       end;

310      

311       {выполнение четвёртого задания}

312       procedure TMainForm.B_Task4RunClick(Sender: TObject);

313       var arrayB: TVector;//массив, содержащий "развёрнутую" матрицу

314       var i: integer;

315       begin

316       readMatrix;//прочтём матрицу из таблицы

317       UnwindMatrix(workMatrix, arrayB);//наполним массив, обходя матрицу по спирали

318       MEM_Task4.Lines[0]:= '';

319       for i:= 0 to high(arrayB) do

320       begin//выведем все элементы из массива на форму

321       //G_Task4.Cells[i, 1]:= IntToStr(arrayB[i]);

322       MEM_Task4.Lines[0]:= MEM_Task4.Lines[0] + IntToStr(arrayB[i]) + '; '

323       end;

324       arrayB:= nil;//освободим память

325       end;

326      

327       {выполнение пятого задания}

328       procedure TMainForm.B_Task5RunClick(Sender: TObject);

329       begin

330       readMatrix;//прочтём матрицу из таблицы

331       SortRows(workMatrix);//отсортируем строки матрицы по убыванию сумм

332       writeMatrix;//выведем матрицу в таблицу

333       end;

334       {обработчик About}

335       procedure TMainForm.aboutClick(Sender: TObject);

336       var info: string;

337       begin

338       info:= 'Курсовая работа по дисциплине "Программирование на ЯВУ"'#10#10 +

339       'Тема: "Работа с двумерными числовыми массивами"'#10 +

340       'Выполнил: студент группы ВСМ-06-08 Филон Д. В.'#10#10#10 +

341       #9#9#9#9#9#9'Москва 2010 год';

342       MessageDlg(info, mtInformation, [mbIgnore], 0);

343       end;

344       end.


Информация о работе «Работа с двумерными числовыми массивами»
Раздел: Информатика, программирование
Количество знаков с пробелами: 56781
Количество таблиц: 0
Количество изображений: 12

Похожие работы

Скачать
4215
0
0

... cout<<Rus("n Массив не является последовательностью "); return; } Выполнение программы: Программа не выполняется, так как Microsoft Visual C++ 6.0 не знает функции «randomize». Лабораторная работа №3. Двумерные числовые массивы Задание: Для матрицы найти сумму элементов каждой строки матрицы. Сформировать массив D из найденных сумм. Ход работы: Этапы решения задачи: -заполнения ...

Скачать
22462
7
0

... 30 END Возможно присваивание значений не всем элементам массива. Тогда оставшиеся элементы будут иметь начальное нулевое значение. Если загрузить значения в большой массив, то эти методы работы с массивами становятся непрактичными. Можно значительно упростить программу, если привлечь для присвоения значений оператор цикла FOR. Выполните и проанализируйте действие программы 4. ПРОГРАММА 4 10 ...

Скачать
249178
21
46

... системам линейных алгебраических уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системы нескольких линейных уравнений. Два символа деления / ...

Скачать
17456
0
16

... квадратным, например, массивы 3х3, 4х4, 5х5 и т.д. являются квадратными в отличие от массивов 2х4, 5х3, и.т.д. 1. Постановка задачи   1.1 Назначение и функции программы В этой программе задается массив, из N-элементов в котором применяется перестановка строк и столбцов случайным образом. Данные программы применяются при решении научно-технических и экономических задач обработки ...

0 комментариев


Наверх