Задача по пиис на Иван Петров Иванов студент от специалност Геодезия, I курс, 3 група, ф. №5555



Дата23.03.2017
Размер38.51 Kb.
#17582
ТипЗадача


УНИВЕРСИТЕТ ПО АРХИТЕКТУРА, СТРОИТЕЛСТВО и ГЕОДЕЗИЯ

КАТЕДРА „АВТОМАТИЗАЦИЯ НА ИНЖЕНЕРНИЯ ТРУД”

__________________________________________________________________________________________

КУРСОВА ЗАДАЧА

по ПИИС

на Иван Петров Иванов



студент от специалност Геодезия, I курс,

3 група, ф. № 5555

Дата: ..................... Проверил: .........................

/гл. ас. д-р арх. Стоянка Иванова/

Условие:

Дадена е матрица Х с М реда и N стълба, съставена от реални елементи, записани в текстов файл. Матрицата да се прочете от файла и да се изведе в Sheet1.

4.1. Да се разменят съответните елементи от първия и последния ред на матрицата.

4.2. Да се разменят съответните елементи от първия и последния стълб на матрицата.

Получената матрица да се изведе в Sheet2.

' Първи етап – цялата задача в една процедура

Option Explicit

Sub Matrix()

Dim X() As Double

Dim M As Integer, N As Integer

Dim i As Integer, j As Integer

' зареждане на данни от Excel -> Sheet1

Dim W As Worksheet

Set W = Application.Worksheets("Sheet1") ' така може да се избират различни страници

W.Activate

' въвеждане на брой редове

Do

M = InputBox("M=")



Loop Until M > 1 And M <= 10

' въвеждане на брой стълбове

Do

N = InputBox("N=")



Loop Until N > 1 And N <= 10

' предеклариране на масива за матрицата

ReDim X(1 To M, 1 To N)

For i = 1 To M

For j = 1 To N

X(i, j) = W.Cells(i, j)

Next

Next


Dim T As Double

' размяна на съдържанието на ред 1 и ред M

For j = 1 To N

T = X(1, j): X(1, j) = X(M, j): X(M, j) = T

Next j

' размяна на съдържанието на стълб 1 и стълб N



For i = 1 To M

T = X(i, 1): X(i, 1) = X(i, N): X(i, N) = T

Next i

' извеждане на матрицата в Sheet2



Set W = Application.Worksheets("Sheet2") ' така може да се избират различни страници

W.Activate

For i = 1 To M

For j = 1 To N

W.Cells(i, j) = X(i, j)

Next


Next

End Sub


' Втори етап – използване на процедури и функции

Option Explicit

' Чете матрица от зададена страница на Ексел

Private Sub InputMatrix(SheetStr$, X, M As Integer, N As Integer)

Dim i%, j%

For i = 1 To M

For j = 1 To N

X(i, j) = Worksheets(SheetStr).Cells(i, j)

Next j

Next i


End Sub

' Показва матрица в зададена страница на Ексел

Private Sub DisplayMatrix(SheetStr$, X, M As Integer, N As Integer)

Dim i%, j%

For i = 1 To M

For j = 1 To N

Worksheets(SheetStr).Cells(i, j) = X(i, j)

Next j


Next i

End Sub


' Разменя елементите на ред i1 и ред i2

Private Sub Exchange_Rows(X, N As Integer, ByVal i1 As Integer, ByVal i2 As Integer)

Dim j%, T As Double

For j = 1 To N

T = X(i1, j): X(i1, j) = X(i2, j): X(i2, j) = T

Next j


End Sub

' Разменя елементите на стълб j1 и стълб j2

Private Sub Exchange_Columns(X, M As Integer, ByVal j1 As Integer, ByVal j2 As Integer)

Dim i%, T As Double

For i = 1 To M

T = X(i, j1): X(i, j1) = X(i, j2): X(i, j2) = T

Next i

End Sub


' Главна процедура

Sub Main()

Dim i%, j%, M%, N%

Dim X() As Double

Do

M = InputBox("M=")



Loop Until M > 1 And M <= 8

Do

N = InputBox("N=")



Loop Until N > 1 And N <= 8

ReDim X(1 To M, 1 To N)

Call InputMatrix("Sheet1", X, M, N)

Call Exchange_Rows(X, N, 1, M)

Call Exchange_Columns(X, M, 1, N)

Call DisplayMatrix("Sheet2", X, M, N)

End Sub

' Трети етап – използване на функции и файлове

Option Explicit

' Чете матрица от файл

Private Sub ReadMatrix(X, M As Integer, N As Integer)

Dim i%, j%

Dim Fname As String

Fname = InputBox("Въведете име на файла:")

Open Fname For Input As #1

Input #1, M, N

ReDim X(1 To M, 1 To N)

For i = 1 To M

For j = 1 To N

Input #1, X(i, j)

Next j


Next i

Close #1


End Sub

' Показва прочетената от файла матрица в зададена страница на Ексел

Private Sub DisplayMatrix(SheetStr$, X, M As Integer, N As Integer)

Dim i%, j%

For i = 1 To M

For j = 1 To N

Worksheets(SheetStr).Cells(i, j) = X(i, j)

Next j


Next i

End Sub


' Разменя елементите на ред i1 и ред i2

Private Sub Exchange_Rows(X, N As Integer, ByVal i1 As Integer, ByVal i2 As Integer)

Dim j%, T As Double

For j = 1 To N

T = X(i1, j): X(i1, j) = X(i2, j): X(i2, j) = T

Next j


End Sub

' Разменя елементите на стълб j1 и стълб j2

Private Sub Exchange_Columns(X, M As Integer, ByVal j1 As Integer, ByVal j2 As Integer)

Dim i%, T As Double

For i = 1 To M

T = X(i, j1): X(i, j1) = X(i, j2): X(i, j2) = T

Next i

End Sub


' Главна процедура

Sub Main()

Dim i%, j%, M%, N%

Dim X() As Double

Call ReadMatrix(X, M, N)

Call DisplayMatrix("Sheet1", X, M, N)

Call Exchange_Rows(X, N, 1, M)

Call Exchange_Columns(X, M, 1, N)

Call DisplayMatrix("Sheet2", X, M, N)

End Sub


Файл с входни данни: d:\matrix.txt

4 4


1 2 3 4

5 6 7 8


9 10 11 12

13 14 15 16

Входни данни за матрицата в Sheet1:

1 2 3 4


5 6 7 8

9 10 11 12

13 14 15 16

Резултати в Sheet2:

16 14 15 13

8 6 7 5


12 10 11 9

4 2 3 1



Каталог: filebank
filebank -> Тема на дипломната работа
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> 1 3 в е к а б ъ л г а р и я“ Утвърдил
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Зимна сесия – уч. 2015– 2016 г. Начало на изпитите 00 ч. Теоретична механика ІІ ч. Динамика
filebank -> Упражнение №1
filebank -> О т ч е т на проф. Д-р инж. Борислав маринов – декан на геодезическия факултет при уасг пред общото събрание на факултета
filebank -> Техническа механика
filebank -> Дати за поправителната сесия септември 2013 г катедра “Техническа механика”


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница