Задание 17 Урок 15
Primary tabs
Задание 17 Урок 15
Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа).
Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.Например пусть мы имеем два массива (запишу лишь начальные элементы):
1 | 2 | -10 | 5 | 0 | 12 | 2 | 8 .... 0 | 3 | 4 | 9 | 7 | 5 | -8 | 3.....для них программа должна вывести:
-10 меньше 3 12 больше 9- других сравнений не последует, так как новых из "каждых третьих элементов" в 1-ом массиве больше нет.
type arr = array[1..20] of integer;
var i,min,max : integer;
first_array, second_array: arr;
function check_reinitialization(z_array: arr; mn,mx: integer): arr;
var z,u : integer;
c : boolean;
function reinitialization(): arr;
var k : integer;
begin
mn := -30;
mx := 30;
randomize;
for k := low(z_array) to high(z_array) do
z_array[k] := mn + random(mx - mn + 1);
result := z_array;
end;
begin
u := 0;
repeat
for z := low(z_array) to high(z_array) do
if z_array[1] >= 0 then// если первое значение положительное или равно 0
begin
if z_array[z] < 0 then
begin
c := true;
break;
end
else// если все 0 или положительные
if (z_array[z] >= 0) and (z = high(z_array)) then
c := false;
end
else// если первое значение отрицательное
if z_array[z] > 0 then
begin
c := true;
break;
end
else// если все отрицательные
if (z_array[z] < 0) and (z = high(z_array)) then
c := false;
if c = false then
z_array := reinitialization()
else
u += 1;
until u = 1;
result := z_array;
end;
procedure print(c_array: arr);
var p : integer;
begin
for p := low(c_array) to high(c_array) do
write('|', c_array[p],'|');
end;
procedure third_vs_second(f_array,s_array: arr);
var f,s : integer;
procedure comparision(value_f,value_s : integer);
begin
if value_f = value_s then
write(value_f, ' равно ', value_s)
else
if value_f > value_s then
write(value_f, ' больше ', value_s)
else
write(value_f, ' меньше ', value_s);
writeln();
end;
begin
s := 2;
for f := low(f_array) to high(f_array) do
if ((f mod 3) = 0) then
begin
comparision(f_array[f],s_array[s]);// если как в примере
s += 2;
{repeat// если каждый третий первого с каждым вторым второго
comparision(f_array[f],s_array[s]);
s += 2;
until s = high(s_array);
s := 2;}
end;
end;
begin
min := -30;
max := 30;
randomize;
for i := low(first_array) to high(first_array) do
first_array[i] := min + random(max - min + 1);
for i := low(second_array) to high(second_array) do
second_array[i] := min + random(max - min + 1);
first_array := check_reinitialization(first_array,min,max);
second_array := check_reinitialization(second_array,min,max);
print(first_array);
writeln();
print(second_array);
writeln();
third_vs_second(first_array,second_array);
readln();
end.консоль
|-14||-19||21||-14||21||25||0||-16||30||-11||-1||30||-17||23||1||9||-7||14||-9||-17| |-30||-13||5||1||-9||-9||-19||3||-7||-3||6||6||12||-16||-20||-18||8||23||1||-1| 21 больше -13 25 больше 1 30 больше -9 30 больше 3 1 больше -3 14 больше 6
|10||1||19||-19||20||30||14||-6||-16||27||-16||20||-17||6||-10||-23||2||2||-1||4| |-14||0||12||9||24||8||-30||11||-5||9||-27||-11||-2||-25||-17||-2||-4||24||-22||15| 19 больше 0 30 больше 9 -16 меньше 8 20 больше 11 -10 меньше 9 2 больше -11
- Log in to post comments
- 2129 reads
vedro-compota
Sun, 01/17/2021 - 14:54
Permalink
уйти от использования
уйти от использования вложенных фукций
_____________
матфак вгу и остальная классика =)