Заданы матрицы A, B, C.
Упорядочить по убыванию три числа X, Y, Z, где X – максимальный элемент матрицы A, Y – максимальный элемент матрицы B, Z – максимальный элемент матрицы C. Поиск максимального элемента оформить в виде подпрограммы – функции.
Код:
A=|1.85 2.35| B=|3.21.4| C=|3.6 0.48||0.4 2.4 ||2.2-1.8| |5.1 0.48| | 1.12.1|
Ввод матриц осуществляется из файла.
Задаю три двумерных массива, это понятно.
2. Ввод трех матриц из файлов. Вот тут уже вопрос как это осуществить.
Дальше сплошные вопроссы.
Как оформить в виде подпрограммы – функции поиск макс элемента и расположить их по убыванию......
Заранее спасибо тому, кто подскажет.
2. Ввод трех матриц из файлов. Вот тут уже вопрос как это осуществить.
Смотря как в файле у тебя этот массив задан. Одной строкой, построчно элементы и т.д. В любом случае, считываем построчно информацию из файла, а далее делаем с ней уже все что нам нужно. Инфы по этому вопросу в любой книжке даже самой простой предостаточно.
Как оформить в виде подпрограммы – функции поиск макс элемента и расположить их по убыванию......
Делаем функцию, которой мы будем передавать массив целиком. Найти максимальный элемент очень просто:
Код:
var i,j,n,m:integer;a: array[1..n,1..m] of real;max:real;begin{предполагается что массивы уже введены до поиска максимума}max:=0;for i:=1 to n do begin for j:=1 to m do beginif a[i,j]>max then max:=a[i,j]; end;end;{нашли максимумы, далее посортировать можно обычным пузырьком}
Код вставляем в тег [CОDE][/СОDЕ] или пользуемся кнопкой # (расширенный режим). Модератор.
Это функция?
1.если функция то надо немного подкорректировать.
Код:
function maxel(a:tmas,n:integer,m:integer):real;var i,j:integer;max:real;begin{мы функции передаем массив двумерный массив a типа tmas=array[...] of integer}max:=a[1,1];for i:=1 to n do begin for j:=1 to m do beginif a[i,j]>max then max:=a[i,j]; end;end;{нашли максимумы, далее сортировка ,хотя это лучше делать уже в другой функции,т.к придется создавать запись- record, в которой будет макс. элемент и сам массив.}result:=max;{ либо maxel:=max -то значения которое будет передавать функция}.
К тому же массив типа tmas а не просто array of integer потому что если написать второе то делфи будет думать что это разные типы. А так мы создадим конкретный тип, двойников которого не будет.
2. Просто все считываешь в строку, а потом посимвольно записываешь числа в массив.
Да и вообще так просто упорядочивать матрицы нельзя, т.к непонятно как это делать- построчно, диогонально... Поэтому надо быть острожным с этим.
Нет, у меня не делфи, а обычный TP7. Что такое tmas? Без него нельзя обойтись?
Или это просто название для типа массива, вроде
Type matr=array[1..5,1..5] of real;
var A:matr;
к примеру?
И почему of integer? Он же состоит у меня не из целых чисел..
И отличается ли чем fucntion от procedure?
И почему of integer? Он же состоит у меня не из целых чисел..
А integer это не целые числа?
Сообщение от GE076
И отличается ли чем fucntion от procedure?
Простым языком: процедура просто производит набор действий, а функция делает те же действия, но при этом еще и возвращает результат.
А вообще, это элементарные вещи, можно взять любую книжку и почитать =)
он - массив
5. Не стоит злоупотреблять чужими снисходительностью и временем;
Цитата из Правил раздела
И отличается ли чем fucntion от procedure?
Раздел конечно для новичков, но наличие таких элементарных знаний необходимо. Я всё понимаю, сам далеко не профессионал, но надо и самому разбираться, а вопрос ставить по конкретной проблемме в реализации кода. Ну типа:
Такая-то задача. Вот как пытаюсь решить. Что не правильно?
Хорошо. Задача пока такая. Ввести эти матрицы. Есть 3 файла с матрицами. Дальше то, что снизу.. но почему-то не работает.
Код:
Program ff;uses crt;Type matr=array[1..3,1..3] of real;Var a,b,c:matr;i,j:integer;f:text;Procedure Vvod(var Q:matr;n,m:integer;name:string;d:char);BeginAssign (f,name);Reset (f);For i:=1 to n doFor j:=1 to m doRead (f, Q[i,j]);Close (f);Writeln (Matrica,d);for i:=1 to n dobeginfor j:=1 to m doWrite (Q[i,j]:6:2, );Writeln;end; end;BeginVvod(A,2,2,a.pas,A);Vvod(B,3,3,b.pas,B);Vvod(C,2,2,c.pas,C); end.
Уже разобрался.