Krossich | Дата: Среда, 01.07.2015, 17:14 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Постановка задачи: Дана матрица А(6,6). Определить в матрице A максимальный элемент MAX. Создать овую матрицу B, где B(x,y) = MAX – A(x,y). Вывести исходную матрицу A, и рядом с ней результатную матрицу B.
Листинг:
type mtr = array of array of integer; //через type чтобы не писать объявлениемассивов дважды function changesize(num : integer) : integer; // изменение значения параметра num begin var key : char; writeln('Текущая размерность матрицы равна ',num,'x',num,'. Изменить?(y/n)'); readln(key); if (key = 'y') then begin writeln('Введите новую размерность матрицы (целое числострого больше нуля).'); repeat readln(num); until num>0; writeln('Размерность матрицы изменена на ',num,'x',num,'.'); end; result := num; end; function isran (): char; begin var ran : char; writeln('Заполнить массив автоматически? (y/n) '); read(ran); result := ran; end; procedure line (); begin write(' '); //отделим матрицы друг от друга write('|'); end; begin var a, b : mtr; varmax, num, i, j, k, mlen : integer; var key, ran : char; num := 6; //начальная размерность матрицы repeat num := changesize(num); setlength(a, num + 1); //задание длины внешним динамическим массивам for i := 1 to (num) do setlength(a, num + 1); //заданиедлины внутренним динамическим массивам setlength(b, num + 1); fori := 1 to (num) dosetlength(b, num + 1); if(isran() = 'y') thenbegin randomize; for i := 1 to numdo for j := 1 tonum do begin a[i,j] := random (1000)- 500; if (i = 1) and (j = 1) then max := a[1,1]; //если введен самый первый элемент матрицы, то онобъявляется максимальным if (a[i,j] > max) then max := a[i,j]; //если введенный элемент больше максимального, тоэтот элемент становится новым максимальным end; end else begin // fori := 1 to numdo for j := 1 tonum do begin writeln('Введите ',(j + (i - 1) * num), '-ый член матрицы. Осталось ввести : ', (num * num + 1 - (j + (i - 1) * num))); //предложение ввести следующее число и вывод оставшегося количества вводимых чисел repeat readln(a[i,j]); //вводчисла until (a[i,j] < 32767) and (a[i,j] > -32768); if (i = 1) and (j = 1) then max := a[1,1]; //если введен самый первый элемент матрицы, то онобъявляется максимальным if (a[i,j] > max) then max := a[i,j]; //если введенный элемент больше максимального, тоэтот элемент становится новым максимальным end; end; writeln('Все данные успешно введены.'); mlen := max.ToString.Length + 1; //получение длины максимального числа. т.е. если max = 256, то mlen будет равно 3. пригодится для постройки таблицы for i:= 1 to num do for j := 1 tonum do b[i,j] := max - a[i,j]; //формированиенового массива
for k := 1 to ((mlen + 2) * num + 1) do write('-'); //рисуемполосу для отделения членов матрицы друг от друга (для левой матрицы) write(' '); //отделим матрицы друг от друга for k := 1 to ((mlen + 2) * num + 1) do write('-'); //рисуемполосу для отделения членов матрицы друг от друга (для второй матрицы) writeln(); fori := 1 to num dobegin write('|'); for j := 1 to num do begin // вывод одной строкирезультатной матрицы write(b[i,j] : (mlen + 1), '|'); end; write(' '); //отделим матрицы друг от друга write('|'); for j := 1 to num do begin // вывод одной строки исходной матрицы write(a[i,j] : (mlen + 1), '|'); end; write('|'); writeln(); for k := 1to ((mlen + 2) * num + 1) do write('-'); //рисуемполосу для отделения членов матрицы друг от друга write(' '); //отделим матрицы друг от друга for k := 1 to ((mlen + 2) * num + 1) do write('-'); //рисуемполосу для отделения членов матрицы друг от друга (для второй матрицы) writeln(); end; key := ' '; writeln('Совершить еще одну операцию?(y/n)'); readln(key); until(key <> 'y'); end.
Сообщение отредактировал Krossich - Среда, 01.07.2015, 17:15 |
|
| |
diamFC | Дата: Среда, 01.07.2015, 20:04 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 207
Статус: Offline
| то что выложено - не компилируется. Приложите файлом.
|
|
| |
Krossich | Дата: Четверг, 02.07.2015, 13:02 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| https://yadi.sk/d/RC1W2dU3hcpou
|
|
| |
diamFC | Дата: Четверг, 02.07.2015, 15:58 | Сообщение # 4 |
Полковник
Группа: Администраторы
Сообщений: 207
Статус: Offline
| В архиве блок-схема
|
|
| |