pascalabcnet/TestSuite/CompilationSamples/TasksMatr.pas
AlexanderZemlyak ba4d274058
Async await merge (#3177)
* s.ToLines
RenameDirectory

* Исправление ToLines

* Убрал из грамматики узлы await - случайно оставались

* Sync `.ToLines` with `System.IO.StringReader` (#3154)

* 3.9.0.3494

* add tests

* #3152

* #3152

* Don't skip PCU errors in `CompileAllUnits`

* fix #3155

* Create the array types outside of any unit/scope

* Add `use` test

* RobotField - try в блоке создания

* Исправлена Range(a, b, step: real)

LightPT - CheckOutput может принимать параметры типа последователльность - они будут вытягиваться в одну последовательность
  Для этого исправлен FlattenElement
  FlattenOutput применяется автоматически - его теперь не надо вызывать явно
TaskLoops поправлен и упрощен в соответствии с CheckOutput

* Поправлен LightPT

Упрощены TasksArr.pas TasksMatr.pas TasksStr.pas

* fix `GetReferenceFileName` dll copy (#3173)

* Исправление зависимостей проектов (#3174)

* Add workflow to build each project separately

* Make `Compiler` depend on `PascalLanguage` and `PascalABCSaushkinParser`  06e595

* Make IDE's depend on `PABCNETC`

It's launched as a separate process from IDE

* Revert pascal language moving to language plugins (#3175)

* Return Parsers folder with standard parsers and move SyntaxTreeConverters back to Core

* Rename PascalLanguage project to PascalABCLanguageInfo

* Fix pascal dll loading

* Поправлены Tasks1Arr.pas Tasks1Begin.pas Tasks1BoolIfCase.pas

* Поправил в трех проектах пути к bin

LightPT - Read...(prompt) - больше комбинаций

Loop_If_2_Sum в Tasks1Loops.pas

* #3172

* 3.9.0.3500
Хороший коммит )

* Remove extra tests

* Fix dependencies in Compiler project

* LightPT - убрал CheckOutputNew
TasksArr.pas, TasksStr.pas - правки

* #3164

* Убрали зависимость компилятора от парсера Паскаля

---------

Co-authored-by: Mikhalkovich Stanislav <miks@math.sfedu.ru>
Co-authored-by: Sun Serega <sunserega2@gmail.com>
Co-authored-by: Ivan Bondarev <ibond84@googlemail.com>
2024-07-05 23:04:23 +03:00

106 lines
3.9 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit TasksMatr;
uses LightPT;
var AllTaskNames: array of string;
procedure CheckTaskT(name: string);
begin
ClearOutputListFromSpaces; // Это чтобы a.Print работал. По идее, надо писать всегда. Яне знаю задач, где пробелы в ответе
case name of
'ДвумерныеМассивы1': begin
// Есть проблема - если при выводе вещественные будут перемежаться с целыми, то ошибка!
ConvertStringsToNumbersInOutputList; // Это при выводе двумерных массивов возникают строки.
// Если строка не преобразуется в массив, то так и останется строкой
FilterOnlyNumbersAndBools; // после преобразования те строки, которые нельзя преобразовать в числа, отфильтровать
CheckOutput(5,4,5,5,2,4,3,3,5,3,5,4);
end;
'ДвумерныеМассивы2': begin
ConvertStringsToNumbersInOutputList;
FilterOnlyNumbersAndBools;
CheckOutput(5,4,5,5,2,4,3,3,5,3,5,4);
end;
'ДвумерныеМассивы3': begin
ConvertStringsToNumbersInOutputList;
CheckData(Input := cInt*12);
CheckOutput(InputList);
end;
'Заполн1_Формула','Заполн2_Matr': begin
ConvertStringsToNumbersInOutputList;
CheckData(Input := Empty);
var ob := new ObjectList;
for var i:=0 to 8 do
for var j:=0 to 8 do
ob.Add((i+1)*(j+1));
CheckOutput(ob);
end;
'Заполн3_Шахм': begin
ConvertStringsToNumbersInOutputList;
CheckData(Input := Empty);
var ob := new ObjectList;
for var i:=0 to 8 do
for var j:=0 to 8 do
if (i + j).IsEven then
ob.Add(1)
else ob.Add(0);
CheckOutput(ob);
end;
'SumInMatr': begin
ConvertStringsToNumbersInOutputList;
var n := 12;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
var res := IntArr(n).Sum;
CheckOutputAfterInitial(res);
end;
'MaxInMatr': begin
ConvertStringsToNumbersInOutputList;
var n := 12;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
var res := IntArr(n).Max;
CheckOutputAfterInitial(res);
end;
'СтрокаСтолбец1','СтрокаСтолбец3': begin
ConvertStringsToNumbersInOutputList;
var n := 54;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
var m := MatrByRow(6,9,IntArr(n));
CheckOutputAfterInitial(m.Row(2));
end;
'СтрокаСтолбец2','СтрокаСтолбец4': begin
ConvertStringsToNumbersInOutputList;
var n := 54;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
var m := MatrByRow(6,9,IntArr(n));
CheckOutputAfterInitial(m.Col(8));
end;
'MaxInRow': begin
ConvertStringsToNumbersInOutputList;
var n := 54;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
var m := MatrByRow(6,9,IntArr(n));
CheckOutputAfterInitial(m.Row(0).Max,m.Row(5).Min,m.Col(4).Average);
end;
'CountInRowsCols': begin
ConvertStringsToNumbersInOutputList;
var n := 54;
CheckData(InitialInput := cInt*n, InitialOutput := cInt*n);
GenerateTests(10, tInt(1,5) * n);
var m := MatrByRow(6,9,IntArr(n));
CheckOutputAfterInitial(m.Row(1).CountOf(2), m.Col(2).Count(x->x.IsOdd));
end; end;
end;
initialization
CheckTask := CheckTaskT;
AllTaskNames := Arr('ДвумерныеМассивы1','ДвумерныеМассивы2','ДвумерныеМассивы3',
'Заполн1_Формула','Заполн2_Matr','Заполн3_Шахм','SumInMatr','MaxInMatr',
'СтрокаСтолбец1','СтрокаСтолбец3','СтрокаСтолбец2','СтрокаСтолбец4','MaxInRow','CountInRowsCols' );
finalization
end.