Страница 1 из 1

Двумерный массив в Делфи(СРОЧНО)

Добавлено: 10 янв 2017, 21:38
jackass92
Ребята, помогите, пожалуйста. Пропустил лекцию по двумерным массивам и теперь вообще не пойму, как это делается. Алгоритмы писать умею, а вот с программами - беда. Иду на автомат, а две проги всё портят. Вот два задания, буду очень признателен.
а) Для массива L(N,M) найти кол-во положительных, отрицательных и нулевых элементов;
б) Из массива M(4,5) сформировать массив B(5), каждый элемент которого равен произведению ненулевых элементов соответствующего столбца массива M.

Re: Двумерный массив в Делфи(СРОЧНО)

Добавлено: 10 янв 2017, 21:49
AiK
Так, а в чём проблема? Обходят двумерный массив, например, двумя вложенными циклами. Во внутреннем цикле меняешь одну координату, во внешнем - другую.

Код: Выделить всё

for j:=1 to N do
    for j:=1 to M do
  begin
   //сравнение элемента L[i,j] на ноль, на положительное и отрицательное значение
   //инкрементирование соответствующего счётчика
  end;

Re: Двумерный массив в Делфи(СРОЧНО)

Добавлено: 10 янв 2017, 22:36
dr.Jekill
jackass92 писал(а): б) Из массива M(4,5) сформировать массив B(5), каждый элемент которого равен произведению ненулевых элементов соответствующего столбца массива M.
Вот Вам под "б":

Код: Выделить всё

var
	M: array[1..4, 1..5] of Integer;
	B: array[1..5] of Integer;
	i, j: Integer;
begin
	for j := 1 to 5 do
		B[j] := 1;
	
	Randomize;
	for i := 1 to 4 do
	begin
		for j := 1 to 5 do
		begin
			M[i, j] := Random(10);
			Write(M[i, j]:5);
		
			if M[i, j] <> 0 then
				B[j] := B[j] * M[i, j];
		end;
		WriteLn;
	end;
	
	WriteLn;
	
	for j := 1 to 5 do
		Write(B[j]:5);
	
	ReadLn;
end.

Re: Двумерный массив в Делфи(СРОЧНО)

Добавлено: 10 янв 2017, 22:42
dr.Jekill
AiK писал(а):Так, а в чём проблема?...
jackass92 писал(а):...а) Для массива L(N,M)...
ТС, Вам динамический массив надо? Если нет, то для "автомата" такая задача вообще должна быть на раз-два )