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

Sos!!!

Добавлено: 02 мар 2007, 14:18
San4ez
Ребятки, вы тут все такие умницы.... помогите решить задачку....

Re: Sos!!!

Добавлено: 02 мар 2007, 14:20
San4ez
Задача такова:

Дана целочисленная квадратная матрица A (n,n).роверьте, являются ли все числа, расположенных выше главной и побочной диагоналей: различными способам.

Re: Sos!!!

Добавлено: 02 мар 2007, 15:23
Хыиуду
Ответ: все числа в целочисленной квадратичной матрице A(n,n) выше главной и побочной диагоналей, являются числами, а не различными способами.

На будущее - темы надо называть осмысленно

Re: Sos!!!

Добавлено: 02 мар 2007, 16:13
Колядин Максим
San4ez писал(а):Задача такова:

Дана целочисленная квадратная матрица A (n,n).роверьте, являются ли все числа, расположенных выше главной и побочной диагоналей: различными способам.
Что за ".роверьте", что за "числа, расположенных" и что за "выше главной и побочной диагоналей: различными способам."???
P. S. Попробуй сам понять смысл поставленного тобой вопроса...

Re: Sos!!!

Добавлено: 02 мар 2007, 18:19
San4ez
Ещё раз пишу...

Дана целочисленная квадратная матрица A (n,n). Проверьте, являются ли все числа различными, расположенные выше главной и побочной диагоналей.

Re: Sos!!!

Добавлено: 03 мар 2007, 19:32
San4ez
Ребятки, ну, помогите...!!!! Плиииизззз! )))))

Re: Sos!!!

Добавлено: 05 мар 2007, 04:57
Oleg_Rus
можно устроить прогон по матрице, занести все числа в одномерный массив, и проверяем на различность.

все просто...

Re: Sos!!!

Добавлено: 05 мар 2007, 05:00
Oleg_Rus
Razn:=False;

// просотр массива
for i:=1 to n do
for j:=1 to n do
begin
b[k]:=a[n, n];
inc(k);
end;

// проверка
for i:=1 to n do
for j:=1 to n do
if b=b[j] then Razn:=True;

if Razn then writeln('Yes') else Writeln('No');
________________

если кто увидит ошибку, проссьба - известить!

Re: Sos!!!

Добавлено: 05 мар 2007, 09:20
somewhere
&quot писал(а):b[k]:=a[n, n];
А смысл-то какой одно и тоже число дублировать?
&quot писал(а):// просотр массива
for i:=1 to n do
for j:=1 to n do
begin
b[k]:=a[n, n];
inc(k);
end;
Да и вообще лишняя операция - можно сделать на месте
&quot писал(а):for i:=1 to n do
for j:=1 to n do
if b=b[j] then Razn:=True;

Что-то тяжело до меня доходит зачем такая вложенность? Не проще-ли так?

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

for i:=1 to n-1 do if b[i]=b[i+1] then Razn:=True;
А лучше так

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

I := 2;
While (i<n) and (b[i]<>b[i-1]) do inc(I);
Razn := (I=n);
Вообще задача - установить различие элементов ВЫШЕ главной и побочной диагоналей. Координато этих элементов легко установить, из них исключить те, которые принадлежат главной (X=Y) и побочной (X=N-Y+1)

Re: Sos!!!

Добавлено: 05 мар 2007, 09:43
Oleg_Rus
// цитата от Somewhere
for i:=1 to n-1 do if b=b[i+1] then Razn:=True;

а тебе не кажется, что здесь она проверит только два стоящих рядом элемента?
а если будет так 1 3 4 1?

провериться только 1 и 2, 2 и 3, 3 и 4, а 1 и 4 не сравниваются...