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

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

Обчислення массиву 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; просмотров: 370. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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