Процедура обчислення масиву
4. Код програми: Program lab2_1; type mas=array [1..10] of real; {new array type} var a,b,c:mas; {variables mas type} n, {number elements of array} i, {counter} range1,range2:integer; {border of range random numbers} tmp:real; {temperory} {-------------------Browse---------------------} procedure Browse(masiv:mas;ch:char); {masiv- array, ch – name of this array} begin write('Array ',ch,': '); {name of array} for i:=1 to n do {circle of outputting array} write(masiv[i]:4:2,' '); {display array} writeln; end; {end of Browse} {-------------------Input---------------------} procedure Input; var key:byte; {user answer} begin writeln; writeln('Result of lab2_1'); writeln('Variant 5, made by Znakhurenko Viktoriya'); writeln('c[i]=1,a[i]=b[i]'); {task of lab} writeln(' 1/(a[i]-b[i]),a[i]<>b[i]'); repeat {do while input correct value} write('Enter number elements of array <=10 '); {entering size of array} readln(n); {reading number elements} until (n>0) and (n<=10); {circle by entering correct value} repeat {do while correct variant} writeln; {menu for type of entering} writeln('Oppurtunites of filling array elements'); writeln('1. Random '); {random generation of number} writeln('2. Keyboard entering'); {input from keyboard by user} write('Your choise [1/2] '); {possible variant of filling array} readln(key); {get user choise} until(key=1)or(key=2); {possible variant of filling} if(key=1) then {random filling} begin repeat writeln; {menu of border generation numbers} write('border of range random numbers low and high range '); readln(range1,range2); {reading range of filling} until(range1<range2); {low range must be less than high one} for i:=1 to n do {randoming number from [range1;range2] } begin a[i]:=random(range2-range1+1)+range1; {randoming values of a array} b[i]:=random(range2-range1+1)+range1; {randoming values of b array} end; {end of for} writeln; end {end of if} else begin write('Array A: '); {user’s inputing numbers from keyboard} for i:=1 to n do {circle of reading a array values} read(a[i]); writeln; write('Array B: '); {user’s inputing numbers from keyboard} for i:=1 to n do {circle of reading b array values} read(b[i]); writeln; end; {end of else} writeln; end; {end of Input} {-------------------Max Element Position---------------------} function MaxElemPos(masiv:mas;n:integer):integer; {definition of maxcimal element of c array} {masiv – array in which is finding max element, n – number of elements in masiv} var maxpos:integer; {counter of max position} max:real; {maximum number in array} begin max:=masiv[1]; {take first element of array as max} maxpos:=1; {position of max element is 1} for i:=2 to n do {circle for finding max element of array} if(max<masiv[i]) then {compare current array element with max value} begin max:=masiv[i]; {remember max element} maxpos:=i; {remember position of this max element} end; {end of if} MaxElemPos:=maxpos; {value of function} end; {end of MaxElemPos} {------------------Calculation с array----------------------} procedure Calculation(masiv1:mas;masiv2:mas; var arr:mas); {masiv1, masiv 2 – arrays for calculation arr elements} var maxp:integer; {position of max element} begin for i:=1 to n do {circle for calculation arr} begin if masiv1[i]<>masiv2[i] then {condition 1} arr[i]:=1/(masiv1[i]-masiv2[i]) {expression 1} else c[i]:=1; {expression 2} end; {end of for} writeln; Browse(arr,'c'); {Outout с array} maxp:=MaxElemPos(arr,n); {uses function MaxElemPos to get position of max element in arr array with n elements} writeln('Max element of array c is ',arr[maxp]:4:2,' that is in ',maxp,' position '); {change places max element of array and last element of it} tmp:=arr[maxp]; {temp variable for saving max element’s value} arr[maxp]:=arr[n]; {rewrite last element in max element position} arr[n]:=tmp; {write max element in last position} end; {end of Calculation} {-------------------Main program---------------------} begin randomize; {for generation random numbers} Input; {Input data} Browse(a,'a'); {display array1, a – variable mas type} Browse(b,'b'); {display array2, b – variable mas type} Calculation(a,b,c); {formation с array, a, b – arraies used for calculation с array elements} writeln('After change last and max element of array'); Browse(c,'c'); {display changed c array} writeln; readln; end. {end of program}
5. Screen Shot результатів
6. Аналіз роботи Як ми бачимо зі ScreenShot’ів, ми ввели 3 варіанти даних. Введення кількості елементів масиву, при умові n<=10. Завдання елементів масиву може здійснюватися генерацією випадкових чисел та введення користувачем значень з клавіатури. 1. При генерації випадкових чисел необхідно задати їх діапазон. Якщо діапазон 3 та 12, отримуємо масиви а та b, а також обчислений масив с з максимальним елементом 1.00, що є другим елементом. Після обміну місцями максимального та останнього елемента маємо змінений масив с. 2. Здійснений захист від вводу неможливої кількості елементів масиву(0<n<=10). При введенні чисел з клавіатури максимальний елемент знаходиться у 3 позиції, тобто третій елемент міняється місцями з останнім та отримуємо остаточну відповідь. 3. Здійснене зациклення програми при введенні діапазону, перша границя не є меншою за другу, а також можливість введення чисел або з клавіатури, або генерацією випадкових чисел.
|