Обновлён задачник

This commit is contained in:
miks1965 2015-08-02 22:37:43 +03:00
parent 819a96ac95
commit 7605c5d23b
76 changed files with 2871 additions and 16 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "2";
public const string Minor = "2";
public const string Build = "0";
public const string Revision = "993";
public const string Revision = "995";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=2
%REVISION%=993
%REVISION%=995
%MAJOR%=2
%COREVERSION%=0

View file

@ -1 +1 @@
=|||%f|uses%# PT4Exam;%#%#begin%# Task('%f');%#%#end.
=|||%f|%x<0_Exam>%X<0_Exam>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View file

@ -0,0 +1,84 @@
[=Pascal][=PascalABC][=CPP][=Python][0]
[~Îáðàáîòêà ñòàòèñòè÷åñêèõ äàííûõ]
[text]
Ïðè ðåøåíèè çàäà÷ äàííîé ïîäãðóïïû íåîáõîäèìî èñïîëüçîâàòü
çàãîòîâêó, âêëþ÷àþùóþ îïèñàíèÿ ïåðåìåííûõ è ââîä
èñõîäíûõ äàííûõ:
[code]
[=Pascal][=PascalABC]
const
N = 15;
var
a: array[1..N] of integer;
i, j, k: integer;
begin
for i := 1 to N do
read(a[i]);
end.
[=CPP]
#define N 15
int a[N];
int i, j, k;
for (i = 0; i < N; i++)
cin >> a[i];
[=Python]
N = 15
i = None
j = None
k = None
a = [int(i) for i in input().split()]
[=Pascal][=PascalABC][=CPP][=Python]
[text]
Òðåáóåòñÿ äîïîëíèòü ïðîãðàììó-çàãîòîâêó àëãîðèòìîì
ðåøåíèÿ çàäà÷è, èñïîëüçóÿ òîëüêî òå ïåðåìåííûå, êîòîðûå óêàçàíû â òåêñòå
çàãîòîâêè (âñå ïåðåìåííûå ìîæíî íå èñïîëüçîâàòü).
[123-130]
[-H]
[text]
Ïðåäëàãàåìàÿ çàãîòîâêà ñîäåðæèò îïèñàíèÿ ïåðåìåííûõ è ââîä
èñõîäíûõ äàííûõ. Òðåáóåòñÿ äîïîëíèòü ïðîãðàììó-çàãîòîâêó àëãîðèòìîì
ðåøåíèÿ çàäà÷è, èñïîëüçóÿ òîëüêî òå ïåðåìåííûå, êîòîðûå óêàçàíû â òåêñòå
çàãîòîâêè (âñå ïåðåìåííûå ìîæíî íå èñïîëüçîâàòü).
[code]
[=Pascal][=PascalABC]
const
N = 15;
var
a: array[1..N] of integer;
i, j, k: integer;
begin
[-W]
Task('%{task}');
[+W]
for i := 1 to N do
read(a[i]);
end.
[=CPP]
[-W]
void Solve()
{
Task("%{task}");
[+W]
#define N 15
int a[N];
int i, j, k;
for (i = 0; i < N; i++)
cin >> a[i];
[-W]
}
[=Python]
def solve():
task("%{task}")
[+W]
N = 15
i = None
j = None
k = None
a = [int(i) for i in input().split()]

View file

@ -0,0 +1,786 @@
[=Pascal][=PascalABC][1-14]
var x, y: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(x, y);
[1]
if x*x + y*y >= 4 then
if x >= -2 then
if y <= -x then
[2]
if x*x + y*y >= 4 then
if y >= -2 then
if y <= x then
[3]
if y >= x then
if y >= 0 then
if y <= 2 - x*x then
[4]
if y <= 2*x*x then
if x >= -1 then
if y >= 1 then
[5]
if y <= 1 then
if y >= 0 then
if x >= -1 then
if y >= x*x then
[6]
if y <= x then
if y <= -x then
if y >= x*x - 2 then
[7]
if y <= 1 - x then
if y >= 0 then
if x >= 0 then
if x*x + y*y <= 1 then
[8]
if y >= -1 then
if y <= x then
if y <= 0 then
if x*x + y*y <= 1 then
[9]
if y <= 1 then
if y >= x then
if x >= -1 then
if x*x + y*y <= 1 then
[10]
if y <= x + 2 then
if x <= 0 then
if x*x + y*y <= 25 then
[11]
if y >= x*x - 6 then
begin
if x*x + y*y <= 16 then
writeln('Ïðèíàäëåæèò')
end
else
if x >= 0 then
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[12]
if y <= sin(x) then
if x <= 3.14/2 then
if y >= 0 then
[13]
if y <= 1 then
if x >= 0 then
if y >= sin(x) then
[14]
if y <= 0 then
if y >= -1 then
if y <= cos(x) then
[1-4][6][10][12-14]
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[5][7-9]
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[1-14]
writeln('Ïðîãðàììà çàâåðøåíà');
end.
[15]
var c: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(c);
if c > 0 then
write('íåò ðåøåíèé')
else
write('x = ', sqrt(-c):0:2, ' èëè x = ', -sqrt(-c):0:2);
[16-21]
var a, b: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(a, b);
[16]
if a = 0 then
if b = 0 then
write('ëþáîå ÷èñëî')
else
write('íåò ðåøåíèé')
else
if b = 0 then
write('x = 0.00')
else
write('x = ', b/a:0:2,' èëè x = ', -b/a:0:2);
[17]
if b = 0 then
write('x = 0.00')
else
if a = 0 then
write('íåò ðåøåíèé')
else
write('x = ', -b/a:0:2);
end.
[18]
if a = 0 then
if b > 0 then
write('ëþáîå ÷èñëî')
else
write('íåò ðåøåíèé')
else
write('x > ', -b/a:0:2);
[19]
if b = 0 then
write('x > 0.00 èëè x < 0.00')
else
if a > 0 then
write('x > 0.00 èëè x < ', -b:0:2)
else
write(-b:0:2, ' < x < 0.00') ;
[20]
if a = 0 then
if b > 0 then
write('íåò ðåøåíèé')
else
write('x > 0.00 èëè x < 0.00')
else
write(-a:0:2,' < x < 0.00');
[21]
if b > 0 then
write('x > ', a:0:2,' èëè x < 0.00')
else
if a > 0 then
write('0.00 < x < ', a:0:2)
else
write(a:0:2, ' < x < 0.00');
[15-21]
end.
[22]
var N: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
while N > 10 do
begin
N := N mod 10;
end;
write(N);
end.
[23]
var N: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
while N > 10 do
begin
N := N mod 100;
end;
write(N);
end.
[24]
var N, digit, maxdigit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
maxdigit := 10;
while N >= 10 do
begin
digit := N mod 10;
if maxdigit < digit then
maxdigit := digit;
N := N div 10;
end;
write(maxdigit);
end.
[25]
var N, p, digit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
p := N mod 10;
while N >= 10 do
begin
digit := N mod 10;
p := p * digit;
N := N div 10;
end;
writeln(p);
end.
[26]
var N, s: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
s := 1;
while N > 1 do
begin
if N mod 10 <> 0 then
s := N mod 10;
N := N div 10;
end;
write(s);
end.
[27]
var N, digit, maxdigit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
maxdigit := N mod 10;
while N > 0 do
begin
digit := N mod 10;
if digit mod 3 = 0 then
if digit > maxdigit then
maxdigit := digit;
N := N div 10;
end;
if maxdigit = 0 then
writeln('NO')
else
writeln(maxDigit)
end.
[28]
var N, cnt: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
cnt := 0;
while N > 0 do
begin
cnt := cnt + N mod 2;
N := N div 10;
end;
writeln(cnt)
end.
[29]
var N, R, T, d: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
R := 0;
T := 0;
while N > 0 do
begin
d := N mod 10;
if d <> 2 then
begin
R := R + d * T;
T := T + 1;
end;
N := N div 10;
end;
writeln(T);
end.
[30]
var N, m, d: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
m := 0;
while N > 0 do
begin
d := N mod 10;
if d > 1 then
begin
m := d + m;
end;
N := N div 10;
end;
write(m);
end.
[-----------------------------------------------]
[=CPP][12-15]
[-HW]
#include <cmath>
using namespace std;
[1-30]
void Solve()
{
Task("%{task}");
[+HW]
[1-14]
double x, y;
cin >> x >> y;
[1]
if (x*x + y*y >= 4)
if (x >= -2)
if (y <= -x)
[2]
if (x*x + y*y >= 4)
if (y >= -2)
if (y <= x)
[3]
if (y >= x)
if (y >= 0)
if (y <= 2 - x*x)
[4]
if (y <= 2*x*x)
if (x >= -1)
if (y >= 1)
[5]
if (y <= 1)
if (y >= 0)
if (x >= -1)
if (y >= x*x)
[6]
if (y <= x)
if (y <= -x)
if (y >= x*x - 2)
[7]
if (y <= 1 - x)
if (y >= 0)
if (x >= 0)
if (x*x + y*y <= 1)
[8]
if (y >= -1)
if (y <= x)
if (y <= 0)
if (x*x + y*y <= 1)
[9]
if (y <= 1)
if (y >= x)
if (x >= -1)
if (x*x + y*y <= 1)
[10]
if (y <= x + 2)
if (x <= 0)
if (x*x + y*y <= 25)
[11]
if (y >= x*x - 6)
{
if (x*x + y*y <= 16)
cout << "Ïðèíàäëåæèò" << endl;
}
else
if (x >= 0)
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[12]
if (y <= sin(x))
if (x <= 3.14/2)
if (y >= 0)
[13]
if (y <= 1)
if (x >= 0)
if (y >= sin(x))
[14]
if (y <= 0)
if (y >= -1)
if (y <= cos(x))
[1-4][6][10][12-14]
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[5][7-9]
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[1-14]
cout << "Ïðîãðàììà çàâåðøåíà";
[15-21]
cout << fixed << setprecision(2);
[15]
double c;
cin >> c;
if (c > 0)
cout << "íåò ðåøåíèé";
else
cout << "x = " << sqrt(-c):0:2, ' èëè x = ', -sqrt(-c):0:2);
[16-21]
double a, b;
cin >> a >> b;
[16]
if (a == 0)
if (b == 0)
cout << "ëþáîå ÷èñëî";
else
cout << "íåò ðåøåíèé";
else
if (b == 0)
cout << "x = 0.00";
else
cout << "x = " << b/a << " èëè x = " << -b/a;
[17]
if (b == 0)
cout << "x = 0.00";
else
if (a == 0)
cout << "íåò ðåøåíèé";
else
cout << "x = " << -b/a;
[18]
if (a == 0)
if (b > 0)
cout << "ëþáîå ÷èñëî";
else
cout << "íåò ðåøåíèé";
else
cout << "x > " << -b/a;
[19]
if (b == 0)
cout << "x > 0.00 èëè x < 0.00";
else
if (a > 0)
cout << "x > 0.00 èëè x < " << -b;
else
cout << -b << " < x < 0.00";
[20]
if (a == 0)
if (b > 0)
cout << "íåò ðåøåíèé";
else
cout << "x > 0.00 èëè x < 0.00";
else
cout << -a << " < x < 0.00";
[21]
if (b > 0)
cout << "x > " << a << " èëè x < 0.00";
else
if (a > 0)
cout << "0.00 < x < " << a;
else
cout << a << " < x < 0.00";
[22]
int N;
cin >> N;
while (N > 10)
{
N = N % 10;
}
cout << N;
[23]
int N;
cin >> N;
while (N > 10)
{
N = N % 100;
}
cout << N;
[24]
int N, digit, maxdigit;
cin >> N;
maxdigit = 10;
while (N >= 10)
{
digit = N % 10;
if (maxdigit < digit)
maxdigit = digit;
N = N / 10;
}
cout << maxdigit;
[25]
int N, digit, p;
cin >> N;
p := N % 10;
while (N >= 10)
{
digit = N % 10;
p = p * digit;
N = N / 10;
}
cout << p;
[26]
int N, s;
cin >> N;
s = 1;
while (N > 1)
{
if (N % 10 != 0)
s = N % 10;
N = N / 10;
}
cout << s;
[27]
int N, digit, maxdigit;
cin >> N;
maxdigit = N % 10;
while (N > 0)
{
digit = N % 10;
if (digit % 3 == 0)
if (digit > maxdigit)
maxdigit = digit;
N = N / 10;
}
if (maxdigit == 0)
cout << "NO";
else
cout << maxDigit;
[28]
int N, cnt;
cin >> N;
cnt = 0;
while (N > 0)
{
cnt = cnt + N % 2;
N = N / 10;
}
cout << cnt;
[29]
int N, R, T, d;
cin >> N;
R = 0;
T = 0;
while (N > 0)
{
d = N % 10;
if (d != 2)
{
R = R + d * T;
T++;
}
N = N / 10;
}
cout << T;
[30]
int N, m, d;
cin >> N;
m = 0;
while (N > 0)
{
d = N % 10;
if (d > 1)
{
m = d + m;
}
N = N / 10;
}
cout << m;
[1-30]
[-HW]
}
[+HW]
[-----------------------------------------------]
[=Python][12-15]
[-HW]
import math
[1-30]
def solve():
task("%{task}")
[+HW]
[1-14]
x = float(input())
y = float(input())
[1]
if x*x + y*y >= 4:
if x >= -2:
if (y <= -x):
[2]
if x*x + y*y >= 4:
if y >= -2:
if y <= x:
[3]
if y >= x:
if y >= 0:
if y <= 2 - x*x:
[4]
if y <= 2*x*x:
if x >= -1:
if y >= 1:
[5]
if y <= 1:
if y >= 0:
if x >= -1:
if y >= x*x:
[6]
if y <= x:
if y <= -x:
if y >= x*x - 2:
[7]
if y <= 1 - x:
if y >= 0:
if x >= 0:
if x*x + y*y <= 1:
[8]
if y >= -1:
if y <= x:
if y <= 0:
if x*x + y*y <= 1:
[9]
if y <= 1:
if y >= x:
if x >= -1:
if x*x + y*y <= 1:
[10]
if y <= x + 2:
if x <= 0:
if x*x + y*y <= 25:
[11]
if y >= x*x - 6:
if x*x + y*y <= 16:
print("Ïðèíàäëåæèò")
elif x >= 0:
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[12]
if y <= math.sin(x):
if x <= 3.14/2:
if y >= 0:
[13]
if y <= 1:
if x >= 0:
if y >= math.sin(x):
[14]
if y <= 0:
if y >= -1:
if y <= math.cos(x):
[1-4][6][10][12-14]
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[5][7-9]
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[1-14]
print("Ïðîãðàììà çàâåðøåíà")
[15]
c = float(input())
if c > 0:
print("íåò ðåøåíèé")
else:
print("x = %0.2f èëè x = %0.2f" % (math.sqrt(-c), -math.sqrt(-c)))
[16-21]
a = float(input())
b = float(input())
[16]
if a == 0:
if b == 0:
print("ëþáîå ÷èñëî")
else:
print("íåò ðåøåíèé")
else:
if b == 0:
print("x = 0.00")
else
print("x = %0.2f èëè x = %0.2f" % (b/a, -b/a))
[17]
if b == 0:
print("x = 0.00")
else:
if a == 0:
print("íåò ðåøåíèé")
else:
print("x = %0.2f" % -b/a)
[18]
if a == 0:
if b > 0:
print("ëþáîå ÷èñëî")
else:
print("íåò ðåøåíèé")
else:
print("x = %0.2f" % -b/a)
[19]
if b == 0:
print("x > 0.00 èëè x < 0.00")
else:
if a > 0:
print("x > 0.00 èëè x < %0.2f" % -b)
else:
print("%0.2f < x < 0.00" % -b)
[20]
if a == 0:
if b > 0:
print("íåò ðåøåíèé")
else:
print("x > 0.00 èëè x < 0.00")
else:
print("%0.2f < x < 0.00" % -a)
[21]
if b > 0:
print("x > %0.2f èëè x < 0.00" % a)
else:
if a > 0:
print("0.00 < x < %0.2f" % a)
else:
print("%0.2f < x < 0.00" % a)
[22-30]
N = int(input())
[22]
while N > 10:
N = N % 10
print(N)
[23]
while N > 10:
N = N % 100
print(N)
[24]
maxdigit = 10
while N >= 10:
digit = N % 10
if maxdigit < digit:
maxdigit = digit
N = N // 10
}
print(maxdigit)
[25]
p = N % 10
while N >= 10:
digit = N % 10
p = p * digit
N = N // 10
print(p)
[26]
s = 1
while N > 1:
if N % 10 != 0:
s = N % 10
N = N // 10
print(s)
[27]
maxdigit = N % 10
while N > 0:
digit = N % 10
if digit % 3 == 0:
if digit > maxdigit:
maxdigit = digit
N = N // 10
if maxdigit == 0:
print("NO")
else:
print(maxDigit)
[28]
cnt = 0
while N > 0:
cnt = cnt + N % 2
N = N // 10
print(cnt)
[29]
R = 0
T = 0
while N > 0:
d = N % 10
if d != 2:
R = R + d * T
T += 1
N = N // 10
print(T)
[30]
m = 0
while N > 0:
d = N % 10
if d > 1:
m = d + m
N = N // 10
print(m)

View file

@ -0,0 +1,104 @@
[4]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.1. Поэлементные операции
// LinqBegin4: правильное решение - 1 вариант (с.126)
begin
Task('LinqBegin4');
var c := ReadChar;
var a := ReadSeqString;
try
var r := a.SingleOrDefault(e -> (e.Length <> 0) and (e[e.Length] = c));
write(r <> nil ? r : '');
except
write('Error');
end;
end.
[15]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.2. Операция агрегирования и генерирование последовательностей
// LinqBegin15: правильное решение - 2 вариант (с.134, внизу)
begin
Task('LinqBegin15');
var n := ReadInteger;
var f := Range(1, n)
.Aggregate(1.0, (a, e) -> a * e);
write(f);
end.
[31]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.3. Фильтрация, сортировка, теоретико-множественные операции
// LinqBegin31: правильное решение - 1 вариант (с.145)
begin
Task('LinqBegin31');
var k := ReadInteger;
var a := ReadSeqString;
var b := a.Take(k).Show('B');
var c := a.Reverse()
.TakeWhile(e ->not char.IsDigit(e[e.Length])).Show('C');
b.Intersect(c).Show('D')
.OrderBy(e -> e.Length).ThenBy(e -> e)
.Write;
end.
[43]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.4. Проецирование
// LinqBegin43: правильное решение с отладочной печатью (с.151, внизу)
begin
Task('LinqBegin43');
var k := ReadInteger;
ReadSeqString
.SelectMany((e, n) ->
e.Where((c, i) -> i mod 2 = (n < k ? 0 : 1)).Show())
.Reverse
.Write;
end.
[52]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.5. Объединение
// LinqBegin52: правильное решение - 1 вариант (с.159, середина)
begin
Task('LinqBegin52');
var a := ReadSeqString()
.Where(e -> char.IsDigit(e[e.Length])).Show('A');
var b := ReadSeqString()
.Where(e -> char.IsDigit(e[e.Length])).Show('B');
a.SelectMany(e1 -> b.Select(e2 -> e1 + '=' + e2))
.OrderBy(e -> e.Split('=')[0])
.ThenByDescending(e -> e.Split('=')[1])
.Write;
end.
[54]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.5. Объединение
// LinqBegin54: правильное решение (с.170, середина)
begin
Task('LinqBegin54');
ReadSeqString().GroupJoin(ReadSeqString(),
e -> e[1], e -> e[1],
(e1, ee2) -> ee2.DefaultIfEmpty('')
.Select(e -> e1 + '.' + e))
.SelectMany(e -> e).OrderBy(e -> e).Show()
.Write;
end.
[60]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.6. Группировка
// LinqBegin60: правильное решение - 1 вариант (с.175, внизу)
begin
// ===ОШИБКА КОМПИЛЯЦИИ===
Task('LinqBegin60');
ReadSeqString().GroupBy(e -> e[1])
.OrderByDescending(e -> e.Sum(s -> s.Length)).ThenBy(e -> e.Key)
.Select(e -> e.Sum(s -> s.Length) + '-' + e.Key)
.Write;
end.

View file

@ -0,0 +1,157 @@
[4]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.1. Ïðîñòîå çàäàíèå íà îáðàáîòêó îòäåëüíîé ïîñëåäîâàòåëüíîñòè
// LinqObj4: ïðàâèëüíîå ðåøåíèå (ñ.191, âíèçó)
begin
// === ÎØÈÁÊÀ ÊÎÌÏÈËßÖÛÛ ===
Task('LinqObj4');
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class (
hours := StrToInt(s[2]),
code := StrToInt(s[3])
);
end)
.GroupBy(e -> e.code,
(k, ee) -> new class(k, sum := ee.Sum(c -> c.hours) ))
.OrderByDescending(e -> e.sum).ThenBy(e -> e.k)
.Select(e -> IntToStr(e.sum) + ' ' + IntToStr(e.k));
WriteAllLines(ReadString, r);
end.
[41]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.2. Áîëåå ñëîæíûå çàäàíèÿ íà îáðàáîòêó îòäåëüíûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj41: ïðàâèëüíîå ðåøåíèå (ñ.196)
begin
// === ÎØÈÁÊÀ ÊÎÌÏÈËßÖÛÛ ===
Task('LinqObj41');
var m := ReadInteger;
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class (
brand := StrToInt(s[0]),
street := s[1],
price := StrToInt(s[3])
);
end)
.Where(e -> e.brand = m)
.GroupBy(e -> e.street,
(k, ee) -> new class ( street := k, max := ee.Max(e -> e.price) ))
.OrderBy(e -> e.max).ThenBy(e -> e.street)
.Select(e -> IntToStr(e.max) + ' ' + IntToStr(e.street))
.DefaultIfEmpty('Íåò');
WriteAllLines(ReadString, r);
end.
[61]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.2. Áîëåå ñëîæíûå çàäàíèÿ íà îáðàáîòêó îòäåëüíûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj61: ïðàâèëüíîå ðåøåíèå (ñ.199-200)
begin
// === ÎØÈÁÊÀ ÂÐÅÌÅÍÈ ÂÛÏÎËÍÅÍÈß ===
Task('LinqObj61');
var subjects : array of string := ( 'Àëãåáðà', 'Ãåîìåòðèÿ', 'Èíôîðìàòèêà' );
var culture := new System.Globalization.CultureInfo('en-US');
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
name := s[0] + ' ' + s[1],
subj := s[3],
mark := StrToInt(s[4])
);
end)
.GroupBy(e -> e.name, (k, ee) -> new class
(
name := k,
avrs := subjects
.GroupJoin(ee, s -> s, e -> e.subj,
(s1, ee1) -> ee1.Select(e1 -> e1.mark)
.DefaultIfEmpty().Average())
))
.OrderBy(e -> e.name)
.Select(e -> e.name + e.avrs.Aggregate('',
(a, d) -> a + ' ' + d.ToString('f2', culture)));
WriteAllLines(ReadString, r);
end.
[98]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.3. Îáðàáîòêà âçàèìîñâÿçàííûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj98: ïðàâèëüíîå ðåøåíèå (ñ.215, ââåðõó)
begin
Task('LinqObj98');
var B := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
art := s[1],
cat := s[2]
);
end);
var C := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
discount := StrToInt(s[0]),
code := s[1],
shop := s[2]
);
end);
var D := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
art := s[0],
price := StrToInt(s[1]),
shop := s[2]
);
end);
var E := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
code := s[0],
art := s[1],
shop := s[2]
);
end);
var discounts := E.Join(B, e1 -> e1.art, e2 -> e2.art,
(e1, e2) -> new class ( e1.code, e1.art, e1.shop, e2.cat ))
.Join(D, e1 -> e1.art + e1.shop, e2 -> e2.art + e2.shop,
(e1, e2) -> new class ( e1.code, e1.shop, e1.cat, e2.price ))
.GroupJoin(C, e1 -> e1.code + e1.shop, e2 -> e2.code + e2.shop,
(e1, ee2) -> new class
(
cat_shop := e1.cat + ' ' + e1.shop,
discount := ee2.Select(e -> e.discount)
.FirstOrDefault() * e1.price div 100
));
var cats := B.GroupBy(e -> e.cat, (k, ee) -> k);
var shops := E.GroupBy(e -> e.shop, (k, ee) -> k);
var r := cats
.SelectMany(e1 -> shops.Select(e2 -> e1 + ' ' + e2))
.OrderBy(e -> e)
.GroupJoin(discounts, e1 -> e1, e2 -> e2.cat_shop,
(e1, ee2) -> e1 + ' ' +
IntToStr(ee2.Select(e -> e.discount).DefaultIfEmpty(-1).Sum()));
WriteAllLines(ReadString, r);
end.

View file

@ -0,0 +1,185 @@
[10]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.1. Ñîçäàíèå XML-äîêóìåíòà
// LinqXml10: ïðàâèëüíîå ðåøåíèå (ñ.227)
begin
Task('LinqXml10');
var a := ReadAllLines(ReadString);
var d := new XDocument(
new XDeclaration(nil, 'windows-1251', nil),
new XElement('root',
a.Select(e -> e.StartsWith('data:') ?
new XProcessingInstruction('instr', e.Substring(5)) as XNode:
new XElement('line', e) as XNode)));
d.Save(ReadString);
end.
[20]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.2. Àíàëèç ñîäåðæèìîãî XML-äîêóìåíòà
// LinqXml20: ïðàâèëüíîå ðåøåíèå (ñ.235-236)
begin
Task('LinqXml20');
var d := XDocument.Load(ReadString);
foreach var e1 in d.Root.Elements do
begin
write(e1.Name.LocalName);
var max := e1.Descendants
.Select(e -> e.Attributes.Count())
.DefaultIfEmpty(-1).Max;
write(max);
var a := e1.Descendants
.Where(e -> e.Attributes.Count() = max)
.Select(e -> e.Name.LocalName)
.OrderBy(e -> e)
.DefaultIfEmpty('no child');
foreach var e in a do
write(e);
end
end.
[28]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml28: ïðàâèëüíîå ðåøåíèå (ñ.238)
begin
Task('LinqXml28');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.Elements().Elements().Elements()
.Nodes().OfType&<XText>().Remove();
d.Save(name);
end.
[32]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml32: ïðàâèëüíîå ðåøåíèå (ñ.242)
begin
Task('LinqXml32');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
foreach var e in d.Root.Elements().Elements(s1) do
e.AddBeforeSelf(new XElement(s2,
e.LastAttribute, e.Elements().FirstOrDefault()));
d.Save(name);
end.
[37]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml37: ðåøåíèå ñ èñïîëüçîâàíèåì âûðàæåíèÿ çàïðîñà (ñ.244)
begin
Task('LinqXml37');
var name := ReadString;
var d := XDocument.Load(name);
var a := d.Root.Elements().Elements()
.Where(e -> not e.IsEmpty);
foreach var e in a do
e.Value := e.Value;
d.Save(name);
end.
[50]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.4. Ïðåîáðàçîâàíèå òèïîâ ïðè îáðàáîòêå XML-äîêóìåíòà
// LinqXml50: ïðàâèëüíîå ðåøåíèå (ñ.254)
begin
Task('LinqXml50');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.AddFirst(new XElement('total-time',
d.Root.Elements()
.Select(e ->
begin
var a := e.Attribute('time');
if a = nil then
result := new TimeSpan(24, 0, 0)
else
result := TimeSpan(a);
end)
.Aggregate(TimeSpan.Zero, (a, e) -> a + e)));
d.Save(name);
end.
[57]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.5. Ðàáîòà ñ ïðîñòðàíñòâàìè èìåí XML-äîêóìåíòà
// LinqXml57: ïðàâèëüíîå ðåøåíèå (ñ.263)
begin
Task('LinqXml57');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
d.Root.Add(new XAttribute(XNamespace.Xmlns + 'x', s1),
new XAttribute(XNamespace.Xmlns + 'y', s2));
var ns1 := XNamespace(s1);
var ns2 := XNamespace(s2);
foreach var e in d.Descendants() do
begin
var ns := e.Ancestors().Count() <= 1 ? ns1 : ns2;
e.Name := ns + e.Name.LocalName;
end;
d.Descendants().Attributes('xmlns').Remove();
d.Save(name);
end.
[61]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.6. Äîïîëíèòåëüíûå çàäàíèÿ íà îáðàáîòêó XML-äîêóìåíòîâ
// LinqXml61: ïðàâèëüíîå ðåøåíèå (ñ.268, ââåðõó)
begin
Task('LinqXml61');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
d.Root.ReplaceNodes(d.Root.Elements()
.Select(e -> new XElement(ns + 'time',
new XAttribute('id', e.Element(ns + 'id').Value),
new XAttribute('year',
(DateTime(e.Element(ns + 'date'))).Year),
new XAttribute('month',
(DateTime(e.Element(ns + 'date'))).Month),
e.Element(ns + 'time').Value)));
d.Save(name);
end.
[82]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.6. Äîïîëíèòåëüíûå çàäàíèÿ íà îáðàáîòêó XML-äîêóìåíòîâ
// LinqXml82: ïðàâèëüíîå ðåøåíèå (ñ.276)
begin
// ÎØÈÁÊÀ ÊÎÌÏÈËßÖÈÈ
Task('LinqXml82');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
var a := d.Root.Elements()
.Select(e ->
begin
var s := e.Name.LocalName.Substring(4).Split('-');
result := new class
(
house := StrToInt(s[0]),
floor := (StrToInt(s[1]) - 1) mod 36 div 4 + 1,
debt := double(e)
);
end);
var floors := Range(1, 9);
d.Root.ReplaceNodes(a.OrderBy(e -> e.house)
.GroupBy(e -> e.house,
(k, ee) -> new XElement(ns + ('house' + k),
floors.GroupJoin(ee, e1 -> e1, e2 -> e2.floor,
(e1, ee2) -> new XElement(ns + ('floor' + e1),
new XAttribute('count', ee2.Count()),
new XAttribute('total-debt',
Math.Round(ee2.Sum(e -> e.debt), 2)))))));
d.Save(name);
end.

View file

@ -0,0 +1,9 @@
[=PascalABC]
[0]
uses PT4;
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1,9 @@
[=PascalABC]
[0]
uses PT4Exam;
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1,23 @@
[=PascalABC]
[0]
uses PT4, PT4Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadSeqInteger() - ввод числовой последовательности;
ReadSeqString() - ввод строковой последовательности;
Write() (метод расширения) - вывод последовательности;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1,24 @@
[=PascalABC]
[0]
uses PT4, PT4Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadAllLines(name) - функция, которая возвращает последовательность строк,
содержащихся в текстовом файле с имененм name;
WriteAllLines(name, seq) - процедура, которая записывает в текстовый файл
с именем name последотвальеность строк seq;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1,23 @@
[=PascalABC]
[0]
{$reference System.Xml.Linq.dll}
uses PT4, PT4Linq, System, System.Xml.Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadAllLines(name) - функция, которая возвращает последовательность строк,
содержащихся в текстовом файле с имененм name;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqB>%X<0_LinqB>

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqO>%X<0_LinqO>

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqX>%X<0_LinqX>

View file

@ -18,4 +18,5 @@ P.ptCommentQuote{text-align:left;margin-left:120px;margin-top:0px;margin-bottom:
P.ptCommentContinue{text-align:justify;}
P.ptFooter{text-align:right;font-size:10pt;font-style:italic;margin-right:0px;}
SPAN.ptSpecial{font-family:"Arial";}
PRE{font-family:"Courier New";text-align:left;font-size:10pt;text-indent:0px;margin-top:5px; margin-right:10px; margin-bottom:0px; margin-left:60px;}
P.ptPicture{font-family:Arial, sans-serif;margin-top: 5px;margin-bottom: 5px;margin-left: 60px;font-size: small;color: #000080;text-indent: 0pt;text-align: justify}

Binary file not shown.

View file

@ -1 +1 @@
N“祭¨ª|10PABC1 NC:\Program Files (x86)\PascalABC.NET\PT4 NV8Â˜í«·®®#"%'%&&*&$#"%'%&&*&6b3:'%&&*&$#"%'%8>>674;7?<?8<98<257566:643257566:6
N“祭¨ª|10PABC2 NC:\Program Files (x86)\PascalABC.NET\PT4 NV8Â˜í«·®®#"%'%&&*&$#"%'%&&*&6b3:'%&&*&$#"%'%8>>674;7?<?8<98<257566:643257566:6

View file

@ -19,7 +19,7 @@ loadver=4
==cc|âëîæåííûå öèêëû|16
==p|ïðîöåäóðû áåç ïàðàìåòðîâ|4
==pp|ïðîöåäóðû ñ ïàðàìåòðàìè|18
=|||%f.pas|uses PT4;%#%#begin%# Task('%f');%#%#end.
=|||%f.pas|%x<0_>%X<0_>
==Begin
==Integer
==For

View file

@ -19,7 +19,7 @@ loadver=4
==cc|nested loops|16
==p|procedures without parameters|4
==pp|procedures with the parameters|18
=|||%f.pas|uses PT4;%#%#begin%# Task('%f');%#%#end.
=|||%f.pas|%x<0_>%X<0_>
==Begin
==Integer
==For

View file

@ -1 +1 @@
!define VERSION '2.2.0.993'
!define VERSION '2.2.0.995'

View file

@ -1,5 +1,4 @@

Section $(DESC_PT4) PT4
SectionIn 1
SetOutPath "$INSTDIR"
@ -49,6 +48,12 @@ Section $(DESC_PT4) PT4
${AddFile} "license-en.txt"
File "PT4\license-ru.txt"
${AddFile} "license-ru.txt"
File "PT4\LinqBloadpabc.dat"
${AddFile} "LinqBloadpabc.dat"
File "PT4\LinqOloadpabc.dat"
${AddFile} "LinqOloadpabc.dat"
File "PT4\LinqXloadpabc.dat"
${AddFile} "LinqXloadpabc.dat"
SetOutPath "$INSTDIR\PT4\Lib"
File "PT4\Lib\PT4ExamBegin_ru.dll"
@ -56,6 +61,40 @@ Section $(DESC_PT4) PT4
File "PT4\Lib\PT4ExamTaskC_ru.dll"
${AddFile} "PT4ExamTaskC_ru.dll"
File "PT4\Lib\PT4ExamCheck_ru.dll"
${AddFile} "PT4ExamCheck_ru.dll"
File "PT4\Lib\PT4LinqBegin.dll"
${AddFile} "PT4LinqBegin.dll"
File "PT4\Lib\PT4LinqObj.dll"
${AddFile} "PT4LinqObj.dll"
File "PT4\Lib\PT4LinqXml.dll"
${AddFile} "PT4LinqXml.dll"
File "PT4\Lib\PT4TMDemoAbc.dll"
${AddFile} "PT4TMDemoAbc.dll"
File "PT4\Lib\PT4_.txt"
${AddFile} "PT4_.txt"
File "PT4\Lib\PT4_Exam.txt"
${AddFile} "PT4_Exam.txt"
File "PT4\Lib\PT4_LinqB.txt"
${AddFile} "PT4_LinqB.txt"
File "PT4\Lib\PT4_LinqO.txt"
${AddFile} "PT4_LinqO.txt"
File "PT4\Lib\PT4_LinqX.txt"
${AddFile} "PT4_LinqX.txt"
File "PT4\Lib\PT4ExamBegin_ru.txt"
${AddFile} "PT4ExamBegin_ru.txt"
File "PT4\Lib\PT4ExamCheck_ru.txt"
${AddFile} "PT4ExamCheck_ru.txt"
File "PT4\Lib\PT4LinqBegin[PascalABC].txt"
${AddFile} "PT4LinqBegin[PascalABC].txt"
File "PT4\Lib\PT4LinqObj[PascalABC].txt"
${AddFile} "PT4LinqObj[PascalABC].txt"
File "PT4\Lib\PT4LinqXml[PascalABC].txt"
${AddFile} "PT4LinqXml[PascalABC].txt"
SetOutPath "$INSTDIR\PT4\Lib\Graph"
File "PT4\Lib\Graph\*.png"
SetOutPath "$INSTDIR"
File "PT4\PT4Tools.dll"
${AddFile} "PT4Tools.dll"

Binary file not shown.

View file

@ -1 +1 @@
=|||%f|uses%# PT4Exam;%#%#begin%# Task('%f');%#%#end.
=|||%f|%x<0_Exam>%X<0_Exam>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

View file

@ -0,0 +1,84 @@
[=Pascal][=PascalABC][=CPP][=Python][0]
[~Îáðàáîòêà ñòàòèñòè÷åñêèõ äàííûõ]
[text]
Ïðè ðåøåíèè çàäà÷ äàííîé ïîäãðóïïû íåîáõîäèìî èñïîëüçîâàòü
çàãîòîâêó, âêëþ÷àþùóþ îïèñàíèÿ ïåðåìåííûõ è ââîä
èñõîäíûõ äàííûõ:
[code]
[=Pascal][=PascalABC]
const
N = 15;
var
a: array[1..N] of integer;
i, j, k: integer;
begin
for i := 1 to N do
read(a[i]);
end.
[=CPP]
#define N 15
int a[N];
int i, j, k;
for (i = 0; i < N; i++)
cin >> a[i];
[=Python]
N = 15
i = None
j = None
k = None
a = [int(i) for i in input().split()]
[=Pascal][=PascalABC][=CPP][=Python]
[text]
Òðåáóåòñÿ äîïîëíèòü ïðîãðàììó-çàãîòîâêó àëãîðèòìîì
ðåøåíèÿ çàäà÷è, èñïîëüçóÿ òîëüêî òå ïåðåìåííûå, êîòîðûå óêàçàíû â òåêñòå
çàãîòîâêè (âñå ïåðåìåííûå ìîæíî íå èñïîëüçîâàòü).
[123-130]
[-H]
[text]
Ïðåäëàãàåìàÿ çàãîòîâêà ñîäåðæèò îïèñàíèÿ ïåðåìåííûõ è ââîä
èñõîäíûõ äàííûõ. Òðåáóåòñÿ äîïîëíèòü ïðîãðàììó-çàãîòîâêó àëãîðèòìîì
ðåøåíèÿ çàäà÷è, èñïîëüçóÿ òîëüêî òå ïåðåìåííûå, êîòîðûå óêàçàíû â òåêñòå
çàãîòîâêè (âñå ïåðåìåííûå ìîæíî íå èñïîëüçîâàòü).
[code]
[=Pascal][=PascalABC]
const
N = 15;
var
a: array[1..N] of integer;
i, j, k: integer;
begin
[-W]
Task('%{task}');
[+W]
for i := 1 to N do
read(a[i]);
end.
[=CPP]
[-W]
void Solve()
{
Task("%{task}");
[+W]
#define N 15
int a[N];
int i, j, k;
for (i = 0; i < N; i++)
cin >> a[i];
[-W]
}
[=Python]
def solve():
task("%{task}")
[+W]
N = 15
i = None
j = None
k = None
a = [int(i) for i in input().split()]

View file

@ -0,0 +1,786 @@
[=Pascal][=PascalABC][1-14]
var x, y: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(x, y);
[1]
if x*x + y*y >= 4 then
if x >= -2 then
if y <= -x then
[2]
if x*x + y*y >= 4 then
if y >= -2 then
if y <= x then
[3]
if y >= x then
if y >= 0 then
if y <= 2 - x*x then
[4]
if y <= 2*x*x then
if x >= -1 then
if y >= 1 then
[5]
if y <= 1 then
if y >= 0 then
if x >= -1 then
if y >= x*x then
[6]
if y <= x then
if y <= -x then
if y >= x*x - 2 then
[7]
if y <= 1 - x then
if y >= 0 then
if x >= 0 then
if x*x + y*y <= 1 then
[8]
if y >= -1 then
if y <= x then
if y <= 0 then
if x*x + y*y <= 1 then
[9]
if y <= 1 then
if y >= x then
if x >= -1 then
if x*x + y*y <= 1 then
[10]
if y <= x + 2 then
if x <= 0 then
if x*x + y*y <= 25 then
[11]
if y >= x*x - 6 then
begin
if x*x + y*y <= 16 then
writeln('Ïðèíàäëåæèò')
end
else
if x >= 0 then
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[12]
if y <= sin(x) then
if x <= 3.14/2 then
if y >= 0 then
[13]
if y <= 1 then
if x >= 0 then
if y >= sin(x) then
[14]
if y <= 0 then
if y >= -1 then
if y <= cos(x) then
[1-4][6][10][12-14]
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[5][7-9]
writeln('Ïðèíàäëåæèò')
else
writeln('Íå ïðèíàäëåæèò');
[1-14]
writeln('Ïðîãðàììà çàâåðøåíà');
end.
[15]
var c: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(c);
if c > 0 then
write('íåò ðåøåíèé')
else
write('x = ', sqrt(-c):0:2, ' èëè x = ', -sqrt(-c):0:2);
[16-21]
var a, b: real;
begin
[-HW]
Task('%{task}');
[+HW]
readln(a, b);
[16]
if a = 0 then
if b = 0 then
write('ëþáîå ÷èñëî')
else
write('íåò ðåøåíèé')
else
if b = 0 then
write('x = 0.00')
else
write('x = ', b/a:0:2,' èëè x = ', -b/a:0:2);
[17]
if b = 0 then
write('x = 0.00')
else
if a = 0 then
write('íåò ðåøåíèé')
else
write('x = ', -b/a:0:2);
end.
[18]
if a = 0 then
if b > 0 then
write('ëþáîå ÷èñëî')
else
write('íåò ðåøåíèé')
else
write('x > ', -b/a:0:2);
[19]
if b = 0 then
write('x > 0.00 èëè x < 0.00')
else
if a > 0 then
write('x > 0.00 èëè x < ', -b:0:2)
else
write(-b:0:2, ' < x < 0.00') ;
[20]
if a = 0 then
if b > 0 then
write('íåò ðåøåíèé')
else
write('x > 0.00 èëè x < 0.00')
else
write(-a:0:2,' < x < 0.00');
[21]
if b > 0 then
write('x > ', a:0:2,' èëè x < 0.00')
else
if a > 0 then
write('0.00 < x < ', a:0:2)
else
write(a:0:2, ' < x < 0.00');
[15-21]
end.
[22]
var N: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
while N > 10 do
begin
N := N mod 10;
end;
write(N);
end.
[23]
var N: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
while N > 10 do
begin
N := N mod 100;
end;
write(N);
end.
[24]
var N, digit, maxdigit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
maxdigit := 10;
while N >= 10 do
begin
digit := N mod 10;
if maxdigit < digit then
maxdigit := digit;
N := N div 10;
end;
write(maxdigit);
end.
[25]
var N, p, digit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
p := N mod 10;
while N >= 10 do
begin
digit := N mod 10;
p := p * digit;
N := N div 10;
end;
writeln(p);
end.
[26]
var N, s: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
s := 1;
while N > 1 do
begin
if N mod 10 <> 0 then
s := N mod 10;
N := N div 10;
end;
write(s);
end.
[27]
var N, digit, maxdigit: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
maxdigit := N mod 10;
while N > 0 do
begin
digit := N mod 10;
if digit mod 3 = 0 then
if digit > maxdigit then
maxdigit := digit;
N := N div 10;
end;
if maxdigit = 0 then
writeln('NO')
else
writeln(maxDigit)
end.
[28]
var N, cnt: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
cnt := 0;
while N > 0 do
begin
cnt := cnt + N mod 2;
N := N div 10;
end;
writeln(cnt)
end.
[29]
var N, R, T, d: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
R := 0;
T := 0;
while N > 0 do
begin
d := N mod 10;
if d <> 2 then
begin
R := R + d * T;
T := T + 1;
end;
N := N div 10;
end;
writeln(T);
end.
[30]
var N, m, d: integer;
begin
[-HW]
Task('%{task}');
[+HW]
readln(N);
m := 0;
while N > 0 do
begin
d := N mod 10;
if d > 1 then
begin
m := d + m;
end;
N := N div 10;
end;
write(m);
end.
[-----------------------------------------------]
[=CPP][12-15]
[-HW]
#include <cmath>
using namespace std;
[1-30]
void Solve()
{
Task("%{task}");
[+HW]
[1-14]
double x, y;
cin >> x >> y;
[1]
if (x*x + y*y >= 4)
if (x >= -2)
if (y <= -x)
[2]
if (x*x + y*y >= 4)
if (y >= -2)
if (y <= x)
[3]
if (y >= x)
if (y >= 0)
if (y <= 2 - x*x)
[4]
if (y <= 2*x*x)
if (x >= -1)
if (y >= 1)
[5]
if (y <= 1)
if (y >= 0)
if (x >= -1)
if (y >= x*x)
[6]
if (y <= x)
if (y <= -x)
if (y >= x*x - 2)
[7]
if (y <= 1 - x)
if (y >= 0)
if (x >= 0)
if (x*x + y*y <= 1)
[8]
if (y >= -1)
if (y <= x)
if (y <= 0)
if (x*x + y*y <= 1)
[9]
if (y <= 1)
if (y >= x)
if (x >= -1)
if (x*x + y*y <= 1)
[10]
if (y <= x + 2)
if (x <= 0)
if (x*x + y*y <= 25)
[11]
if (y >= x*x - 6)
{
if (x*x + y*y <= 16)
cout << "Ïðèíàäëåæèò" << endl;
}
else
if (x >= 0)
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[12]
if (y <= sin(x))
if (x <= 3.14/2)
if (y >= 0)
[13]
if (y <= 1)
if (x >= 0)
if (y >= sin(x))
[14]
if (y <= 0)
if (y >= -1)
if (y <= cos(x))
[1-4][6][10][12-14]
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[5][7-9]
cout << "Ïðèíàäëåæèò" << endl;
else
cout << "Íå ïðèíàäëåæèò" << endl;
[1-14]
cout << "Ïðîãðàììà çàâåðøåíà";
[15-21]
cout << fixed << setprecision(2);
[15]
double c;
cin >> c;
if (c > 0)
cout << "íåò ðåøåíèé";
else
cout << "x = " << sqrt(-c):0:2, ' èëè x = ', -sqrt(-c):0:2);
[16-21]
double a, b;
cin >> a >> b;
[16]
if (a == 0)
if (b == 0)
cout << "ëþáîå ÷èñëî";
else
cout << "íåò ðåøåíèé";
else
if (b == 0)
cout << "x = 0.00";
else
cout << "x = " << b/a << " èëè x = " << -b/a;
[17]
if (b == 0)
cout << "x = 0.00";
else
if (a == 0)
cout << "íåò ðåøåíèé";
else
cout << "x = " << -b/a;
[18]
if (a == 0)
if (b > 0)
cout << "ëþáîå ÷èñëî";
else
cout << "íåò ðåøåíèé";
else
cout << "x > " << -b/a;
[19]
if (b == 0)
cout << "x > 0.00 èëè x < 0.00";
else
if (a > 0)
cout << "x > 0.00 èëè x < " << -b;
else
cout << -b << " < x < 0.00";
[20]
if (a == 0)
if (b > 0)
cout << "íåò ðåøåíèé";
else
cout << "x > 0.00 èëè x < 0.00";
else
cout << -a << " < x < 0.00";
[21]
if (b > 0)
cout << "x > " << a << " èëè x < 0.00";
else
if (a > 0)
cout << "0.00 < x < " << a;
else
cout << a << " < x < 0.00";
[22]
int N;
cin >> N;
while (N > 10)
{
N = N % 10;
}
cout << N;
[23]
int N;
cin >> N;
while (N > 10)
{
N = N % 100;
}
cout << N;
[24]
int N, digit, maxdigit;
cin >> N;
maxdigit = 10;
while (N >= 10)
{
digit = N % 10;
if (maxdigit < digit)
maxdigit = digit;
N = N / 10;
}
cout << maxdigit;
[25]
int N, digit, p;
cin >> N;
p := N % 10;
while (N >= 10)
{
digit = N % 10;
p = p * digit;
N = N / 10;
}
cout << p;
[26]
int N, s;
cin >> N;
s = 1;
while (N > 1)
{
if (N % 10 != 0)
s = N % 10;
N = N / 10;
}
cout << s;
[27]
int N, digit, maxdigit;
cin >> N;
maxdigit = N % 10;
while (N > 0)
{
digit = N % 10;
if (digit % 3 == 0)
if (digit > maxdigit)
maxdigit = digit;
N = N / 10;
}
if (maxdigit == 0)
cout << "NO";
else
cout << maxDigit;
[28]
int N, cnt;
cin >> N;
cnt = 0;
while (N > 0)
{
cnt = cnt + N % 2;
N = N / 10;
}
cout << cnt;
[29]
int N, R, T, d;
cin >> N;
R = 0;
T = 0;
while (N > 0)
{
d = N % 10;
if (d != 2)
{
R = R + d * T;
T++;
}
N = N / 10;
}
cout << T;
[30]
int N, m, d;
cin >> N;
m = 0;
while (N > 0)
{
d = N % 10;
if (d > 1)
{
m = d + m;
}
N = N / 10;
}
cout << m;
[1-30]
[-HW]
}
[+HW]
[-----------------------------------------------]
[=Python][12-15]
[-HW]
import math
[1-30]
def solve():
task("%{task}")
[+HW]
[1-14]
x = float(input())
y = float(input())
[1]
if x*x + y*y >= 4:
if x >= -2:
if (y <= -x):
[2]
if x*x + y*y >= 4:
if y >= -2:
if y <= x:
[3]
if y >= x:
if y >= 0:
if y <= 2 - x*x:
[4]
if y <= 2*x*x:
if x >= -1:
if y >= 1:
[5]
if y <= 1:
if y >= 0:
if x >= -1:
if y >= x*x:
[6]
if y <= x:
if y <= -x:
if y >= x*x - 2:
[7]
if y <= 1 - x:
if y >= 0:
if x >= 0:
if x*x + y*y <= 1:
[8]
if y >= -1:
if y <= x:
if y <= 0:
if x*x + y*y <= 1:
[9]
if y <= 1:
if y >= x:
if x >= -1:
if x*x + y*y <= 1:
[10]
if y <= x + 2:
if x <= 0:
if x*x + y*y <= 25:
[11]
if y >= x*x - 6:
if x*x + y*y <= 16:
print("Ïðèíàäëåæèò")
elif x >= 0:
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[12]
if y <= math.sin(x):
if x <= 3.14/2:
if y >= 0:
[13]
if y <= 1:
if x >= 0:
if y >= math.sin(x):
[14]
if y <= 0:
if y >= -1:
if y <= math.cos(x):
[1-4][6][10][12-14]
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[5][7-9]
print("Ïðèíàäëåæèò")
else:
print("Íå ïðèíàäëåæèò")
[1-14]
print("Ïðîãðàììà çàâåðøåíà")
[15]
c = float(input())
if c > 0:
print("íåò ðåøåíèé")
else:
print("x = %0.2f èëè x = %0.2f" % (math.sqrt(-c), -math.sqrt(-c)))
[16-21]
a = float(input())
b = float(input())
[16]
if a == 0:
if b == 0:
print("ëþáîå ÷èñëî")
else:
print("íåò ðåøåíèé")
else:
if b == 0:
print("x = 0.00")
else
print("x = %0.2f èëè x = %0.2f" % (b/a, -b/a))
[17]
if b == 0:
print("x = 0.00")
else:
if a == 0:
print("íåò ðåøåíèé")
else:
print("x = %0.2f" % -b/a)
[18]
if a == 0:
if b > 0:
print("ëþáîå ÷èñëî")
else:
print("íåò ðåøåíèé")
else:
print("x = %0.2f" % -b/a)
[19]
if b == 0:
print("x > 0.00 èëè x < 0.00")
else:
if a > 0:
print("x > 0.00 èëè x < %0.2f" % -b)
else:
print("%0.2f < x < 0.00" % -b)
[20]
if a == 0:
if b > 0:
print("íåò ðåøåíèé")
else:
print("x > 0.00 èëè x < 0.00")
else:
print("%0.2f < x < 0.00" % -a)
[21]
if b > 0:
print("x > %0.2f èëè x < 0.00" % a)
else:
if a > 0:
print("0.00 < x < %0.2f" % a)
else:
print("%0.2f < x < 0.00" % a)
[22-30]
N = int(input())
[22]
while N > 10:
N = N % 10
print(N)
[23]
while N > 10:
N = N % 100
print(N)
[24]
maxdigit = 10
while N >= 10:
digit = N % 10
if maxdigit < digit:
maxdigit = digit
N = N // 10
}
print(maxdigit)
[25]
p = N % 10
while N >= 10:
digit = N % 10
p = p * digit
N = N // 10
print(p)
[26]
s = 1
while N > 1:
if N % 10 != 0:
s = N % 10
N = N // 10
print(s)
[27]
maxdigit = N % 10
while N > 0:
digit = N % 10
if digit % 3 == 0:
if digit > maxdigit:
maxdigit = digit
N = N // 10
if maxdigit == 0:
print("NO")
else:
print(maxDigit)
[28]
cnt = 0
while N > 0:
cnt = cnt + N % 2
N = N // 10
print(cnt)
[29]
R = 0
T = 0
while N > 0:
d = N % 10
if d != 2:
R = R + d * T
T += 1
N = N // 10
print(T)
[30]
m = 0
while N > 0:
d = N % 10
if d > 1:
m = d + m
N = N // 10
print(m)

Binary file not shown.

View file

@ -0,0 +1,104 @@
[4]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.1. Поэлементные операции
// LinqBegin4: правильное решение - 1 вариант (с.126)
begin
Task('LinqBegin4');
var c := ReadChar;
var a := ReadSeqString;
try
var r := a.SingleOrDefault(e -> (e.Length <> 0) and (e[e.Length] = c));
write(r <> nil ? r : '');
except
write('Error');
end;
end.
[15]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.2. Операция агрегирования и генерирование последовательностей
// LinqBegin15: правильное решение - 2 вариант (с.134, внизу)
begin
Task('LinqBegin15');
var n := ReadInteger;
var f := Range(1, n)
.Aggregate(1.0, (a, e) -> a * e);
write(f);
end.
[31]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.3. Фильтрация, сортировка, теоретико-множественные операции
// LinqBegin31: правильное решение - 1 вариант (с.145)
begin
Task('LinqBegin31');
var k := ReadInteger;
var a := ReadSeqString;
var b := a.Take(k).Show('B');
var c := a.Reverse()
.TakeWhile(e ->not char.IsDigit(e[e.Length])).Show('C');
b.Intersect(c).Show('D')
.OrderBy(e -> e.Length).ThenBy(e -> e)
.Write;
end.
[43]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.4. Проецирование
// LinqBegin43: правильное решение с отладочной печатью (с.151, внизу)
begin
Task('LinqBegin43');
var k := ReadInteger;
ReadSeqString
.SelectMany((e, n) ->
e.Where((c, i) -> i mod 2 = (n < k ? 0 : 1)).Show())
.Reverse
.Write;
end.
[52]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.5. Объединение
// LinqBegin52: правильное решение - 1 вариант (с.159, середина)
begin
Task('LinqBegin52');
var a := ReadSeqString()
.Where(e -> char.IsDigit(e[e.Length])).Show('A');
var b := ReadSeqString()
.Where(e -> char.IsDigit(e[e.Length])).Show('B');
a.SelectMany(e1 -> b.Select(e2 -> e1 + '=' + e2))
.OrderBy(e -> e.Split('=')[0])
.ThenByDescending(e -> e.Split('=')[1])
.Write;
end.
[54]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.5. Объединение
// LinqBegin54: правильное решение (с.170, середина)
begin
Task('LinqBegin54');
ReadSeqString().GroupJoin(ReadSeqString(),
e -> e[1], e -> e[1],
(e1, ee2) -> ee2.DefaultIfEmpty('')
.Select(e -> e1 + '.' + e))
.SelectMany(e -> e).OrderBy(e -> e).Show()
.Write;
end.
[60]
// Абрамян М.Э. ТЕХНОЛОГИЯ LINQ НА ПРИМЕРАХ. М.: ДМК-Пресс, 2014.
// Глава 5. Примеры решения задач из группы LinqBegin
// 5.6. Группировка
// LinqBegin60: правильное решение - 1 вариант (с.175, внизу)
begin
// ===ОШИБКА КОМПИЛЯЦИИ===
Task('LinqBegin60');
ReadSeqString().GroupBy(e -> e[1])
.OrderByDescending(e -> e.Sum(s -> s.Length)).ThenBy(e -> e.Key)
.Select(e -> e.Sum(s -> s.Length) + '-' + e.Key)
.Write;
end.

View file

@ -0,0 +1,157 @@
[4]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.1. Ïðîñòîå çàäàíèå íà îáðàáîòêó îòäåëüíîé ïîñëåäîâàòåëüíîñòè
// LinqObj4: ïðàâèëüíîå ðåøåíèå (ñ.191, âíèçó)
begin
// === ÎØÈÁÊÀ ÊÎÌÏÈËßÖÛÛ ===
Task('LinqObj4');
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class (
hours := StrToInt(s[2]),
code := StrToInt(s[3])
);
end)
.GroupBy(e -> e.code,
(k, ee) -> new class(k, sum := ee.Sum(c -> c.hours) ))
.OrderByDescending(e -> e.sum).ThenBy(e -> e.k)
.Select(e -> IntToStr(e.sum) + ' ' + IntToStr(e.k));
WriteAllLines(ReadString, r);
end.
[41]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.2. Áîëåå ñëîæíûå çàäàíèÿ íà îáðàáîòêó îòäåëüíûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj41: ïðàâèëüíîå ðåøåíèå (ñ.196)
begin
// === ÎØÈÁÊÀ ÊÎÌÏÈËßÖÛÛ ===
Task('LinqObj41');
var m := ReadInteger;
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class (
brand := StrToInt(s[0]),
street := s[1],
price := StrToInt(s[3])
);
end)
.Where(e -> e.brand = m)
.GroupBy(e -> e.street,
(k, ee) -> new class ( street := k, max := ee.Max(e -> e.price) ))
.OrderBy(e -> e.max).ThenBy(e -> e.street)
.Select(e -> IntToStr(e.max) + ' ' + IntToStr(e.street))
.DefaultIfEmpty('Íåò');
WriteAllLines(ReadString, r);
end.
[61]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.2. Áîëåå ñëîæíûå çàäàíèÿ íà îáðàáîòêó îòäåëüíûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj61: ïðàâèëüíîå ðåøåíèå (ñ.199-200)
begin
// === ÎØÈÁÊÀ ÂÐÅÌÅÍÈ ÂÛÏÎËÍÅÍÈß ===
Task('LinqObj61');
var subjects : array of string := ( 'Àëãåáðà', 'Ãåîìåòðèÿ', 'Èíôîðìàòèêà' );
var culture := new System.Globalization.CultureInfo('en-US');
var r := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
name := s[0] + ' ' + s[1],
subj := s[3],
mark := StrToInt(s[4])
);
end)
.GroupBy(e -> e.name, (k, ee) -> new class
(
name := k,
avrs := subjects
.GroupJoin(ee, s -> s, e -> e.subj,
(s1, ee1) -> ee1.Select(e1 -> e1.mark)
.DefaultIfEmpty().Average())
))
.OrderBy(e -> e.name)
.Select(e -> e.name + e.avrs.Aggregate('',
(a, d) -> a + ' ' + d.ToString('f2', culture)));
WriteAllLines(ReadString, r);
end.
[98]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 6. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqObj
// 6.3. Îáðàáîòêà âçàèìîñâÿçàííûõ ïîñëåäîâàòåëüíîñòåé
// LinqObj98: ïðàâèëüíîå ðåøåíèå (ñ.215, ââåðõó)
begin
Task('LinqObj98');
var B := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
art := s[1],
cat := s[2]
);
end);
var C := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
discount := StrToInt(s[0]),
code := s[1],
shop := s[2]
);
end);
var D := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
art := s[0],
price := StrToInt(s[1]),
shop := s[2]
);
end);
var E := ReadAllLines(ReadString)
.Select(e ->
begin
var s := e.Split(' ');
result := new class
(
code := s[0],
art := s[1],
shop := s[2]
);
end);
var discounts := E.Join(B, e1 -> e1.art, e2 -> e2.art,
(e1, e2) -> new class ( e1.code, e1.art, e1.shop, e2.cat ))
.Join(D, e1 -> e1.art + e1.shop, e2 -> e2.art + e2.shop,
(e1, e2) -> new class ( e1.code, e1.shop, e1.cat, e2.price ))
.GroupJoin(C, e1 -> e1.code + e1.shop, e2 -> e2.code + e2.shop,
(e1, ee2) -> new class
(
cat_shop := e1.cat + ' ' + e1.shop,
discount := ee2.Select(e -> e.discount)
.FirstOrDefault() * e1.price div 100
));
var cats := B.GroupBy(e -> e.cat, (k, ee) -> k);
var shops := E.GroupBy(e -> e.shop, (k, ee) -> k);
var r := cats
.SelectMany(e1 -> shops.Select(e2 -> e1 + ' ' + e2))
.OrderBy(e -> e)
.GroupJoin(discounts, e1 -> e1, e2 -> e2.cat_shop,
(e1, ee2) -> e1 + ' ' +
IntToStr(ee2.Select(e -> e.discount).DefaultIfEmpty(-1).Sum()));
WriteAllLines(ReadString, r);
end.

View file

@ -0,0 +1,185 @@
[10]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.1. Ñîçäàíèå XML-äîêóìåíòà
// LinqXml10: ïðàâèëüíîå ðåøåíèå (ñ.227)
begin
Task('LinqXml10');
var a := ReadAllLines(ReadString);
var d := new XDocument(
new XDeclaration(nil, 'windows-1251', nil),
new XElement('root',
a.Select(e -> e.StartsWith('data:') ?
new XProcessingInstruction('instr', e.Substring(5)) as XNode:
new XElement('line', e) as XNode)));
d.Save(ReadString);
end.
[20]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.2. Àíàëèç ñîäåðæèìîãî XML-äîêóìåíòà
// LinqXml20: ïðàâèëüíîå ðåøåíèå (ñ.235-236)
begin
Task('LinqXml20');
var d := XDocument.Load(ReadString);
foreach var e1 in d.Root.Elements do
begin
write(e1.Name.LocalName);
var max := e1.Descendants
.Select(e -> e.Attributes.Count())
.DefaultIfEmpty(-1).Max;
write(max);
var a := e1.Descendants
.Where(e -> e.Attributes.Count() = max)
.Select(e -> e.Name.LocalName)
.OrderBy(e -> e)
.DefaultIfEmpty('no child');
foreach var e in a do
write(e);
end
end.
[28]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml28: ïðàâèëüíîå ðåøåíèå (ñ.238)
begin
Task('LinqXml28');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.Elements().Elements().Elements()
.Nodes().OfType&<XText>().Remove();
d.Save(name);
end.
[32]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml32: ïðàâèëüíîå ðåøåíèå (ñ.242)
begin
Task('LinqXml32');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
foreach var e in d.Root.Elements().Elements(s1) do
e.AddBeforeSelf(new XElement(s2,
e.LastAttribute, e.Elements().FirstOrDefault()));
d.Save(name);
end.
[37]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.3. Ïðåîáðàçîâàíèå XML-äîêóìåíòà
// LinqXml37: ðåøåíèå ñ èñïîëüçîâàíèåì âûðàæåíèÿ çàïðîñà (ñ.244)
begin
Task('LinqXml37');
var name := ReadString;
var d := XDocument.Load(name);
var a := d.Root.Elements().Elements()
.Where(e -> not e.IsEmpty);
foreach var e in a do
e.Value := e.Value;
d.Save(name);
end.
[50]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.4. Ïðåîáðàçîâàíèå òèïîâ ïðè îáðàáîòêå XML-äîêóìåíòà
// LinqXml50: ïðàâèëüíîå ðåøåíèå (ñ.254)
begin
Task('LinqXml50');
var name := ReadString;
var d := XDocument.Load(name);
d.Root.AddFirst(new XElement('total-time',
d.Root.Elements()
.Select(e ->
begin
var a := e.Attribute('time');
if a = nil then
result := new TimeSpan(24, 0, 0)
else
result := TimeSpan(a);
end)
.Aggregate(TimeSpan.Zero, (a, e) -> a + e)));
d.Save(name);
end.
[57]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.5. Ðàáîòà ñ ïðîñòðàíñòâàìè èìåí XML-äîêóìåíòà
// LinqXml57: ïðàâèëüíîå ðåøåíèå (ñ.263)
begin
Task('LinqXml57');
var name := ReadString;
var s1 := ReadString;
var s2 := ReadString;
var d := XDocument.Load(name);
d.Root.Add(new XAttribute(XNamespace.Xmlns + 'x', s1),
new XAttribute(XNamespace.Xmlns + 'y', s2));
var ns1 := XNamespace(s1);
var ns2 := XNamespace(s2);
foreach var e in d.Descendants() do
begin
var ns := e.Ancestors().Count() <= 1 ? ns1 : ns2;
e.Name := ns + e.Name.LocalName;
end;
d.Descendants().Attributes('xmlns').Remove();
d.Save(name);
end.
[61]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.6. Äîïîëíèòåëüíûå çàäàíèÿ íà îáðàáîòêó XML-äîêóìåíòîâ
// LinqXml61: ïðàâèëüíîå ðåøåíèå (ñ.268, ââåðõó)
begin
Task('LinqXml61');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
d.Root.ReplaceNodes(d.Root.Elements()
.Select(e -> new XElement(ns + 'time',
new XAttribute('id', e.Element(ns + 'id').Value),
new XAttribute('year',
(DateTime(e.Element(ns + 'date'))).Year),
new XAttribute('month',
(DateTime(e.Element(ns + 'date'))).Month),
e.Element(ns + 'time').Value)));
d.Save(name);
end.
[82]
// Àáðàìÿí Ì.Ý. ÒÅÕÍÎËÎÃÈß LINQ ÍÀ ÏÐÈÌÅÐÀÕ. Ì.: ÄÌÊ-Ïðåññ, 2014.
// Ãëàâà 7. Ïðèìåðû ðåøåíèÿ çàäà÷ èç ãðóïïû LinqXml
// 7.6. Äîïîëíèòåëüíûå çàäàíèÿ íà îáðàáîòêó XML-äîêóìåíòîâ
// LinqXml82: ïðàâèëüíîå ðåøåíèå (ñ.276)
begin
// ÎØÈÁÊÀ ÊÎÌÏÈËßÖÈÈ
Task('LinqXml82');
var name := ReadString;
var d := XDocument.Load(name);
var ns := d.Root.Name.Namespace;
var a := d.Root.Elements()
.Select(e ->
begin
var s := e.Name.LocalName.Substring(4).Split('-');
result := new class
(
house := StrToInt(s[0]),
floor := (StrToInt(s[1]) - 1) mod 36 div 4 + 1,
debt := double(e)
);
end);
var floors := Range(1, 9);
d.Root.ReplaceNodes(a.OrderBy(e -> e.house)
.GroupBy(e -> e.house,
(k, ee) -> new XElement(ns + ('house' + k),
floors.GroupJoin(ee, e1 -> e1, e2 -> e2.floor,
(e1, ee2) -> new XElement(ns + ('floor' + e1),
new XAttribute('count', ee2.Count()),
new XAttribute('total-debt',
Math.Round(ee2.Sum(e -> e.debt), 2)))))));
d.Save(name);
end.

9
bin/PT4/Lib/PT4_.txt Normal file
View file

@ -0,0 +1,9 @@
[=PascalABC]
[0]
uses PT4;
[1-999]
begin
Task('%{task}');
end.

9
bin/PT4/Lib/PT4_Exam.txt Normal file
View file

@ -0,0 +1,9 @@
[=PascalABC]
[0]
uses PT4Exam;
[1-999]
begin
Task('%{task}');
end.

23
bin/PT4/Lib/PT4_LinqB.txt Normal file
View file

@ -0,0 +1,23 @@
[=PascalABC]
[0]
uses PT4, PT4Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadSeqInteger() - ввод числовой последовательности;
ReadSeqString() - ввод строковой последовательности;
Write() (метод расширения) - вывод последовательности;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

24
bin/PT4/Lib/PT4_LinqO.txt Normal file
View file

@ -0,0 +1,24 @@
[=PascalABC]
[0]
uses PT4, PT4Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadAllLines(name) - функция, которая возвращает последовательность строк,
содержащихся в текстовом файле с имененм name;
WriteAllLines(name, seq) - процедура, которая записывает в текстовый файл
с именем name последотвальеность строк seq;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

23
bin/PT4/Lib/PT4_LinqX.txt Normal file
View file

@ -0,0 +1,23 @@
[=PascalABC]
[0]
{$reference System.Xml.Linq.dll}
uses PT4, PT4Linq, System, System.Xml.Linq;
(*
При решении задач группы LinqObj доступны следующие
дополнительные методы, определенные в модуле PT4Linq:
ReadAllLines(name) - функция, которая возвращает последовательность строк,
содержащихся в текстовом файле с имененм name;
Show() и Show(cmt) (методы расширения) - отладочная печать
последовательности, cmt - строковый комментарий;
Show(e -> str) и Show(cmt, e -> str) (методы расширения) -
отладочная печать строковых значений str, полученных
из элементов e последовательности, cmt - строковый комментарий.
*)
[1-999]
begin
Task('%{task}');
end.

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqB>%X<0_LinqB>

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqO>%X<0_LinqO>

View file

@ -0,0 +1 @@
=|||%f|%x<0_LinqX>%X<0_LinqX>

View file

@ -3,9 +3,9 @@ PCKey=
RegNumber=0000000000000000000000
RegLabel=
[Packages]
PABC1=1
PABC1=0
[EXE files]
PABC1=D:\PascalABC.NET\!PABC_SVN\bin\PascalABCNET.exe
PABC1=
[Work Directory]
Path=C:\PABCWork.NET
Label=Ó÷åíèê

View file

@ -18,4 +18,5 @@ P.ptCommentQuote{text-align:left;margin-left:120px;margin-top:0px;margin-bottom:
P.ptCommentContinue{text-align:justify;}
P.ptFooter{text-align:right;font-size:10pt;font-style:italic;margin-right:0px;}
SPAN.ptSpecial{font-family:"Arial";}
PRE{font-family:"Courier New";text-align:left;font-size:10pt;text-indent:0px;margin-top:5px; margin-right:10px; margin-bottom:0px; margin-left:60px;}
P.ptPicture{font-family:Arial, sans-serif;margin-top: 5px;margin-bottom: 5px;margin-left: 60px;font-size: small;color: #000080;text-indent: 0pt;text-align: justify}

View file

@ -1 +1 @@
N“祭¨ª|10PABC1 NC:\Program Files (x86)\PascalABC.NET\PT4 NV8Â˜í«·®®#"%'%&&*&$#"%'%&&*&6b3:'%&&*&$#"%'%8>>674;7?<?8<98<257566:643257566:6
N“祭¨ª|10PABC2 NC:\Program Files (x86)\PascalABC.NET\PT4 NV8Â˜í«·®®#"%'%&&*&$#"%'%&&*&6b3:'%&&*&$#"%'%8>>674;7?<?8<98<257566:643257566:6

View file

@ -19,7 +19,7 @@ loadver=4
==cc|âëîæåííûå öèêëû|16
==p|ïðîöåäóðû áåç ïàðàìåòðîâ|4
==pp|ïðîöåäóðû ñ ïàðàìåòðàìè|18
=|||%f.pas|uses PT4;%#%#begin%# Task('%f');%#%#end.
=|||%f.pas|%x<0_>%X<0_>
==Begin
==Integer
==For

View file

@ -19,7 +19,7 @@ loadver=4
==cc|nested loops|16
==p|procedures without parameters|4
==pp|procedures with the parameters|18
=|||%f.pas|uses PT4;%#%#begin%# Task('%f');%#%#end.
=|||%f.pas|%x<0_>%X<0_>
==Begin
==Integer
==For

Binary file not shown.