IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача с матрицами, Прошу помощи в решении.
jetman
сообщение 18.10.2005 10:00
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Проблема не дающая заснуть уже четвертый день:
Дана целая матрица размера nxm. Для каждой строки матрицы найти сумму четных элементов и произведение нечетных. Результаты оформить в виде матрицы (nx2). В полученной матрице упорядочить (переставить) строки по возрастанию второго элемента в строке.
Буду признателен за любую помощь.

Сообщение отредактировано: jetman - 18.10.2005 10:01
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 19.10.2005 11:18
Сообщение #2


Гость






Еще один вариант, более простой и, по-моему, более правильно интерпретирующий условие (пока тоже скрыто) :
uses crt;
const
n=3;
m=4;
type
TVec = array[1 .. m] of integer;
TArr = array[1 .. n] of TVec;


procedure InitArray(var x : TArr);
var i, j : byte;
begin
randomize;
for i := 1 to n do
for j := 1 to m do
x[i, j] := random(11);
end;

procedure PrintArray(x : TArr ; sizeN, sizeM : byte);
var i, j : byte;
begin
for i := 1 to sizeN do begin
writeln;
for j := 1 to sizeM do
write(x[i,j]: 2, ' ');
end;
writeln;
end;

function Addition(x : TArr; i : byte) : integer;
var
j : byte;
S : integer;
begin
s := 0;
for j := 1 to m do
if not odd(x[i, j]) then
inc(s, x[i, j]);
Addition := s;
end;

function Multiplication(x : TArr; i : byte) : integer;
var
j : byte;
p : integer;
begin
p := 1;
for j := 1 to m do
if odd(x[i, j]) then
p := p * x[i, j];
Multiplication := p;
end;

procedure SortResult(var x : TArr);
var
i: byte;
flag: boolean;
T: TVec;
begin
flag := false;
repeat

flag := true;
for i := 1 to n-1 do
if x[i, 2] < x[succ(i), 2] then begin
flag := false;
T := x[i]; x[i] := x[succ(i)]; x[succ(i)] := T
end;

until flag;
end;

var
arr, _result : TArr;
t: byte;

Begin
clrscr;
InitArray(arr);
PrintArray(arr, n, m);

for t := 1 to n do begin
_result[t, 1] := Addition(arr, t);
_result[t, 2] := Multiplication(arr, t);
end;

PrintArray(_result, n, 2);
SortResult(_result);
PrintArray(_result, n, 2);
readln;
End.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"