Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
RastamaN
Дано натуральное число n. Выяснить, сколько положительных элементов содержит матрица A размерности nxn, если:

aij=sin(i+j/2)


Опять, наверное, очень легкая задача, но, все же, помогите, если не сложно... :smile:
klem4
Может конечно и можно как-то одной формулой вывести ... но не ужели тебе в голову не пришла идея хотябы полного перебора :smile: ?
RastamaN
Не пришла!
klem4

count := 0;
for i := 1 to n do
for j := 1 to m do begin
a[i,j] := sin(i+j/2);
if a[i,j]>0 then inc(count);
end;

Altair
ээээ клем... так не пойдет. Во-первых, тебе же сказали что размерность n*n, зачем ты m используешь ?
И потом, зачем тебе матрица? А если n=10000 ?
хы...

Вот смотри-ка..
Нажмите для просмотра прикрепленного файла
(это вот это отработалоsmile.gif

{$mode delphi}
uses wincrt,graph;
var
i,j,count,n:longint;
c:char;
d,gd,gm:smallint;
ir,jr:extended;
s:string;
begin
d:=d8bit;
gm:=m800x600;
initgraph(gd,gm,'');
count := 0;
n:=100;
for i := 1 to n do
for j := 1 to n do begin
ir:=i; jr:=j;
if sin(ir+jr/2)>0 then c:='+' else c:='-';

outtextxy(i*20,j*20,c);
if c='+' then inc(count);
end;
str(count,s);

readln

end.


Видишь закономерность ?
Это трехдиагональная матрица, только у не диагонали не по главной диагонали а по побочной...
Используя это можно похимичить и вывести формулу для получения ответа вообще без перебеора... а за перебор сразу неут надо ставить...

Только я бы проверил насчет элемента (1,3) и таки-же.. имхо там 1 тоже должно быть и это просто погрешность вычислений...

думаем дальше. вопрсо открыт
RastamaN
2 Altair, Блин, это загон какой-то получается blink.gif , легче застрелиться! mega_chok.gif

И мне вполне даже с перебором пойдет!!! Кстати, нам по-моему так и сказали делать.. Мы таких загонов еще просто не проходили
Altair
RastamaN, можешь брать перебор, дальше это уже не твоя задача а наша smile.gif blum.gif

p.s.
да, прошу прощения, марица не трехдиагональная.
У нее каждый 2 столбец плюсов снизу на 2 позиции меньше.
klem4
Цитата(Altair)
Во-первых, тебе же сказали что размерность n*n, зачем ты m используешь ?


Не придерайся ...

Цитата(Altair)
И потом, зачем тебе матрица?


Цитата(klem4)
Может конечно и можно как-то одной формулой вывести ...


Я и не утверждал что без нее никак ...

М
Дык задача администрации (в твоем лице) дать как можно более точный ответ smile.gif А ты торопишься smile.gif не торопись и все будет пучком blum.gif
Altair

RastamaN
Блин, решите ее как-нибудь просто что-ли... А то у меня, во-первых, вот это "uses wincrt,graph" не работае, а во-вторых, меня засрут за такое решение, потому-что я б до такого не допер бы сам...
Altair
не работает потому что у тебя нет FPC.
ВОт тебе решение тупое. Клем предложил blum.gif

var
count,n,i,j:integer;
c:real;
begin
readln(n);
count := 0;
for i := 1 to n do for j := 1 to n do
if sin(i+j/2)>0 then inc(count);
writeln(count);
end;


М
А твое ну оооочень умное ?! абсолютно такойже полные перебор, только без матрицы yes2.gif

c:real - зачем ? unsure.gif
klem4

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.