1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var f1,f2,f3:text;
n,i,a,b:integer;
begin
//создадим исходные файлы, можно вынести в отдельную программу
//или создать файлы вручную
randomize;
assign(f1,'f1.txt');
rewrite(f1);
assign(f2,'f2.txt');
rewrite(f2);
write('Сколько чисел ввести в первый файл n=');
readln(n);
writeln('Содержание файла f1:');
a:=1;
for i:=1 to n do
a:=a+random(5);
write(f1,' ',a);
write(' ',a);
end;
writeln;
write('Сколько чисел ввести во второй файл n=');
writeln('Содержание файла f2:');
write(f2,' ',a);
reset(f1);
reset(f2);
assign(f3,'f3.txt');
rewrite(f3);
//если не конец файла, то читаем числа иначе создаем барьер из
//максимально возможного целого числа
if not eof(f1) then read(f1,a) else a:=maxint;
if not eof(f2) then read(f2,b) else b:=maxint;
while (a<maxint) or (b<maxint) do//пока оба файла не кончились
if (a<=b) and (a<maxint) then //если 1<=2
write(f3,' ',a);//1 пишем в файл 3
if not eof(f1) then read(f1,a) else a:=maxint;//если не конец 1,
//то читаем следующее , иначе барьер
end
else if b<a then //иначе если 2<1 то же но со 2 файлом
write(f3,' ',b);
reset(f3);//смотрим что получилось
writeln('Слияние файлов:');
while not eof(f3) do
read(f3,a);
close(f1);
close(f2);
close(f3);
end.
Объяснение:
Вроде бы так, я не слишком в этом хорош.
===== PascalABC.NET =====
// 1
var a := ArrRandom(7, -4, 5);
a.Println;
// 2
var b := ReadArrInteger('Введи 8 чисел:', 8);
Println('Сумма четных:', b.Where(p -> p.IsEven).Sum);
var p := b.Where(p -> p > 4).DefaultIfEmpty.Product;
if p >0 then
Println('Произведение элементов, больших 4:', p)
else
Println('Нет элементов, больших 4');
// 3
var c := ArrRandom(10, -14, 7);
c.Println;
Print('Минимальный элемент, больший 5');
var m := c.Where(p -> p > 5).DefaultIfEmpty.Min;
if m = 0 then
Println('отсутствует')
Println('равен', m);
var im := c.IndexMin;
Println('Миниммальный элемент номер', im + 1, 'равен ', c[im])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var f1,f2,f3:text;
n,i,a,b:integer;
begin
//создадим исходные файлы, можно вынести в отдельную программу
//или создать файлы вручную
randomize;
assign(f1,'f1.txt');
rewrite(f1);
assign(f2,'f2.txt');
rewrite(f2);
write('Сколько чисел ввести в первый файл n=');
readln(n);
writeln('Содержание файла f1:');
a:=1;
for i:=1 to n do
begin
a:=a+random(5);
write(f1,' ',a);
write(' ',a);
end;
writeln;
write('Сколько чисел ввести во второй файл n=');
readln(n);
writeln('Содержание файла f2:');
a:=1;
for i:=1 to n do
begin
a:=a+random(5);
write(f2,' ',a);
write(' ',a);
end;
writeln;
reset(f1);
reset(f2);
assign(f3,'f3.txt');
rewrite(f3);
//если не конец файла, то читаем числа иначе создаем барьер из
//максимально возможного целого числа
if not eof(f1) then read(f1,a) else a:=maxint;
if not eof(f2) then read(f2,b) else b:=maxint;
while (a<maxint) or (b<maxint) do//пока оба файла не кончились
begin
if (a<=b) and (a<maxint) then //если 1<=2
begin
write(f3,' ',a);//1 пишем в файл 3
if not eof(f1) then read(f1,a) else a:=maxint;//если не конец 1,
//то читаем следующее , иначе барьер
end
else if b<a then //иначе если 2<1 то же но со 2 файлом
begin
write(f3,' ',b);
if not eof(f2) then read(f2,b) else b:=maxint;
end;
end;
reset(f3);//смотрим что получилось
writeln('Слияние файлов:');
while not eof(f3) do
begin
read(f3,a);
write(' ',a);
end;
close(f1);
close(f2);
close(f3);
end.
Объяснение:
Вроде бы так, я не слишком в этом хорош.
===== PascalABC.NET =====
begin
// 1
var a := ArrRandom(7, -4, 5);
a.Println;
// 2
var b := ReadArrInteger('Введи 8 чисел:', 8);
Println('Сумма четных:', b.Where(p -> p.IsEven).Sum);
var p := b.Where(p -> p > 4).DefaultIfEmpty.Product;
if p >0 then
Println('Произведение элементов, больших 4:', p)
else
Println('Нет элементов, больших 4');
// 3
var c := ArrRandom(10, -14, 7);
c.Println;
Print('Минимальный элемент, больший 5');
var m := c.Where(p -> p > 5).DefaultIfEmpty.Min;
if m = 0 then
Println('отсутствует')
else
Println('равен', m);
var im := c.IndexMin;
Println('Миниммальный элемент номер', im + 1, 'равен ', c[im])
end.