Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils, Windows;
- const
- ErrorMessage = 'Îøèáêà! Ýëåìåíòû ìàòðèöû äîëæíû íàõîäèòñÿ çàäàâàòüñÿ öåëûìè ÷èñëàìè â äèàïàçîíå [-2147483648, ..., -1, 0, 1, ..., 2147483648]';
- InstructionForOrder = 'Îøèáêà! Ïîðÿäîê ìàòðèöû äîëæåí çàäàâàòüñÿ íàòóðàëüíûì ÷èñëîì â äèàïàçîíå [1, ..., 2147483648]';
- type
- MatrixArray = array of array of Integer;
- //Ôóíêöèÿ äëÿ ïðîâåðêè íà ñóùåñòâîâàíèå ôàéëà
- function IsCorrectName(): String;
- var
- FileName: String;
- begin
- Writeln('Ïîæàëóéñòà, ââåäèòå íàçâàíèå ôàéëà â êîòîðîì íàõîäèòñÿ ìàòðèöà. ÏÐÈÌÅÐ Example');
- Readln(FileName);
- FileName := FileName + '.txt';
- if FileExists(FileName) then
- IsCorrectName := FileName
- else
- begin
- Writeln('Ôàéëà ñ äàííûì íàçâàíèåì íå ñóùåñòâóåò â ïàïêå â äàííîé ïðîãðàììîé, ïåðåïðîâåðüòå íàçâàíèå ôàéëà è ââåäèòå ñíîâà ÷åòêî ñëåäóÿ èíñòðóêöèÿì');
- IsCorrectName := '';
- end;
- end;
- //Ôóíêöèÿ äëÿ ïðîâåðêè íà êâàäðàòíóþ ìàòðèöó
- function OrderOfMatrix(var Input: TextFile): Integer; //Åñëè êâàäðàòíàÿ âîçâðàùàåò ïîðÿäîê åñëè íåò âîçâðàùàåò ïîðÿäîê 0
- var
- i, NumOfThisLine, Hit, Order: Integer;
- SquareControl: Boolean;
- Symbol: String;
- begin
- Order := 0;
- while (not SeekEOF(input)) do
- begin
- Readln(Input, Symbol);
- inc(Order)
- end;
- SquareControl := False;
- i := 0;
- Reset(Input);
- while (i < Order) do
- begin
- NumOfThisLine := 0;
- while (not seekEOLN(Input)) do
- begin
- try
- Read(Input, Hit);
- except
- Writeln(ErrorMessage);
- end;
- inc(NumOfThisLine);
- end;
- inc(i);
- Readln(Input);
- if (NumOfThisLine = Order) then
- SquareControl := True
- else
- begin
- Writeln('Â âàøåé ìàòðèöå íåõâàòàåò ýëåìåíòîâ, ïîæàëóéñòà, äîáàâüòå ýëåìåíòû è çàïóñòèòå ïðîãðàììó ñíîâà');
- i := Order + 1;
- SquareControl := False
- end;
- end;
- if SquareControl then
- OrderOfMatrix := Order
- else
- begin
- Writeln('Âàøà ìàòðèöà íå ÿâëÿåòñÿ êâàäðàòíîé, êîë-âî ñòðîê íå ñîîòâåòñâóåò êîë-âó ñòîëáöîâ');
- Writeln('Ïîæàëóéñòà, èñïðàâüòå ýòî è çàïóñòèòå ïðîãðàììó ñíîâà');
- OrderOfMatrix := 0;
- end;
- end;
- //Ôóíêöèÿ äëÿ çàïîëíåíèÿ ìàññèâà ÷åðåç ôàéë
- function InfFileToArray(var Input: TextFile; Order: Integer): MatrixArray;
- var
- i, j, Iteration: Integer;
- InfArray: MatrixArray;
- begin
- Reset(Input);
- SetLength(InfArray, Order, Order);
- Iteration := Order - 1;
- for i := 0 to Iteration do
- begin
- for j := 0 to Iteration do
- begin
- Read(Input, InfArray[i][j]);
- end;
- Readln(Input);
- end;
- InfFileToArray := InfArray;
- end;
- //Ôóíêöèÿ äëÿ ïîäñ÷åòà ïîðÿäêà ìàòðèöû (ïðè ââîäå ìàòðèöû ÷åðåç êîíñîëü)
- function IsOrder(): Integer;
- var
- Order: Integer;
- IsCorrect: Boolean;
- begin
- IsCorrect := False;
- repeat
- Writeln('Ïîæàëóéñòà, ââåäèòå ïîðÿäîê ìàòðèöû');
- try
- Readln(Order);
- if (Order > 0) then
- IsCorrect := True;
- except
- Writeln(InstructionForOrder);
- end;
- until IsCorrect;
- IsOrder := Order;
- end;
- //Ôóíêöèÿ äëÿ çàïîëíåíèÿ ìàòðèöû ÷åðåç êîíñîëü
- function InfConsoleToArray(Order: Integer): MatrixArray;
- var
- i, j, Iteration: Integer;
- IsCorrect: Boolean;
- Matrix: MatrixArray;
- begin
- Iteration := Order - 1;
- SetLength(Matrix, Order, Order);
- Writeln('Ïîæàëóéñòà, ââåäèòå ýëåìåíòû ìàòðèöû [¹ñòðîêè, ¹ñòîëáöà]');
- for i := 0 to Iteration do
- for j := 0 to Iteration do
- repeat
- try
- Write('[', i+1, '][', j+1, ']: ');
- Readln(Matrix[i][j]);
- IsCorrect := True;
- except
- Writeln(ErrorMessage);
- IsCorrect := False;
- end;
- until IsCorrect;
- InfConsoleToArray := Matrix;
- end;
- //Ôóíêöèÿ äëÿ ïîäñ÷åòà ñóììû ñîãëàñíî çàäàííîé ôîðìóëå
- function MatrixSum(Matrix: MatrixArray; Order: Integer): Integer;
- var
- i, Sum, j, Iteration: Integer;
- begin
- SetLength(Matrix, Order, Order);
- Iteration := Order - 1;
- Sum := 0;
- for i := 0 to Iteration do
- begin
- if (i <= Iteration - i) then
- for j:= i to Iteration - i do
- Sum := Sum + Matrix[i][j]
- else
- for j:= i downto Iteration - i do
- Sum := Sum + Matrix[i][j]
- end;
- MatrixSum := Sum;
- end;
- //Ôóíêöèÿ äëÿ âûâîäà ñóììû â ôàéë è â êîíñîëü
- procedure Output(Sum: Integer);
- var
- Output: TextFile;
- FileName: String;
- begin
- Writeln('Ïîæàëóéñòà, ââåäèòå èìÿ ôàéëà â êîòîðûé íåîáõîäèìî çàïèñàòü ðåçóëüòàò âûïîëíåíèÿ ïðîãðàììû. ÏÐÈÌÅÐ: Example');
- Readln(FileName);
- FileName := FileName + '.txt';
- AssignFile(Output, FileName);
- Rewrite(Output);
- Writeln(Output, Sum);
- CloseFile(Output);
- Writeln('Èíôîðìàöèÿ â ôàéë óñïåøíî çàïèñàíà.');
- end;
- var
- Matrix: MatrixArray;
- Order, Sum: Integer;
- FileName, Choise: String;
- Input: TextFile;
- IsCorrectChoise: Boolean;
- begin
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- Writeln('Çäðàâñòâóéòå, äàííàÿ ïðîãðàììà ïðèíèìàåò ìàòðèöó è âîçâðàùàåò ñóììó çàäàííûõ â óñëîâèè ýëåìåíòîâ');
- Writeln('×åðåç ÷òî âû áû õîòåëè ââîäèòü äàííûå?');
- IsCorrectChoise := False;
- repeat
- Writeln('Äëÿ ââîäà ñ ôàéëà ââåäèòå: F' +#13#10 +'Äëÿ ââîäà ñ êîíñîëè ââåäèòå: C');
- Readln(Choise);
- if Choise = 'F' then
- begin
- FileName := IsCorrectName;
- if FileName <> '' then
- begin
- AssignFile(Input, FileName);
- Reset(Input);
- Order := OrderOfMatrix(Input);
- Close(Input);
- if (Order <> 0) then
- begin
- IsCorrectChoise := True;
- SetLength(Matrix, Order, Order);
- Matrix := InfFileToArray(Input ,Order);
- end;
- end
- end
- else
- if Choise = 'C' then
- begin
- IsCorrectChoise := True;
- Order := IsOrder();
- SetLength(Matrix, Order, Order);
- Matrix := InfConsoleToArray(Order);
- end
- else
- Writeln('Âû âûáðàëè íåêîððåêòíûé âàðèàíò ââîäà, âûáèðåòå ñíîâà ÷åòêî ñëåäóÿ èíñòðóêöèÿì');
- until IsCorrectChoise;
- Sum := MatrixSum(Matrix, Order);
- Writeln('Ñóììà ýëåìåíòîâ ìàòðèöû ïî çàäàííîé ôîðìóëå: ', Sum);
- Output(Sum);
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement