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



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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

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

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

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