* 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>
106 lines
3.9 KiB
ObjectPascal
106 lines
3.9 KiB
ObjectPascal
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. |