diff --git a/Parsers/PascalABCParserNewSaushkin/PascalABCSaushkinParser.csproj b/Parsers/PascalABCParserNewSaushkin/PascalABCSaushkinParser.csproj index 4a1cec354..96c8fbb6c 100644 --- a/Parsers/PascalABCParserNewSaushkin/PascalABCSaushkinParser.csproj +++ b/Parsers/PascalABCParserNewSaushkin/PascalABCSaushkinParser.csproj @@ -41,7 +41,7 @@ true full false - ..\..\..\bin\ + ..\..\bin\ DEBUG;TRACE prompt 3 diff --git a/PascalABCLanguageInfo/PascalABCLanguageInfo.csproj b/PascalABCLanguageInfo/PascalABCLanguageInfo.csproj index 1bffd5e6c..c90b7f2fe 100644 --- a/PascalABCLanguageInfo/PascalABCLanguageInfo.csproj +++ b/PascalABCLanguageInfo/PascalABCLanguageInfo.csproj @@ -17,7 +17,7 @@ true full false - ..\..\..\bin\ + ..\bin\ DEBUG;TRACE prompt 4 diff --git a/SyntaxTreeConverters/SyntaxTreeConverters.csproj b/SyntaxTreeConverters/SyntaxTreeConverters.csproj index ed8a2aa88..48d4b5818 100644 --- a/SyntaxTreeConverters/SyntaxTreeConverters.csproj +++ b/SyntaxTreeConverters/SyntaxTreeConverters.csproj @@ -16,7 +16,7 @@ true full false - ..\..\..\..\bin\ + ..\bin\ DEBUG;TRACE prompt 4 diff --git a/bin/Lib/LightPT.pas b/bin/Lib/LightPT.pas index eb4b291f3..0667da68a 100644 --- a/bin/Lib/LightPT.pas +++ b/bin/Lib/LightPT.pas @@ -111,10 +111,42 @@ function MatrRandomReal(m: integer; n: integer): array [,] of real; /// Выводит приглашение к вводу и возвращает значение типа integer, введенное с клавиатуры function ReadInteger(prompt: string): integer; -/// Выводит приглашение к вводу и возвращает два значения типа integer, введенные с клавиатуры -function ReadInteger2(prompt: string): (integer, integer); /// Выводит приглашение к вводу и возвращает значение типа integer, введенное с клавиатуры function ReadlnInteger(prompt: string): integer; +/// Выводит приглашение к вводу и возвращает два значения типа integer, введенные с клавиатуры +function ReadInteger2(prompt: string): (integer, integer); +/// Выводит приглашение к вводу и возвращает два значения типа integer, введенные с клавиатуры +function ReadlnInteger2(prompt: string): (integer, integer); +/// Выводит приглашение к вводу и возвращает три значения типа integer, введенные с клавиатуры +function ReadInteger3(prompt: string): (integer, integer, integer); +/// Выводит приглашение к вводу и возвращает три значения типа integer, введенные с клавиатуры +function ReadlnInteger3(prompt: string): (integer, integer, integer); +/// Выводит приглашение к вводу и возвращает три значения типа integer, введенные с клавиатуры +function ReadInteger4(prompt: string): (integer, integer, integer, integer); +/// Выводит приглашение к вводу и возвращает три значения типа integer, введенные с клавиатуры +function ReadlnInteger4(prompt: string): (integer, integer, integer, integer); + +/// Выводит приглашение к вводу и возвращает значение типа real, введенное с клавиатуры +function ReadReal(prompt: string): real; +/// Выводит приглашение к вводу и возвращает значение типа real, введенное с клавиатуры +function ReadlnReal(prompt: string): real; +/// Выводит приглашение к вводу и возвращает два значения типа real, введенные с клавиатуры +function ReadReal2(prompt: string): (real, real); +/// Выводит приглашение к вводу и возвращает два значения типа real, введенные с клавиатуры +function ReadlnReal2(prompt: string): (real, real); +/// Выводит приглашение к вводу и возвращает три значения типа real, введенные с клавиатуры +function ReadReal3(prompt: string): (real, real, real); +/// Выводит приглашение к вводу и возвращает три значения типа real, введенные с клавиатуры +function ReadlnReal3(prompt: string): (real, real, real); +/// Выводит приглашение к вводу и возвращает три значения типа real, введенные с клавиатуры +function ReadReal4(prompt: string): (real, real, real, real); +/// Выводит приглашение к вводу и возвращает три значения типа real, введенные с клавиатуры +function ReadlnReal4(prompt: string): (real, real, real, real); + +/// Выводит приглашение к вводу и возвращает значение типа char, введенное с клавиатуры +function ReadChar(prompt: string): char; +/// Выводит приглашение к вводу и возвращает значение типа char, введенное с клавиатуры +function ReadlnChar(prompt: string): char; /// Выводит приглашение к вводу и возвращает значение типа string, введенное с клавиатуры function ReadString(prompt: string): string; @@ -1957,46 +1989,131 @@ begin InputList.Add(x); end; -/// Возвращает двумерный массив размера m x n, заполненный случайными вещественными значениями function MatrRandomReal(m: integer; n: integer): array [,] of real := MatrRandomReal(m,n,0,10); -/// Выводит приглашение к вводу и возвращает значение типа integer, введенное с клавиатуры +procedure ReadRemainderAction; +begin + if not IsPT then + begin + OutputList.RemoveAt(OutputList.Count - 1); + OutputList.RemoveAt(OutputList.Count - 1); + CreateNewLineBeforeMessage := False; + end; +end; + function ReadInteger(prompt: string): integer; begin Result := PABCSystem.ReadInteger(prompt); - if IsPT then exit; - OutputList.RemoveAt(OutputList.Count - 1); - OutputList.RemoveAt(OutputList.Count - 1); - CreateNewLineBeforeMessage := False; + ReadRemainderAction; end; -/// Выводит приглашение к вводу и возвращает значение типа integer, введенное с клавиатуры function ReadlnInteger(prompt: string): integer; begin Result := PABCSystem.ReadlnInteger(prompt); - if IsPT then exit; - OutputList.RemoveAt(OutputList.Count - 1); - OutputList.RemoveAt(OutputList.Count - 1); - CreateNewLineBeforeMessage := False; + ReadRemainderAction; end; -/// Выводит приглашение к вводу и возвращает два значения типа integer, введенные с клавиатуры function ReadInteger2(prompt: string): (integer, integer); begin Result := PABCSystem.ReadInteger2(prompt); - if IsPT then exit; - OutputList.RemoveAt(OutputList.Count - 1); - OutputList.RemoveAt(OutputList.Count - 1); - CreateNewLineBeforeMessage := False; + ReadRemainderAction; end; +function ReadlnInteger2(prompt: string): (integer,integer); +begin + Result := PABCSystem.ReadlnInteger2(prompt); + ReadRemainderAction; +end; + +function ReadInteger3(prompt: string): (integer,integer,integer); +begin + Result := PABCSystem.ReadInteger3(prompt); + ReadRemainderAction; +end; + +function ReadlnInteger3(prompt: string): (integer,integer,integer); +begin + Result := PABCSystem.ReadlnInteger3(prompt); + ReadRemainderAction; +end; + +function ReadInteger4(prompt: string): (integer, integer,integer,integer); +begin + Result := PABCSystem.ReadInteger4(prompt); + ReadRemainderAction; +end; + +function ReadlnInteger4(prompt: string): (integer,integer,integer,integer); +begin + Result := PABCSystem.ReadlnInteger4(prompt); + ReadRemainderAction; +end; + +function ReadReal(prompt: string): real; +begin + Result := PABCSystem.ReadReal(prompt); + ReadRemainderAction; +end; + +function ReadlnReal(prompt: string): real; +begin + Result := PABCSystem.ReadlnReal(prompt); + ReadRemainderAction; +end; + +function ReadReal2(prompt: string): (real, real); +begin + Result := PABCSystem.ReadReal2(prompt); + ReadRemainderAction; +end; + +function ReadlnReal2(prompt: string): (real, real); +begin + Result := PABCSystem.ReadlnReal2(prompt); + ReadRemainderAction; +end; + +function ReadReal3(prompt: string): (real, real, real); +begin + Result := PABCSystem.ReadReal3(prompt); + ReadRemainderAction; +end; + +function ReadlnReal3(prompt: string): (real, real, real); +begin + Result := PABCSystem.ReadlnReal3(prompt); + ReadRemainderAction; +end; + +function ReadReal4(prompt: string): (real, real, real, real); +begin + Result := PABCSystem.ReadReal4(prompt); + ReadRemainderAction; +end; + +function ReadlnReal4(prompt: string): (real, real, real, real); +begin + Result := PABCSystem.ReadlnReal4(prompt); + ReadRemainderAction; +end; + +function ReadChar(prompt: string): char; +begin + Result := PABCSystem.ReadChar(prompt); + ReadRemainderAction; +end; + +function ReadlnChar(prompt: string): char; +begin + Result := PABCSystem.ReadlnChar(prompt); + ReadRemainderAction; +end; + + function ReadString(prompt: string): string; begin Result := PABCSystem.ReadString(prompt); - if IsPT then exit; - OutputList.RemoveAt(OutputList.Count - 1); - OutputList.RemoveAt(OutputList.Count - 1); - CreateNewLineBeforeMessage := False; + ReadRemainderAction; end; function ReadlnString(prompt: string) := ReadString(prompt); diff --git a/bin/Lib/Tasks1Loops.pas b/bin/Lib/Tasks1Loops.pas index 9af385256..4689da079 100644 --- a/bin/Lib/Tasks1Loops.pas +++ b/bin/Lib/Tasks1Loops.pas @@ -337,7 +337,14 @@ begin FilterOnlyNumbersAndBools; var N := Int(0); CheckData(Input := |cInt|*(N+1)); - GenerateTests(10,tInt(1,10)*n); + + TestCount := 5; + GenerateTestData := tnum -> begin + var N := Random(5, 10); + var a := ArrRandomInteger(N,1,10); + InputList.AddTestData(|N|+a); + end; + var s := 0; for var i:=1 to N do if Int(i).IsEven then