Цитата:
Сообщение от diagen_62
да я хочу понять всё и научиться!я не ищу халявы, просто хочу во всем разобраться)) вот не знаю, что не так
|
Похвально, приветствую. Только... знаете, чтобы научиться, нужно действительно стараться писать программы (пусть даже самые простенькие!) самостоятельно, и при том ясно, четко и абсолютно понимать смысл каждого действия. Пусть даже программа реализует формулу c=a+b. А бездумное скатывание откуда ни попадя приведет к полностью обратному эффекту.
Вот Вы, якобы самостоятельно решая задачу о количестве ненулевых элементов матрицы, понаопределяли и понавводили кучу собственных пользовательских типов. Вопрос - зачем? Ответ я, кажется, знаю - затем, что так было сделано в некоей программе, откуда Вы это тупо скатали. Но там-то наверняка автор перешел к динамическим переменным, указателям, стекам и прочему такому разному, до чего Вам пока, как до звёзд, поэтому ему и понадобились переопределения типов. А Вам они ровно ни к чему.
В общем так. Вот Вам вариант решения задачки, попробуйте разобраться. А лучше - читайте книжки и пособия по Паскалю и пишите, пишите, пишите программки. Сами! Вот что главное. Только так чему-нибудь научитесь.
Код:
CONST
N=10;
VAR
A:Array[1..N,1..N] of Integer;
N_higher,N_lower,N_on:Byte;
i,j:Integer;
BEGIN
Randomize;
For i:=1 to N do
For j:=1 to N do
A[i,j]:=10-Random(20);
For i:=1 to N do
begin
For j:=1 to N do
Write(A[i,j]:4);
WriteLn;
end;
WriteLn;
N_higher:=0;
N_lower:=0;
N_on:=0;
For i:=1 to N do
For j:=1 to N do
begin
If (j>i) and (A[i,j]<>0) then Inc(N_higher);
If (j=i) and (A[i,j]<>0) then Inc(N_on);
If (j<i) and (A[i,j]<>0) then Inc(N_lower);
end;
WriteLn('N_higher= ',N_higher);
WriteLn('N_on= ',N_on);
WriteLn('N_lower= ',N_lower);
ReadLn;
END.