27.10.2010, 21:06 | #1 (permalink) |
Новичок
Регистрация: 27.10.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите написать программу
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде проце¬дуры). Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрица¬тельный элемент (оформить в виде функции). |
27.10.2010, 21:06 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ваш топик очень похож по содержанию на эти Помогите написать программу на PASCAL Помогите написать программу Помогите написать программу в Delphi Помогите написать программу в Excel |
27.10.2010, 21:27 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
28.10.2010, 11:43 | #5 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Ну вот, это решение в чистом Паскале: Код:
CONST N=5; {Number of lines} M=7; {Number of columns} TYPE Matrix=ARRAY[1..N,1..M] of Integer; Col=RECORD Sm:ARRAY[1..M] of Integer; Bo:ARRAY[1..M] of Boolean; END; VAR i,j:Integer; M_in,M_out:Matrix; C:Col; PROCEDURE Ordering(M1:Matrix; var M2:Matrix); var Numb:Array[1..M] of BYTE; Sums:Array[1..M] of WORD; Sum:WORD; Num:BYTE; i0,j0,j1:Integer; begin For j0:=1 to M do begin Numb[j0]:=j0; Sums[j0]:=0; For i0:=1 to N do If M1[i0,j0]<0 then Sums[j0]:=Sums[j0]-M1[i0,j0]; end; For j1:=1 to M do For j0:=1 to M-j1 do If Sums[j0]>Sums[j0+1] then begin Sum:=Sums[j0]; Sums[j0]:=Sums[j0+1]; Sums[j0+1]:=Sum; Num:=Numb[j0]; Numb[j0]:=Numb[j0+1]; Numb[j0+1]:=Num; end; For i0:=1 to N do For j0:=1 to M do M2[i0,j0]:=M1[i0,Numb[j0]]; end; FUNCTION Search_Sums(Mss:Matrix):Col; var i0,j0:BYTE; SS:Col; b:Boolean; begin For j0:=1 to M do begin b:=false; i0:=0; Repeat INC(i0); If Mss[i0,j0]<0 then b:=true; Until b or (i0=N); If b then SS.Bo[j0]:=true else SS.Bo[j0]:=false; If b then begin SS.Sm[j0]:=0; For i0:=1 to N do SS.Sm[j0]:=SS.Sm[j0]+Mss[i0,j0]; end else SS.Sm[j0]:=0; end; Search_Sums:=SS; end; BEGIN Randomize; For i:=1 to N do begin For j:=1 to M do begin M_in[i,j]:=Random(100)-20; Write(M_in[i,j]:5); end; Writeln; end; WriteLn; Ordering(M_in,M_out); For i:=1 to N do begin For j:=1 to M do Write(M_out[i,j]:5); Writeln; end; WriteLn; C:=Search_Sums(M_in); For j:=1 to M do If C.Bo[j] then Writeln('Column N ',j,' ',C.Bo[j],' Sum= ',C.Sm[j]) else Writeln('Column N ',j,' ',C.Bo[j]); Writeln; ReadLn; END. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
28.10.2010, 12:44 | #9 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
Владимир, у меня тубро и борланд паскаль заругались на неправильный тип результата тут:
Код:
FUNCTION Search_Sums(Mss:Matrix):Col; |
28.10.2010, 12:52 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Free Pascal. Причем какой-то изрядно старый.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|