Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Обчислення массиву Calculation






4. Код програми:

Program lab2_2;

type arr=array [1..10,1..10] of real; {new array type}

var mas:arr; {variables array type}

n, {number of lines}

m, {number of columns}

i,j, {counters}

imax,jmax:integer; {position of maximum number in array}

max:real; {maximum number in array}

flag:boolean; {flagok for incorrect value}

{------------------Browse----------------------}

procedure Browse(mas:arr;n,m:integer); {display array}

{mas – array arr type, n- number of lines, m – number of colomn}

begin

for i:=1 to n do {circle for lines}

begin

for j:=1 to m do {circle for column}

write(mas[i,j]:6:2,' '); {input array element}

writeln; {outputting as a matrix}

end; {end of for}

writeln;

end; {end of Browse}

{------------------Input Array------------------}

procedure InputArr(var masiv:arr;var n,m:integer); {entering of array}

{mas – array arr type, n- number of lines, m – number of colomn}

var key:char; {user answer}

range1,range2:integer; {range of values array elements}

begin

writeln;

writeln('Result of lab2_2');

writeln('Variant 5, made by Znakhurenko Viktoriya');

writeln('mas[1..n,1..m].'); {entering capacity of array}

repeat {do while positive number}

write('Enter number of lines in array <=10 '); {entering lines in array}

readln(n); {input number of lines}

until (n>0) and (n<=10); {circle by entering correct value}

repeat {do while positive number}

write('Enter number of colunms in array <=10 '); {entering columns in array}

readln(m); {input number of column}

until (m>0) and (m<=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}

repeat {do while entering range is corrrect}

writeln;

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 {circle for lines}

for j:=1 to m do {circle for column}

masiv[i,j]:=random(range2-range1+1)+range1; {randomind number from [range1;range2] }

end {end of if}

else {keyboard entry}

begin

write('Array mas: '); {users inputing numbers from keyboard}

for i:=1 to n do {circle for lines}

begin

for j:=1 to m do {circle for column}

read(masiv[i,j]); {reading current element}

writeln; {outputting as a matrix}

end; {end of for}

writeln;

end; {end of else}

writeln;

end; {end of InputArr}

{----------------Maximal Element Position---------------------------}

procedure MaxElemPos(var imax,jmax:integer;mas:arr;n,m:integer);

{mas – array arr type, n- number of lines, m – number of column,

imax – line index of maximal element, jmax – column index of maximal element}

var max:real; {maximum element}

begin

imax:=1; {init line index}

jmax:=1; {init column index}

max:=mas[imax,jmax]; {take first element as maximal}

{definition of max element of c array}

for i:=1 to n do {circle for lines}

for j:=1 to m do {circle for column}

if(max<abs(mas[i,j])) then {current element is bigger than max}

begin

max:=abs(mas[i,j]); {remember current element as max}

imax:=i; {index of current line}

jmax:=j; {index of current column}

end; {end of if}

end; {end of MaxElemPos }

{-------------Exchange---------------------}

procedure Exchange(var mas:arr; n,m:integer;max:real);{change diagonal elements on maximum}

{mas – array arr type, n- number of lines, m – number of column}

begin

for i:=1 to n do {circle }

mas[i,i]:=max; {exchange diagonal elements}

end;

{-------------Calculation-----------------------}

procedure Calculation(var mas:arr;n,m:integer);

{mas – array arr type, n- number of lines, m – number of column}

begin

MaxElemPos(imax,jmax,mas,n,m); {maximum element of array}

max:=abs(mas[imax,jmax]); {remember max element}

writeln('Max element is ',max:6:2,' in [ ',imax,', ',jmax,' ] position');

if (max<>0) then {check by correct values}

for i:=1 to n do {circle for lines}

for j:=1 to m {circle for column}do

mas[i,j]:=mas[i,j]/max {calculation elements}

else {division by zero}

begin

writeln('error division by zero!');

flag:=false; {change flagok division by zero}

end; {end of else}

Browse(mas,n,m); {Output array}

Exchange(mas,n,m,max); {changing diagonal elements}

end; {end of Calculation }

{----------------Main program------------------}

begin

flag:=true; {init flagok not division by zero}

randomize; {for generation random numbers}

InputArr(mas,n,m); {entering array}

Browse(mas,n,m); {display array}

Calculation(mas,n,m); {formation new array}

if(flag=true)then {condition not division by zero}

Browse(mas,n,m); {Output array}

writeln;

readln;

end. {end of program}


 

5. Screen Shot результатів

 

6. Аналіз роботи

Як ми бачимо зі ScreenShot’ів, ми ввели 3 варіанти даних.

Введення кількості рядків та стовпчиків масиву, при умові n<=10. Завдання елементів масиву може здійснюватися генерацією випадкових чисел та самостійно користувачем.

1. При виборі першого типу введення, користувач вводить матрицю з клавіатури.

2. При генерації випадкових чисел необхідно задати їх діапазон. Якщо діапазон 5 та 10 чи -10 та 20, отримуємо масиви матрицю, знаходимо максимальний за модулем елемент, а також обчислюємо масив шляхом ділення на цей елемент, якщо він не дорівнює нулю. Заміна елементів головної діагоналі на цей елемент.

Здійснене зациклення програми при введенні діапазону, перша границя не є меншою за другу, а також можливість введення чисел або з клавіатури, або генерацією випадкових чисел.

 







Дата добавления: 2015-09-04; просмотров: 392. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия