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

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

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

> Подпрограммы
Камтугеза
сообщение 15.01.2006 18:18
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Настя

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


Даны массивы А (30; 20) и В (40;50) из вещ чисел. Найти номер строки с максимальной суммой элементов. В том массиве, где этот номер число нечетное, обнулить элементы данной строки. Если номер окажется нечетным, то выдать соответ сообщение.

помогите, пожалуйста...=)
буду рада идеям, потому что не могу понять сам алгоритм.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 15.01.2006 18:50
Сообщение #2


Гость






Могу предложить такой вариант:
type
pArr = ^arrType;
arrType = array[0 .. ((2 * maxint) div sizeof(real) - 1)] of real;

function get_max_line(const arr: array of real;
const rows, cols: integer): integer;
var
max_s, s: real;
i, j, max_ix: integer;
begin
max_s := - 10000;
for i := 1 to rows do begin
s := 0;
for j := 1 to cols do begin
s := s + arr[(i - 1)*cols + (j - 1)];
end;
if s > max_s then begin
max_s := s; max_ix := i;
end;
end;
get_max_line := max_ix;
end;

procedure zero_line(n: integer;
var arr: array of real;
const rows, cols: integer);
var j: integer;
begin
for j := 1 to cols do begin
arr[(n - 1)*cols + (j - 1)] := 0;
end;
end;

var
a: array[1 .. 30, 1 .. 20] of real;
b: array[1 .. 40, 1 .. 50] of real;
const
test: array[1 .. 5, 1 .. 6] of real =
(
(1, 2, 3, 4, 5, 6), { 21 }
(6, 9, 0, 1, 2, 10), { 28 }
(6, 3, 9, 9, 6, 0), { 33 }
(4, 7, 3, 9, 8, 8), { 39 }
(5, 4, 2, 8, 1, 3) { 23 }
);

var
mx, i, j: integer;
begin
mx := get_max_line(pArr(@test)^, 5, 6);
if odd(mx) then begin
writeln('the number is odd');
zero_line(mx, pArr(@test)^, 5, 6);
end;

for i := 1 to 5 do begin
for j := 1 to 6 do
write(test[i, j]:5:0);
writeln;
end;
end.

Заполняешь матрицы A и B и обрабатываешь точно так же, как я показал для Test... В Турбо Паскале работает...
 К началу страницы 
+ Ответить 

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


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

 



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