Здравствуйте, помогите решить задачку плиз.Посоветовали на ваш форум обратится.Помогите, если рабиратесь в этом. Цель:Составьте программу обработки двумерных массивов.Организуйте ввод исходных данны из файла
(что в файле писать тоже если можете напишите)
и вывод результатов работы в файл,наодящийся на диске в текущем каталоге.(n=5) Задание:Проверьте являеться исходная матрица A,составленная из целых чисел,нижней треугольной.Выведите соответствующее сообщение. ———————————————————— Правильно ли я сделала? Тому кто поможет, буду очень благодарна. С уважением,Инна.
program massive2; uses crt; const nmax=5; nl=#10; w=5; v=1; type matr=array[0..nmax, 0..nmax] of real; vect=array[0..nmax, 0..nmax] of real; var x : vect; a : matr; n,i,j : integer; fin, fout : text; begin clrscr; assign(fin, ‘in.txt’); reset(fin); assign(fout, ‘out.txt’ ); rewrite(fout); read(fin,n); for i:=2 to n do for j:=1 to n-i do read(fin, a[i,j]); if x[i,j]<>0 then write(fout,nl, ‘Нет — Данная Матрица не НижнеТреугольбная’) else write(fout,nl, ‘ДА — Данная Матрица Есть НижнеТреугольной’); writeln(nl, ‘Выполнил Егорова И.В’); close(fin); close(fout); writeln(nl,’программа выполнена’) end.
Код к задаче: «Составьте программу обработки двумерных массивов»
Листинг программы
program massive2; uses crt; const nmax=5; nl=#10; w=5; v=1; type matr=array[0..nmax, 0..nmax] of real; vect=array[0..nmax, 0..nmax] of real; var x : vect; a : matr; n,i,j : integer; fin, fout : text; l:boolean; begin l:=false; clrscr; n:=5; assign(fin, ‘in.txt’); reset(fin); assign(fout, ‘out.txt’ ); rewrite(fout); readln(fin,n); for i:=1 to n do for j:=1 to n do read(fin, a[i,j]); for i:=1 to n-1 do for j:=1+i to n do if a[i,j]<>0 then l:=true; if l=true then write(fout,nl, ‘Нет — Данная Матрица не НижнеТреугольбная’) else write(fout,nl, ‘ДА — Данная Матрица Есть НижнеТреугольной’); writeln(nl, ‘Выполнил Егорова И.В’); close(fin); close(fout); writeln(nl,’программа выполнена’); end.
Источник: studassistent.ru
Двумерный массив что это. Многомерные массивы. Пример. Теория. Что такое массив. Array. C++ #30
Обработка двумерных массивов
При обработке двумерных массивов возникают такие же задачи, как и при обработке одномерных массивов: ввод элементов массива, нахождение суммы, произведения, среднего и т.д., поиск некоторого элемента в массиве, сортировка элементов массива, вывод элементов массива.
На рис.17 приведена схема алгоритма формирования элементов массива с помощью датчика случайных чисел, вывод элементов массива на экран, вычисление суммы всех элементов двумерного массива. Программа дана в примере pr21.
program pr21;const n1=10; m1=10; type mas = array[1..n1,1..m1] of integer;var a: mas;i, текущийномеpстроки>j, текущийномеpстолбца>n,s,m : integer;beginwriteln(‘Введите число стpок и столбцов массива:’);read(n,m);randomize;Рис. 17for i:=1 to n dofor j:=1 to m doa[i,j]:=random(10);writeln(‘Полученныймассив’);for i:=1 to n dobeginfor j:=1 to m dowrite (a[i,j]:5);writeln;end;s:=0;for i:=1 to n dofor j:=1 to m dos:=s+a[i,j];writeln(‘s=’,s);end.
Двумерный массив. Python
Анализируя предложенную программу, можно заметить, что для ввода, вывода и нахождения суммы элементов массива используются три раза вложенные циклы. Так как массив располагается в непрерывной области памяти построчно, более рационально будет и обрабатывать элементы построчно.
В программе во вложенных циклах для каждого значения индекса i индекс jизменяется от 1доm, т.е. индекс j изменяется чаще. Таким образом, обрабатываются элементы массива построчно. Хотелось бы обратить внимание на вывод элементов массива на экран.
Здесь для каждого значения i в теле цикла выполняются два оператора: первый оператор цикла выводит на экран в строчку элементы одной строки, а второй оператор вывода переводит курсор на новую строку, что как раз и обеспечивает вывод матрицы в виде прямоугольника. Следующий пример иллюстрирует работу с диагоналями матрицы. Дана квадратная матрица.
Заменить отрицательные элементы побочной диагонали на сумму элементов главной диагонали матрицы. При изучении поставленной задачи следует напомнить, что главная диагональ проходит из правого верхнего в левый нижний угол. Так как мы работаем с квадратной матрицей, то только на главной диагонали будут лежать элементы, индексы строк и столбцов которых одинаковы.
Именно этот факт и используется при решении задачи. Мы не будем перебирать все элементы массива и смотреть, совпали ли индексы, а сразу задаем оба индекса с помощью одного идентификатора i.Побочная диагональ проходит из правого верхнего в левый нижний угол матрицы.
Нетрудно заметить, что при движении по побочной диагонали номер строки возрастает от1 доn,номер столбца убывает отnдо 1. Таким образом, только на побочной диагонали лежат элементы, у которых номер столбца определяется по формулеj=n-i+1.Программа приведена в примереpr22,а графическая схема алгоритма – на рис.18.
program pr22;const n1=10; typemas = array[1..n1,1..n1] of integer;квадpатнаяматpица>var a:mas;i, текущийномеpстpоки>j, текущийномеpстолбца>n,s:integer;beginwriteln(‘Введите число стpок и столбцов массива:’);read(n);for i:=1 to n dofor j:=1 to n dobeginwriteln(‘Введитеэлементмассива’);read(a[i,j]);end;writeln(‘Исходныймассив’);for i:=1 to n dobeginfor j:=1 to n dowrite (a[i,j]:5);writeln;end;s:=0;for i:=1 to n do Суммаэлементовглавнойдиагонали>s:=s+a[i,i];writeln(‘s=’,s);for i:=1 to n doЗаменаэлементовпобочнойдиагонали>beginj:=n-i+1;if a[i,j] end;
И последний пример на обработку двумерных массивов. Дана прямоугольная матрица. Отсортировать столбцы матрицы в порядке неубывания максимальных элементов столбцов. Решение задачи сводится к формированию одномерного массива из максимальных элементов столбцов, а уж затем сортируется этот одномерный массив и параллельно – столбцы матрицы.
Чтобы не запутать читателя , в этой задаче используем знакомый метод сортировки «пузырьком». Исходный массив имеет идентификатор a, а промежуточный одномерный массив–b. Графическая схема алгоритма приведена на рис.19, а программа – в примереpr23.
program pr23;const n1=10; m1=10; typemas = array[1..n1,1..m1] of integer;квадpатнаяматpица>vara:mas;b:array[1..m1] of integer;массивизмаксимальныхэлементовстолбцов>i, текущийномеpстpоки>j, текущийномеpстолбца>n,m,d:integer;fl:boolean;beginwriteln(‘Введите число стpок и столбцов массива:’);read(n,m);for i:=1 to n dofor j:=1 to m dobeginwriteln(‘Введитеэлементмассива’);read(a[i,j]);end;Рис. 19writeln(‘Исходныймассив’);for i:=1 to n dobeginfor j:=1 to m dowrite (a[i,j]:5);writeln;end;элементов столбцов>for j:=1 to m do beginb[j]:=a[1,j]; for i:=2 to n do if a[i,j]>b[j] then b[j]:=a[i,j];end;repeatfl:=true;Поднятьфлаг>for j:=1 to m-1 do массива>if b[j]>b[j+1] then beginfl:=false; d:=b[j];b[j]:=b[j+1];b[j+1]:=d;столбцыдвумерногомассива>for i:=1 to n dobegind:=a[i,j];a[i,j]:=a[i,j+1];a[i,j+1]:=d;end;end;until fl; writeln(‘Отсортированныймассив’);for i:=1 to n dobeginfor j:=1 to m dowrite (a[i,j]:5);writeln;end;end. В этой программе можно обойтись без дополнительного массива, но тогда пришлось бы во время сортировки массива каждый раз искать максимальный элемент столбца, даже если максимальный в этом столбце мы уже находили.
Ограничение
Для продолжения скачивания необходимо пройти капчу:
Источник: studfile.net
Составить программу решения поставленной задачи по обработке двумерного массива
function ВерхнийТреугольник(Матрица: array[,] of integer):
sequence of integer;
begin
var ИндексMax := Матрица.RowCount — 1;
for var ИндексСтроки := 0 to ИндексMax — 1 do
for var ИндексСтолбца := ИндексСтроки + 1 to ИндексMax do
yield Матрица[ИндексСтроки, ИндексСтолбца]
end;
begin
var n := ReadInteger(‘N =’);
var СлучайнаяМатрица := MatrRandom(n, n, -99, 99);
СлучайнаяМатрица.Println;
var ПоложительныеЭлементы :=
ВерхнийТреугольник(СлучайнаяМатрица)
.Where(Значение -> Значение > 0);
Println(‘Сумма положительных элементов равна’,
ПоложительныеЭлементы.Sum);
Println(‘Число положительных элементов равно’,
ПоложительныеЭлементы.Count)
Источник: scholar.tips