Создание Матрицы, Создание произвольной матрицы |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Создание Матрицы, Создание произвольной матрицы |
Atreides |
Сообщение
#1
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Возник один вопросик: нужно сделать матрицу и посчитать в ней сумму элементов каждой строки, разделить сумму этой строки на количество элементов этой строки. Но размерность матрицы должна задаваться вручную, причем произвольно, вот как взбредет в голову, так и сделать, т.е. 2х2 или 3х10, а может и 10х3 и т.д..
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
Сообщение
#2
|
Гость |
Вроде, динамические массивы в Дельфях никто не отменял:
Var |
Atreides |
Сообщение
#3
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
А я пробовал так. Сделал матрицу, но она 10х10 и задается заранее, заполняется случайным образом, а как сделать, чтобы я мог сам выбрать кол-во строк и столбцов? Пробовал задавать m и n как:
Writeln(‘m’,m); Read(m); Writeln(‘n’,n); Read(n); Но консоль после этого вылетает. В чем косяк? Код Type TMatrix=array[1..100,1..100] of integer; var x:TMatrix; y:integer; procedure inputmatrix(var a:TMatrix; m,n:cardinal); var i,j:cardinal; begin writeln; i:=1; repeat j:=1; repeat a[i,j]:=random(999); j:=j+1; until j>m; i:=i+1; until i>n; end; procedure outputmatrix(a:TMatrix; m,n:cardinal); var i,j:cardinal; begin i:=1; repeat j:=1; repeat write(a[i,j]:6); j:=j+1; until j>m; i:=i+1; writeln; until i>n; end; begin randomize; inputmatrix(x,10,10); outputmatrix(x,10,10); readln; end. Цитата Вроде, динамические массивы в Дельфях никто не отменял: Это как? Я могу их заменить переменными и задавать вручную? Сообщение отредактировано: Atreides - -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
Сообщение
#4
|
Гость |
Цитата я могу их заменить переменными и задавать вручную? Легко...Var |
Atreides |
Сообщение
#5
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Сделал по примеру матрицу, задаю значения i,j, а на выходе получаю матрицу из одной строки и одного значения. В чем проблема? Как сделать так, чтобы после того как задан размер матрицы, я смог задавать значения этой матрицы построчно? Random соответственно надо убрать.
Код program Matrix; {$APPTYPE CONSOLE} uses SysUtils; var mx: array of array of integer; i, j: integer; m,n:cardinal; procedure inputmatrix; var i,j:cardinal; begin Write('i = '); Readln(i); Write('j = '); Readln(j); SetLength(mx, i, j); writeln; i:=1; repeat j:=1; repeat mx[i,j]:=random(999); j:=j+1; until j>m; i:=i+1; until i>n; end; procedure outputmatrix; var i,j:cardinal; begin i:=1; repeat j:=1; repeat write(mx[i,j]:6); j:=j+1; until j>m; i:=i+1; writeln; until i>n; end; begin randomize; inputmatrix; outputmatrix; readln; SetLength(mx, 0, 0); end. Сообщение отредактировано: Atreides - -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
volvo |
Сообщение
#6
|
Гость |
Ты сам себя запутываешь этим Repeat/Until, а зачем?
Вот так: program Matrix;Обрати внимание на индексацию - она начинается с 0... |
Atreides |
Сообщение
#7
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Сделал матрицу с возможностью выборки её размера и ввода элементов вручную, а как посчитать среднее значение каждой строки и вывести его в отдельный вектор, после сравнить значения строк вектора и вывести максимальное значение. Я там уже начал считать сумму, но чета Никам правильно в вектор выдать не могу.
Код program Project2; {$APPTYPE CONSOLE} uses SysUtils; type matrica=array[1..15,1..15] of real; var max:real; nmax:byte; p:array [1..15] of byte; a:matrica; i,j,n,m:integer; s:real; begin writeln; write('Vvedi kol-vo strok n & stolbchov m '); readln(n,m); for i:=1 to n do for j:=1 to m do begin write ('a[',i,',',j,']='); readln (a[i,j]); end; writeln; writeln ('Base matrix'); for i:=1 to n do begin for j:=1 to m do write (a[i,j]:8:1,' '); writeln; readln; end; //Ñóììà ýëåìåíòîâ ñòðîêè begin s:=0; for j:=1 to m do s:=s+a[i,j]; //ñóììà ýë-òîâ ñòðîêè end; readln; end; end. Сообщение отредактировано: Atreides - -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Текстовая версия | 6.10.2024 23:16 |