Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2007, 22:38   #1
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию Задача по ТП.

Заданы матрицы A, B, C.
Упорядочить по убыванию три числа X, Y, Z, где X – максимальный элемент матрицы A, Y – максимальный элемент матрицы B, Z – максимальный элемент матрицы C. Поиск максимального элемента оформить в виде подпрограммы – функции.

Код:
A=|1.85 2.35|  B=|3.2     1.4|       C=|3.6   0.48|
     |0.4  2.4 |     |2.2     -1.8|         |5.1    0.48|
                        | 1.1     2.1|

Ввод матриц осуществляется из файла.

Задаю три двумерных массива, это понятно.
2. Ввод трех матриц из файлов. Вот тут уже вопрос как это осуществить.
Дальше сплошные вопроссы.
Как оформить в виде подпрограммы – функции поиск макс элемента и расположить их по убыванию......
Заранее спасибо тому, кто подскажет.
GE076 вне форума Ответить с цитированием
Старый 05.12.2007, 10:39   #2
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию

Цитата:
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 begin
     if a[i,j]>max then max:=a[i,j];
  end;
end;
{нашли максимумы, далее посортировать можно обычным пузырьком}
Цитата:
Код вставляем в тег [CОDE][/СОDЕ] или пользуемся кнопкой # (расширенный режим). Модератор.

Последний раз редактировалось AlDelta; 05.12.2007 в 10:49. Причина: Тег [CODE]
Cyn4uk вне форума Ответить с цитированием
Старый 05.12.2007, 17:12   #3
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию

Это функция?
GE076 вне форума Ответить с цитированием
Старый 05.12.2007, 20:19   #4
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

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 begin
     if a[i,j]>max then max:=a[i,j];
  end;
end;
{нашли максимумы, далее сортировка ,хотя это лучше делать уже в другой функции,т.к придется создавать запись- record, в которой будет макс. элемент и сам массив.}
result:=max;{ либо maxel:=max -то значения которое будет передавать функция}.
К тому же массив типа tmas а не просто array of integer потому что если написать второе то делфи будет думать что это разные типы. А так мы создадим конкретный тип, двойников которого не будет.
2. Просто все считываешь в строку, а потом посимвольно записываешь числа в массив.
Да и вообще так просто упорядочивать матрицы нельзя, т.к непонятно как это делать- построчно, диогонально... Поэтому надо быть острожным с этим.

Последний раз редактировалось bill; 05.12.2007 в 20:29.
bill вне форума Ответить с цитированием
Старый 05.12.2007, 22:20   #5
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию

Нет, у меня не делфи, а обычный TP7. Что такое tmas? Без него нельзя обойтись?
Или это просто название для типа массива, вроде
Type matr=array[1..5,1..5] of real;
var A:matr;
к примеру?

И почему of integer? Он же состоит у меня не из целых чисел..

Последний раз редактировалось GE076; 05.12.2007 в 22:22.
GE076 вне форума Ответить с цитированием
Старый 05.12.2007, 23:38   #6
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию

И отличается ли чем fucntion от procedure?
GE076 вне форума Ответить с цитированием
Старый 06.12.2007, 01:24   #7
Cyn4uk
Пользователь
 
Регистрация: 25.11.2007
Сообщений: 56
По умолчанию

Цитата:
И почему of integer? Он же состоит у меня не из целых чисел..
А integer это не целые числа?

Цитата:
Сообщение от GE076 Посмотреть сообщение
И отличается ли чем fucntion от procedure?
Простым языком: процедура просто производит набор действий, а функция делает те же действия, но при этом еще и возвращает результат.

А вообще, это элементарные вещи, можно взять любую книжку и почитать =)
Cyn4uk вне форума Ответить с цитированием
Старый 06.12.2007, 08:30   #8
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию

он - массив
GE076 вне форума Ответить с цитированием
Старый 06.12.2007, 08:48   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Цитата:
5. Не стоит злоупотреблять чужими снисходительностью и временем;
Цитата из Правил раздела

Цитата:
И отличается ли чем fucntion от procedure?
Раздел конечно для новичков, но наличие таких элементарных знаний необходимо. Я всё понимаю, сам далеко не профессионал, но надо и самому разбираться, а вопрос ставить по конкретной проблемме в реализации кода. Ну типа:
Такая-то задача. Вот как пытаюсь решить. Что не правильно?
Sibedir вне форума Ответить с цитированием
Старый 06.12.2007, 23:48   #10
GE076
Пользователь
 
Регистрация: 04.12.2007
Сообщений: 13
По умолчанию

Хорошо. Задача пока такая. Ввести эти матрицы. Есть 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);
Begin
Assign (f,name);
Reset (f);
For i:=1 to n do
For j:=1 to m do
Read (f, Q[i,j]);
Close (f);
	Writeln ('Matrica',d);
	for i:=1 to n do
	begin
	for j:=1 to m do
	Write (Q[i,j]:6:2, ' ');
	Writeln;
	end;
  end;
	Begin
	Vvod(A,2,2,'a.pas','A');
	Vvod(B,3,3,'b.pas','B');
	Vvod(C,2,2,'c.pas','C');
        end.

Последний раз редактировалось GE076; 07.12.2007 в 00:29.
GE076 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по ООП Lenivec** Фриланс 2 17.07.2008 15:17
Задача Nil_rus Помощь студентам 3 15.05.2008 09:05
Задача/C++ Stan Помощь студентам 2 24.01.2008 20:33