Имам предвид да направя, така че деклараторът сам да определя броя на стълбовете и редовете на масива. На теория, знам че става чрез въвеждане на променлива F например и write(' Vuvedete broq na redovete i stulbovete na masiva');
readln(F);
Да обаче не става защото не ми разпознава интервала на матрицата без константата в него. Ето как изглежда програмата ми досега:
Код:
Код:
PROGRAM Kursova_rabota_No1;
CONST
N=3;
M=(N*(N-1)) DIV 2;
VAR
A:ARRAY [1..N,1..N] OF REAL;
C:ARRAY [1..M] OF REAL;
X:REAL;
I,J,K:INTEGER;
BEGIN
writeln ('***********************************************************');
writeln ('This program was made by Grigor Ivanov, N: 051208059 . ');
writeln (' TU - Sofia , Departament of Thermalengineering ');
writeln ('*************************************************************');
writeln (' ---===<<< Kursova Zadacha N:1 >>>===---');
writeln ('___________________________________________________________');
writeln (' Da se sustavi programa za obrabotka na masiva A[N,N] kudeto');
writeln (' dannite sa realni chisla v intervala [-1000; 1000], da izvurshvat slednite deistviq:');
writeln (' * otpe4atvane na uslovieto na zada4ata');
writeln (' * otpe4atvane avtora na programata');
writeln (' * vuvejdane na vhodnite danni');
writeln (' * otpe4atvane na vhodnite danni');
writeln (' * a) da se obrazuva ednomeren masiv C, elementite na koito sa elementite na masiva A');
writeln (' * namira6ti se pod glavniq, diagonal, b) polu4eniqt masiv da se sortira po golemina');
writeln (' * otpe4atvane na polu4enite rezultati i sled obrabotka a) i sled obrabotka b)');
writeln ('_____________________________________________________________');
writeln;
{ VYVEJDAME DANNITE }
FOR I:=1 TO N DO
BEGIN
WRITELN(I,':');
FOR J:=1 TO N DO
BEGIN
REPEAT
WRITE(' ',J,'.');
READLN(X);
UNTIL (X>=-1000) AND (X<=1000);
A[I,J]:=X;
END
END;
{ IZVEJDAME MATRICATA }
WRITELN('Matrica:');
FOR I:=1 TO N DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:2:2,' ');
WRITELN;
END;
{ POPYLVAME MASIVA "C" S ELEMENTITE POD GLAVNIQ DIAGONAL }
K:=1;
FOR I:=2 TO N DO
FOR J:=1 TO I-1 DO
BEGIN
C[K]:=A[I,J];
K:=K+1;
END;
{ SORTIRAME MASIVA "C" }
FOR I:=2 TO M DO
BEGIN
X:=C[I];J:=I-1;
WHILE (X<C[J]) AND (J>0) DO
BEGIN
C[J+1]:=C[J];
J:=J-1;
END;
C[J+1]:=X;
END;
{ IZVEJDAME SORTIRANIQ MASIV }
WRITELN;
WRITELN('Sortirani elementi pod glavniq diagonal:');
FOR I:=1 TO M DO
WRITE(C[I]:2:2,' ');
readln
END.
Какво може да се сложи вместо това N=3 като константа за да разпознае променливата