diff --git a/bin/Lib/LightPT.pas b/bin/Lib/LightPT.pas index 0667da68a..951b7f523 100644 --- a/bin/Lib/LightPT.pas +++ b/bin/Lib/LightPT.pas @@ -193,20 +193,21 @@ function ToObjArray(a: sequence of boolean): array of object; { Основные процедуры для проверки правильности ввода-вывода } {=========================================================================} -// Самые часто используемые: CheckInput, CheckOutput, CheckOutputSeq +// Самые часто используемые: CheckOutput +// CheckInput заменено на CheckData -/// Проверить типы вводимых данных +/// Проверить типы вводимых данных. Пользуйтесь CheckData(Input := cInt * 2) procedure CheckInput(a: array of System.Type); -/// Проверить значения при выводе +/// Проверить значения при выводе. Основной способ проверки procedure CheckOutput(params arr: array of object); /// Проверить значения при выводе. Сообщения ColoredMessage гасить. Нужно для повторных вызовов CheckOutput procedure CheckOutputSilent(params arr: array of object); -/// Проверить значения при выводе +/// Проверить значения при выводе. Основной способ проверки procedure CheckOutput(a: ObjectList); /// Проверить значения при выводе. Сообщения ColoredMessage гасить. Нужно для повторных вызовов CheckOutput procedure CheckOutputSilent(a: ObjectList); -/// Проверить, что данные не вводились +/// Проверить, что данные не вводились. Пользуйтесь CheckData(Empty) procedure CheckInputIsEmpty; /// Проверить, что помимо начального ввода других данных не вводилось @@ -253,9 +254,11 @@ procedure CheckOutputSeqSilent(a: sequence of boolean); procedure CheckOutputSeqSilent(a: sequence of object); /// Проверить последовательность значений при выводе. Не выводить сообщения ColoredMessages procedure CheckOutputSeqSilent(a: sequence of word); + /// Проверить последовательность значений при выводе. Не выводить сообщения ColoredMessages procedure CheckOutputSeqSilent(a: ObjectList); + /// Проверить вывод в виде строки procedure CheckOutputString(str: string); @@ -271,17 +274,6 @@ function CompareArrValues(a,lst: array of object): boolean; /// Сравнить значения с выводом function CompareValuesWithOutput(params a: array of object): boolean; -// Для совместимости -procedure CheckOutputNew(params arr: array of object); -procedure CheckOutputSeqNew(a: sequence of integer); -procedure CheckOutputSeqNew(a: sequence of real); -procedure CheckOutputSeqNew(a: sequence of string); -procedure CheckOutputSeqNew(a: sequence of char); -procedure CheckOutputSeqNew(a: sequence of boolean); -procedure CheckOutputSeqNew(a: sequence of object); -procedure CheckOutputSeqNew(a: sequence of word); -procedure CheckOutputSeqNew(a: ObjectList); - {============================================================================================} { Подпрограммы для проверки начального ввода-вывода, представленного в заготовке задания } {============================================================================================} @@ -559,7 +551,7 @@ procedure GenerateTests(params a: array of (T1,T2,T3)); procedure ConvertStringsToNumbersInOutputList; /// Если в OutputList массивы, вытянуть их в единый список procedure FlattenOutput; -/// Очистить выходной список от пробелов +/// Очистить выходной список от пробелов, возникающих в методах расширения типа a.Print. Очень редко очищать не надо при решении задач на символы с пробелами procedure ClearOutputListFromSpaces; /// Отфильтровать в выходном списке только числа procedure FilterOnlyNumbers; @@ -2220,11 +2212,14 @@ procedure CheckOutputAfterInitialSeqSilent(seq: sequence of char); begin Silent procedure CheckOutputAfterInitialSeqSilent(seq: sequence of object); begin Silent := True; CheckOutputAfterInitialSeq(seq); Silent := False; end; procedure CheckOutputAfterInitialSeqSilent(seq: ObjectList); begin Silent := True; CheckOutputAfterInitialSeq(seq); Silent := False; end; +var OutputListIsClearedFromSpaces := False; procedure ClearOutputListFromSpaces; begin + if OutputListIsClearedFromSpaces then exit; OutputList := OutputList.Where(s -> (not (s is string)) or ((s as string) <> ' ')).ToList; OutputList := OutputList.Where(s -> (not (s is char)) or ((char(s)) <> ' ')).ToList; + OutputListIsClearedFromSpaces := True; end; procedure FilterOnlyNumbers; diff --git a/bin/Lib/TasksArr.pas b/bin/Lib/TasksArr.pas index 2c4fabae2..ad64067d5 100644 --- a/bin/Lib/TasksArr.pas +++ b/bin/Lib/TasksArr.pas @@ -387,7 +387,11 @@ begin CheckData(Input := Empty); CheckOutput(ArrGen(10,1,i->i*2).Sum); end; - + 'ЗаполнениеСумма3_add': begin + CheckData(Input := |cInt|*1); + var n := Int; + CheckOutput(ArrGen(n,i -> (i+1)*(i+1)).Sum); + end; // 'Arr_Transf1' 'Arr_Transf1a' 'Arr_Transf2' 'Arr_Transf3' 'Arr_Transf4' 'Arr_Transf5' 'Arr_Transf7' 'Arr_Transf8' 'Arr_Transf9'- задачник 'Arr_Transf6': begin FilterOnlyNumbersAndBools; diff --git a/bin/Lib/TasksStr.pas b/bin/Lib/TasksStr.pas index 78728f99c..c5ae14187 100644 --- a/bin/Lib/TasksStr.pas +++ b/bin/Lib/TasksStr.pas @@ -44,7 +44,7 @@ begin end; 'CharRange1': begin CheckData(Input := Empty); - CheckOutput('0'..'9', 'a'..'z', 'а'..'я'); + CheckOutput('0'..'9', 'a'..'z', 'А'..'Я'); end; 'CharRange2': begin CheckData(Input := |cChar|); @@ -283,7 +283,7 @@ begin end; 'StrSlice2': begin CheckData(Input := Empty); - CheckOutputSeq(Arr('клад зарыт на юго западе', 'зашифрованное сообщение')); + CheckOutput('клад зарыт на юго западе', 'зашифрованное сообщение'); end; 'StrSlice4': begin CheckData(Input := Empty); @@ -293,6 +293,14 @@ begin CheckData(Input := Empty); CheckOutput('оценка1', 'балл2', 'окно3'); end; + 'Str_Number01': begin + CheckData(Input := Empty); + CheckOutput('25', '476', '2296'); + end; + 'Str_Number02': begin + CheckData(Input := Empty); + CheckOutput(25,476,3.1415,2.8); + end; 'Str_Number03': begin CheckData(Input := Empty); CheckOutput(386); @@ -326,6 +334,6 @@ initialization 'Pos1','Pos2','Delete1','Delete2','Delete3','Insert1','Insert2', 'StrChange1','StrChange2','StrBorder0','StrBorder1', 'StrSlice1','StrSlice2','StrSlice4', - 'Str_Number0','Str_Number03','Str_Number04','Str_Number05','Str_Number06' ); + 'Str_Number0','Str_Number01','Str_Number02','Str_Number03','Str_Number04','Str_Number05','Str_Number06' ); finalization end. \ No newline at end of file