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

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

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

> Задачи на вывод номера первой строки в массиве,удовлетворяющей условию...
Tribunal
сообщение 12.01.2006 10:22
Сообщение #1


Бывалый
***

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

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


Как сделать так,чтобы выводился номер первой/последней строки/столбца в массиве,удовлетворяющих определенному условию?
Для таких задач,как:

1.Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой|последней строки|столбца, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк|столбцовт нет, то вывести 0.

2.Дана матрица размера 5 x 10. Вывести номер ее первой|последней строки|столбца, содержащего только положительные элементы. Если таких строк|столбцов нет, то вывести 0.

Сообщение отредактировано: Tribunal - 12.01.2006 10:55


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 12.01.2006 11:00
Сообщение #2


Гость






Вот общий случай:
const
rows = 4;
cols = 3;

_first = 1;
_last = -1;

type
matrix =
array[1 .. rows, 1 .. cols] of integer;

{ Это - условие, которое необходимо проверять }
function condition(const mx: matrix;
is_row: boolean; n: integer): boolean;
var i, count: integer;
begin
count := 0;
if is_row then begin
for i := 1 to cols do
if mx[n, i] < 0 then dec(count)
else if mx[n, i] > 0 then inc(count)
end
else begin
for i := 1 to rows do
if mx[i, n] < 0 then dec(count)
else if mx[i, n] > 0 then inc(count);
end;

condition := (count = 0);
end;

function get_index(const mx: matrix;
is_row: boolean; is_first: shortint): integer;
var i: integer;
begin
if is_row then begin
if is_first = _first then i := 1 else i := rows;
while (not condition(mx, is_row, i)) and (i > 0) and (i <= rows) do
inc(i, is_first);
if i > rows then i := 0;
end
else begin
if is_first = _first then i := 1 else i := cols;
while (not condition(mx, is_row, i)) and (i > 0) and (i <= cols) do
inc(i, is_first);
if i > cols then i := 0;
end;

get_index := i
end;

const
a: matrix =
(
(0, 2, -1),
(2, -1, 2),
(0, 2, -1),
(2, -1, 2)
);

begin
writeln(get_index(a, true, _first)); { распечатать номер первой строки, в которой ... }
writeln(get_index(a, true, _last)); { распечатать номер последней строки, в которой ... }
end.
 К началу страницы 
+ Ответить 

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


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

 



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