Формування квадратної матриці

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    6,69 Кб
  • Опубликовано:
    2013-01-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Формування квадратної матриці

МІНІСТЕРСТВО ТРАНСПОРТУ ТА ЗВЯЗКУ УКРАЇНИ

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ УНІВЕРСИТЕТ

ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ

КАФЕДРА

ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ






КУРСОВА РОБОТА

З дисципліни «Інформатика».

Варіант81

Зміст

1. Завдання на курсову роботу

. Базова програма реалізації алгоритму

. Модуль глобальних описів

. Сервісний модуль обслуговування матриці

. Головна програма

. Результати роботи програми

. Використована література

1. Завдання на курсову роботу

Загальне завдання на курсову роботу

1. По функції f(і,j), що задана, необхідно сформувати квадратну матрицю А = {aij}, i,j = 1,2,...,..., т, де аij =f(i,j). (Для демонстрації т =5.)

.Після чого із цієї матриці відповідно до заданого алгоритму необхідно отримати компоненти вектора X = {хi}, і = 1,2,..., п.

. Після отримання компонентів вектора X обчислити значення функції U.

Індивідуальне завдання (Варіант №22)

1. Функція f(i,j)= 2( - 2)i- 3,9)(-1,5)i-j(і/З - 1,1).

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

. За U взяти суму найбільшого та найменшого елементів вектору X, якщо с<b, в іншому випадку за U взяти добуток першого та останнього елементів.

2. Базова програма реалізації алгоритму

Program Golovna; {Програма утворення квадратної матриці по функції A[i,j], вектора X та обчислення значення U

Uses Crt; {Використовуваний бібліотечний модуль}

Const Len=15; {опис постійної, найбільша розмірність матриці та вектора}

Туре=array[l..Len,l..Len] of real; {Користувацький тип mtr}

mas=array[l..Len] of real; {Користувацький тип mas} Vаr{перелік використаних змінних та їх типів}

i,j,n:integer; {параметри циклу і розмірності}

a:mtr; {двохмірний масив}

x:mas; {одномірний масив X}

adr:integer; {змінна, передбачена для фіксування в ній адреси першого за порядком стовпця матриці з найменшою сумою елементів.}

max:real; {передбачена для фіксування в ній найбільшого значення елемента стовпчика з адресою adr.}

am:integer; {змінна, в котрій будемо фіксувати адресу найбільшого елемента стовпчика матриці з адресою adr.}

suml,sum2:real; {Змінна sum1 - передбачена для накопичення суми елементів стовпчика матриці з адресою adr. Змінна sum2 - передбачена для накопичення в ній суми елементів стовпчика з адресою j. Значення змінної adr завжди буде дорівнювати адресі першого за порядком стовпчика матриці з найменшою сумою його елементів}

min:real; {робоча змінна}

r: real; {робоча змінна}

c,b:integer;

u:real; {змінна для обчислення значення функції}

BEGIN{початок програми}

CIrscr; {функція котра перед кожним запуском програми очищає екран виведення результату}

writeln ('Vvedite razmernost matrix A: n'); {виведення повідомлення}

write ('n='); {виведення повідомлення} read (n); {введення розмірності матриці}

For i:=1 to n do {зовнішній цикл перебігу матриці по рядках}

For j := 1 to n do begin {вкладений цикл перебігу рядка поелементно}

{write('a[',i,',',j,']=');read(a[i,j]);} {якщо прийняти фігурні дужки і взяти у фігурні дужки вираз для формування елемента матриці - отримаємо тест програму}

if і mod 2=1 then r:=-exp(i*ln(2)) else r:=exp(i*ln(2)); (i-j)mod 2=1 then

a[i,j]:=-exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-l.l) {утворення елемента матриці}

else

a[i,j]:=exp((i-j)*In(1.5))*2*r*(i-3.9)*(i/3-l.1); {утворення елемента матриці}

end;

Clrscr;

writeln('----Matrica----'); {виведення повідомлення}

For i:= 1 to n do begin {цикл виведення елементів матриці на екран}

For j:= 1 to n do

write('A[',i,j,']=',a[i,j] :6:3,' '); {виведення елемента матриці на екран}

writeln; {виведення порожнього рядка з метою відділити виведену інформацію}

writeln;;;

writeln('----Vector----') ; {виведення повідомлення}

adr:=1; {надаємо змінній adr :=1 початкового значення. Змінна передбачена для фіксування в ній адреси першого за порядком стовпця матриці з найменшою сумою елементів. Таким чином, надаючи їй значення 1, припускаємо що перший стовпець має найменшу суму елементів}

For j:= 2 to n do begin {цикл перебігу матриці по стовпцям. Значення змінної j буде вказувати адресу стовпчика, що перевіряється. Змінна приймає значення від 2 до п.}

sum1:=0;sum2:=0; {початок перевірки кожного нового стовпчика матриці, тобто після кожної зміни значення j змінним sum1: =0;sum2:=0; max:=a[1,adr];am:=1 надаємо початкових значень}

max:=a[1,adr];am:=1;

For i:= 1 to n do begin {цикл перебігу j- го стовпчика поелементно, в якому відбувається утворення сум елементів стовпчиків}

sum1:=sum1+a[i,adr]; {sum1- сума елементів стовпчика матриці з адресою adr }

sum2:=sum2+a[i,j]; {sum2 - сума елементів j-го стовпчика матриці}

max:=a[i,adr];

am:=i;

end;end;

ifsuml>sum2 {відбувається порівняння значень сум}

then adr:=j; {фіксуємо адресу стовпчика матриці з найменшою сумою елементів}

end;i:= 1 to n do begin {цикл в котрому відбувається утворення та виведення елементів вектора}

if am mod 2=1 { перевіряємо, чи є адреса найбільшого елемента, першого за порядком стовпчика матриці, непарною }

then x[i]:=a[n+l-i,adr]f {якщо так то елемент вектора утворюється в результаті взяття цього стовпчика за елементи вектора у зворотному порядку}

else х[і]:=а[і,і]+а[і,п+1-і]; {якщо адреса найбільшого елемента буде парною, то елемент вектора буде утворюватися в результаті суми відповідних елементів головної та допоміжної діагоналі матриці}

writeln('х[,і,]=',х[і]:5:3); {виведення щойно утвореного елемента вектора}

end;

writeln('--------Funkciy--------');

write('c='); {виведення повідомлення} read(c); {введення номера заліковки та номера за списком у групі}

write('b='); {виведення повідомлення} read(b);

mах:=х[1];min:=х[1]; {Змінні тах:=х[1];тіп:=х[1] отримують значення першого елемента вектора}

if с<b {порівняння значень змінних с та b} then begіп {якщо c<b то програма прямує до циклу перебігу вектора поелементно, в його тілі відбувається знаходження найбільшого та найменшого елементів вектора. По закінченню перебігу цього циклу відбувається утворення значення функції в результаті суми знайдених значень найбільшого та найменшого елементів вектора}

For i:= 1 to n do beginmax<x[i] then max:=x[i];min>x[i] then min:=x[i];;:=max+min endU:=x[l]*x[n]; {якщо c>=b то значення функції буде утворено в результаті добутку першого та останнього елементів вектора}

writeln('U=',U:5:3); {виведення значення функції на екран}

repeat until keypressed; .

вектор квадратний матриця алгоритм

3. Модуль глобальних описів

Global; =10;=array [l..len,l..len] of real;=array[l..len] of real;.

4. Сервісний модуль обслуговування матриці

MODUL22;global;CreateMatrix(n:byte; var M:Tmatr);OutputMatrix(n:byte; var M:Tmatr);OutputVector(n:byte; V:TVect);і,j: integer;CreateMatrix;і,j: integer;: real; і:= 1 to n do beginj:=1 to n do begin

{write('a[',i,',,j,'] = ') ; read(m[i,j]) ;} і mod 2=1 then r:=-exp(i*ln(2)) else r:=exp(i*ln(2)); (i-j)mod 2=1 then [i,j]:=-exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-l.l) [i,j]:=exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-1.1)/ ;;end;OutputMatrix;;

writeln('_____Elementu Matricu______');

for і:=1 to n do

begin j:=1 to n do(M[i,j]:10:3,' '); ; ; ; ;OutputVector;;

writeln ('______Elementu Vektora______') ;

for і:=1 to n do

writeln('x[',i,']=',V[i]:5:3);

writeln;

end; .

. Головна програма

Program moduli;crt, global,MODUL22;:Tvect; :Tmatr;

і ,j,n: integer; : integer; : real; : integer; ,sum2: real; : real; : real;

с, b: integer; : real; ;('n=');read(n) ; (n,A); (n,A); :=1; j:= 2 to n do begin :=0;sum2:=0; :=a[1,adr];am:=1; і:= 1 to n do begin :=suml+a[i,adr]; :=sum2+a[і,j]; max<a[i,adr] then begin :=a[i,adr]; :=i ; ;end;suml>sum2 then adr:=j; ; і:= 1 to n do begin am mod 2=1x[i]:=a[n+l-i,adr] x[i]:=a[i,i]+a[i,n+l-i]; ; (n,x);

writeln ('-----Funkciy-----') ;

write ('c=') ;read(c) ; ('b=');read(b); :=x[1];min:=x[1]; c<b then begin і:= 1 to n do begin max<x[i] then max:=x[i]; min>x[i] then min:=x[i]; ;:=max+min end U:=x[l]*x[n];

writeln('U=',U:5:3);until keypressed; .

6. Результати роботи програми

при n=5 і при однаковому форматі виведення для всіх чотирьох видів даних a[i,j]:5:3;

Матриця - 5x5

а[11]= -8.893 а[12]= -5.929 а[13]= -3.953 а[14]= -2.635 а[15]= -1.757

а[21]= -9.880 а[22]= 6.587 а[23]= 4.391 а[24]= 2.927 а[25]= 1.952

а[31]= -3.240 а[32]= 2.160 а[33]= -1.440 а[34]= -0.960 а[35]= -0.640

а[41]= -2.520 а[42]= 1.680 а[43]= -1.120 а[44]= 0.747 а[45]= 0.498

а[51]= -201.960 а[52]= 134.640 а[53]= -89.760 а[54]= 59.840 а[55]= -39.893

Вектор

Адреса стовпця adr=lАдреса найбільшого елемента аm=4

х[1]=-10.650

х[2]=9.514

х[3]=-2.880

х[4]=2.427

х[5]=-241.853

Функція С=4 В=3=2S75.748

Результати ручних розрахунків співпадають з програмними, що свідчить про правильність роботи програми.

Тест матриця

Умова виконується

Матриця - 5x5

а[11]=7.000 а[12]=6.000 а[13]=4.000 а[14]=3.000 а[15]=-2.000

а[21]=1.000 а[22]=0.000 а[23]=-9.000 а[24']=7. 000 а[25]=8.000

а[31]=6.000 а[32]=-4.000 а[33]=-4.000 а[34]=3.000 а[35]=2.000

а[41]=1.000 а[42]=9.000 а[43]=-1.000 а[44]=2.000 а[45]=-4.000

а[51]=5.000 а[52]=8.000 а[53]=7.000 а[54]=6.000 а[55]=-5.000

Вектор

Адреса стовпця adr=3 Адреса найбільшого елемента am=5

х[1]=7.000

х[2]=-1.000

х[3]=-4.000

х[5]=4.000

Функція С=9 В=2=28.000

Умова не виконується

Матриця - 5x5

а[11]=1.000 а[12]=6.000 а[13]=4.000 а[14]=2.000 а[15]=3.000

а[21]=7.000 а[22]=9.000 а[23]=1.000 а[24]=4.000 а[25]=3.000

а[31]=2.000 а[32]=7.000 а[33]=-1.000 а[34]=7.000 а[35]=9.000

а[41]=2.000 а[42]=0.000 а[43]=6.000 а[44]=-8.000 а[45]=5.000

а[51]=2.000 а[52]=7.000 а[53]=1.000 а[54]=8.000 а[55]=7.000

Вектор

Адреса стовпця adr=3 Адреса найбільшого елемента аm=4

х[1]=4.000

х[2]=13.000

х[3]=-2.000

х[4]=-8.000

х[5]=9.000

Функція С=22 В=6=36.000

7. Використана література

  1. Ф.Б. Бартків, Я.Т. Гринчишин, A.M. Ломакович, Ю.С. Рамский. TURBO PASCAL: Алгоритми и програми. Київ, «Вища школа».
  2. Ю.С. Бородич, А.Н. Вальвачев, Ф.И. Кузьмич. Паскаль для персональных компьютеров. Минск,"Вышэйшая школа", БФ ГИТМП "НИКА", .
  3. А. И. Марченко, Л. М. Марченко. Программирование в среде TURBO Pascal 7.0. Киев "ВЕК+", Москва "ДЕСС".
  4. Д.Б. Поляков, И.Ю. Круглов. Программирование в среде Турбо Паскаль, Москва , МАИ, А/О "РОСВУЗНАУКА".

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!