Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица
Форум «Всё о Паскале» > 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

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