Задание 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
- 1619 reads
vedro-compota
Sun, 01/17/2021 - 14:54
Permalink
уйти от использования
уйти от использования вложенных фукций
_____________
матфак вгу и остальная классика =)