Розробка програми

Формування квадратної матриці відповідно до заданого алгоритму через отримання компонентів вектора. Розробка та опис базової програми реалізації алгоритму. Представлення модулів глобальних описів та обслуговування матриці. Результати роботи програми.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык украинский
Дата добавления 13.07.2017
Размер файла 19,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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

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

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

1.Функціяf(i,j)=2j-1(|j - 3| -1,3)Log3 ((|j-5| +|( 6,5 - j )|)).

2. Компоненти вектораX - середнє арифметичні значення елементів i-х стовпців матриці, в рядках якої від'ємні елементи переставлені до начала, а додатні - після них.

3.

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

ProgramKursovaya_rabota;

Uses

Crt; {Підключаємо бібліотечний модуль}

Label G;

ConstLen=100;

Type

mtr=array[1..Len,1..Len] of real; {Власнийтипmtr}

mas=array[1..Len] of real; {Власнийтип mas}

Varm,n:byte; {Робочізмінні : параметрирозмірності}

i,j:byte; {Параметрициклів}

b,c:real; {Довільнізмінні(дляфункції)}

u:real; {Ім'яфункції}

z:byte;{Робочазмінна}

k:byte; {Змінна,яказапам'ятовуєкількістьвід'ємнихелементівматриці,якіпереставляютьсявперед}

q:real;{Робочазмнна}

p:byte;{Робочазмінна}

x:mas; {МасивХ}

a:mtr; {МатрицяА}

BEGIN

ClrScr;

Writeln('Введите значенние "c" и "b" : ');

Write('c = ');

readln(c);

Write('b = ');

readln(b);

ClrScr;

Writeln('Как вы желаете ввести элементы матрицы?');

Writeln('Если автоматически-введите "1" ,если с клавиатуры - введите "0": ');

readln(z);

ClrScr;

Ifz=1 then{Якщозмінна z=1,тоелементиматриціобрахуються за формулою}

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(m);

write('n = ');

readln(n);

ClrScr;

fori:=1 to m do {Зовнішнійциклпорядкам}

begin

forj:=1 to ndo {Внутрішнійциклпостовбцям}

a[i,j]:=(exp((j-1)*ln(2)))*(abs((j-3))-1.3)*((ln((ABS(j-5))+(ABS(6.5-j))))/(ln(3)));

end;

end

else

ifz=0 then {Якщозмінна z=0,тоелементиматрицівводятьсявручну}

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(m);

write('n = ');

readln(n);

ClrScr;

writeln(' Введите элементы матрицы "A" : ');

writeln;

fori:=1 to m do

begin

forj:=1 to ndo

readln(a[i,j]); {Вводимо елементи матриці з клавіатури}

end;

ClrScr;

end

elsegotoG; {Якщо введена цифра не дорівнює 1 або 0, то виконується перехід на мітку G}

writeln(' Матрица "A" : ');

writeln;

fori:=1 to m do

begin

For j:=1 to ndo

write('a[',i,',',j,']=',a[i,j]:6:3,' '); {Виводимо матрицюА}

writeln;

end;

For i:=1 to m do

begin

k:=0;

For j:=1 to ndo

Ifa[i,j]<0 then {Якщо елемент від'ємний}

begin

k:=k+1; {Рахуємо к-сть від'ємних елементів, які переставлятимуться наперед}

q:=a[i,j]; {Запам'ятовуємо від'ємний елемент}

Forp:=j downtok+1 do{Здвигаємо елементи починаючи з j вліво до k+1}

a[i,p]:=a[i,p-1];

a[i,k]:=q; {Намісце k ставимо число нового стовбця}

end;

end;

Writeln;

Writeln(' Матрица "A"(перестановка) : ');

Writeln;

fori:=1 to m do

begin

forj:=1 to ndo

write('a[',i,',',j,']=',a[i,j]:6:3,' '); {Виводимо матрицю А}

writeln;

end;

forj:=1 to ndo

x[j]:=0; {Ініціюємо одномірний масив Х}

fori:=1 to m do

begin

forj:=1 to ndo

x[j]:=x[j]+a[i,j]; {Знаходимо суму елементів кожного стовбця матриці,кожнасума-одинелемент масиву}

end;

Writeln;

Writeln(' Вектор "Х" : ');

Writeln;

For j:=1 to ndo

begin

x[j]:=x[j]/m; {Знаходимо середнє значення кожного стовбця матриці}

Write('x[',j,']=',x[j]:5:3,' '); {Виводимо масив Х}

end;

Writeln;

u:=0;

For i:=1 to ndo

Ifc>=bthen{Задаємоумову,прописанувзавданні}

u:=u+(abs(x[i])-1) {Обраховуємозначенняфункціїпривиконаннізаданоїумови}

elseu:=u+sqr(x[i]); {Обраховуємозначенняфункціїприневиконаннізаданоїумови}

Write(' Функция U=f(x[i]) : ');

Writeln;

Writeln('u = ',u:3:3); {Виводимозначенняфунції}

Writeln;

G: Repeat UntilKeyPressed;

END.

ПРОГРАМАЗВИКОРИСТАННЯМПРОЦЕДУР

Program Proc_Kursova;

Uses Crt; {Підключаємобібліотечниймодуль}

Label G;

ConstLen=100;

Type

mtr=array[1..Len,1..Len] of real; {Власнийтипmtr}

mas=array[1..Len] of real;{Власнийтип mas}

Varm,n:byte; {Робочізмінні : параметрирозмірності}

i,j:byte; {Параметрициклів}

b,c:real;{Довільнізмінні(дляфункції)}

u:real; {Ім'яфункції}

k:byte;{Робочазмінна}

q:real;{Робочазмінна}

p:byte; {Робочазмінна}

z:byte; {Робочазмінна}

x:mas; {МасивХ}

a:mtr; {МатрицяА}

Procedure Viv_m(h,v:byte; Vars:mtr);

ConstLen=100;

Vari,j:byte;

Begin

writeln(' Матрица "A" : ');

writeln;

fori:=1 to h do

begin

forj:=1 to v do

write('a[',i,',',j,']=',s[i,j]:6:3,' ');

writeln;

end;

end;

BEGIN

ClrScr;

Writeln('Введите значенние "c" и "b" : ');

Write('c = ');

readln(c);

Write('b = ');

readln(b);

ClrScr;

Writeln('Как вы желаете ввести элементы матрицы?');

Writeln('Если автоматически - введите "1" , если с клавиатуры - введите "0": ');

readln(z);

ClrScr;

Ifz=1 then{Якщозмінна z=1,тоелементиматриціобрахуються за формулою}

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(m);

write('n = ');

readln(n);

ClrScr;

fori:=1 to m do

begin

forj:=1 to ndo

a[i,j]:=(exp((j-1)*ln(2)))*(abs((j-3))-1.3)*((ln((ABS(j-5))+(ABS(6.5-j))))/(ln(3)));

end;

end

else

ifz=0 then

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(m);

write('n = ');

readln(n);

ClrScr;

writeln(' Введите элементы матрицы "A" : ');

writeln;

fori:=1 to m do

begin

forj:=1 to ndo

readln(a[i,j]);

end;

ClrScr;

end

elsegotoG;

Viv_m(m,n,a); {Оператор процедурививодуматриці}

fori:=1 to m do

begin

k:=0;

forj:=1 to ndo

ifa[i,j]<0 then {Якщоелементвід'ємний}

begin

k:=k+1; {Рахуємо к-стьвід'ємнихелементів,якіпереставлятимуться наперед}

q:=a[i,j]; {Запам'ятовуємовід'ємнийелемент}

forp:=j downtok+1 do{Здвигаємоелементипочинаючи з j вліво до k+1}

a[i,p]:=a[i,p-1];

a[i,k]:=q; {Намісце k ставимочислоновогостовбця}

end;

end;

Writeln;

Viv_m(m,n,a); {Оператор процедурививодуматриці}

forj:=1 ton do

x[j]:=0; {Ініціюємоодномірниймасив Х}

fori:=1 to m do

begin

for j:=1 to ndo

x[j]:=x[j]+a[i,j]; {Знаходимосумуелементівкожногостовбцяматриці,кожнасума-одинелементмасиву}

end;

writeln;

Writeln(' Вектор "Х" : ');

writeln;

forj:=1 to ndo

begin

x[j]:=x[j]/m;

write('x[',j,']=',x[j]:5:3,' ');

end;

Writeln;

u:=0;

fori:=1 to ndo

ifc>=b then u:=u+(abs(x[i])-1)

elseu:=u+sqr(x[i]);

Writeln;

Write(' Функция U=f(x[i]) : ');

Writeln;

Writeln;

Writeln('u = ',u:3:2);

writeln;

G:

Repeat Until KeyPressed;

END.

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

UnitGlob;

Interface

ConstLen=100;

Type

Matrix:array[1..Len,1..Len] of real;

Masiv:array[1..Len] of real;

End.

Модуль обслуговування матриці

Unit Service;

Interface

Uses Crt,Glob;

Procedure Vivod_mtr(st,sb:byte; Vars:Matrix);

Procedure Rezmernost(Varst,sb:byte);

implementation

Procedure Vivod_mtr(st,sb:byte; Vars:Matrix);

Vari,j:byte;

begin

fori:=1 to stdo

begin

forj:=1 to sbdo

write('a[',i,',',j,']=',s[i,j]:6:3,' ');

writeln;

end;

end;

Procedure Rezmernost(Varst,sb:byte);

begin

Writeln('Введите размерность матрицы [m x n] :');

Write('m = ');

readln(st);

write('n = ');

readln(sb);

ClrScr;

end;

End.

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

Program Kursovaya_rabota;

Uses

Crt,Glob,Service;

Label G;

Varm,n:byte;

i,j:byte;

b,c:real;

u:real;

z:byte;

k:byte;

q:real;

p:byte;

x:masiv;

a:matrix;

BEGIN

ClrScr;

Writeln('Введитезначенние "c" и "b" : ');

Write('c = ');

readln(c);

Write('b = ');

readln(b);

ClrScr;

Writeln('Как вы желаете ввести элементы матрицы?');

Writeln('Если автоматически-введите "1" ,если с клавиатуры-введите "0": ');

readln(z);

ClrScr;

If z=1 then

begin

Rezmernost(m,n);

fori:=1 to m do

begin

forj:=1 to ndo

a[i,j]:=(exp((j-1)*ln(2)))*(abs((j-3))-1.3)*((ln((ABS(j-5))+(ABS(6.5-j))))/(ln(3)));

end;

end

else

ifz=0 then

begin

Rezmernost(m,n);

writeln(' Введитеэлементыматрицы "A" : ');

writeln;

fori:=1 to m do

begin

forj:=1 to ndo

readln(a[i,j]);

end;

ClrScr;

endelse gotoG;

writeln(' Матрица "A" : ');

writeln;

Vivod_Mtr(m,n,a);

fori:=1 to m do

begin

k:=0;

forj:=1 to ndo if a[i,j]<0 then

begin

k:=k+1;

q:=a[i,j];

forp:=j downtok+1 do

a[i,p]:=a[i,p-1];

a[i,k]:=q;

end;

end;

Writeln;

Writeln(' Матрица "А" (перестановка):');

Writeln;

Vivod_Mtr(m,n,a);

forj:=1 to ndo

x[j]:=0;

fori:=1 to m do

begin

forj:=1 to ndo

x[j]:=x[j]+a[i,j];

end;

writeln;

Writeln(' Вектор "Х" : ');

writeln;

forj:=1 to ndo

begin

x[j]:=x[j]/m;

write('x[',j,']=',x[j]:5:3,' ');

end;

Writeln;

u:=0;

fori:=1 to ndo

if(c>b) or (c=b) then

u:=u+(abs(x[i])-1) else u:=u+sqr(x[i]);

Writeln;

Write(' Функция U=f(x[i]) : ');

Writeln;

Writeln('u = ',u:3:3);

writeln;

G: Repeat UntilKeyPressed;

END.

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

При m=n=3 і при однаковому форматі виведення для всіх видів даних a[i,j]:6:3; При с=6,b=3. Введення за формулою.

Вихіднаматриця

a[1,1]=1.434 a[1,2]= -1.100a[1,3]=-8.069

a[2,1]=1.434 a[2,2]=-1.100 a[2,3]= -8.069

a[3,1]=1.434 a[3,2]= -1.100a[3,3]= -8.069

Матриця з перестановкою від'ємних елементів

a[1,1]= -1.100a[1,2]= -8.069 a[1,3]= 1.434

a[2,1]= -1.100a[2,2]= -8.069 a[2,3]= 1.434

a[3,1]= -1.100a[3,2]= -8.069a[3,3]= 1.434

МасивХ

x[1]= -1.100x[2]= -8.069x[3]= 1.434

Значення функції: U= 7.604

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

Размещено на Allbest.ru


Подобные документы

  • Отримання компонентів вектора із квадратної матриці відповідно до заданого алгоритму. Обчислення значення функції. Базова програма реалізації алгоритму. Модуль глобальних описів. Сервісний модуль обслуговування матриці. Результати роботи програми.

    курсовая работа [19,5 K], добавлен 30.01.2013

  • Формування квадратної транспонованої матриці, отримання з неї компонентів вектора та обчислення значення функції в мові Pascal. Базова програма реалізації алгоритму. Сервісний модуль обслуговування матриці. Головна програма та результати її роботи.

    курсовая работа [40,2 K], добавлен 10.03.2011

  • Призначення драйверів та порядок роботи з драйверами в MS-DOS. Розробка драйверів консолі. Структура драйвера та призначення компонентів. Розробка структури алгоритму, програми налагодження драйвера. Опис змінних програми та роботи модулів програми.

    курсовая работа [1,0 M], добавлен 22.06.2012

  • Загальна характеристика програмного продукту Турбо Паскаль 7.0, його структура та функції. Методика та головні етапи формування квадратної матриці по заданій формулі. Розробка та лістинг отриманої програми. Аналіз результатів виконання програми.

    контрольная работа [145,0 K], добавлен 04.11.2013

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадратної матриці згідно заданного алгоритму. Бібліотека візуальних компонентів і середовище програмування.

    курсовая работа [451,5 K], добавлен 15.01.2012

  • Основні відомості з лінійної алгебри. Власні значення і вектори матриці. Метод обертання Якобі. Засоби формування інтерфейсу користувача. Текст програми алгоритму методу обертання Якобі. Вимоги до програмно-технічного забезпечення. Інструкція користувача.

    курсовая работа [306,0 K], добавлен 18.11.2015

  • Теоретичні відомості про язик С++. Розробка програми, що виконує основні арифметичні дії над простими та складними числами на язику С++. Опис алгоритму програми та її код. Інструкція по користуванню. Обгрунтовування вибору та складу технічних засобів.

    курсовая работа [852,8 K], добавлен 30.11.2011

  • Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.

    курсовая работа [762,8 K], добавлен 03.05.2015

  • Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.

    курсовая работа [1,2 M], добавлен 26.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.