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



Дата23.03.2017
Размер52.74 Kb.


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

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

__________________________________________________________________________________________

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

по ПИИС

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



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

3 група, ф. № 5555

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

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

Условие:

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

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

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

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

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

Module Module1

Sub Main()

Dim X(,) As Double

Dim M As Integer, N As Integer

Dim i As Integer, j As Integer

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

Do

Console.Write("M=")



M = Console.ReadLine()

Loop Until M > 1

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

Do

Console.Write("N=")



N = Console.ReadLine()

Loop Until N > 1

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

ReDim X(M, N)

For i = 0 To M-1

For j = 0 To N-1

Console.Write("X(" & i & "," & j & ")=")

X(i, j) = Console.ReadLine()

Next

Next


Dim T As Double

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

For j = 0 To N-1

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

Next j

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



For i = 0 To M-1

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

Next i

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



For i = 0 To M-1

For j = 0 To N-1

Console.WriteLine("X(" & i & "," & j & ")=" & X(i,j))

Next


Next

Console.ReadKey()

End Sub

End Module1



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

Module Module1

' Процедурата чете матрица от клавиатурата

Private Sub InputMatrix(ByVal name$, ByRef X(,) As Double, ByVal M As Integer, ByVal N As Integer)

Dim i As Integer, j As Integer

For i = 0 To M-1

For j = 0 To N-1

Console.Write(name & "(" & i & "," & j & ")=")

X(i, j) = Console.ReadLine()

Next j


Next i

End Sub


' Процедурата показва матрица на екрана

Private Sub DisplayMatrix(ByVal name$, ByVal X(,) As Double, ByVal M As Integer, ByVal N As Integer)

Dim i As Integer, j As Integer

For i = 0 To M-1

For j = 0 To N-1

Console.WriteLine(name & "(" & i & "," & j & ")=" & X(i, j))

Next j

Next i


End Sub

' Процедурата разменя елементите на ред i1 и ред i2

Private Sub Exchange_Rows(ByRef X(,) As Double, ByVal N As Integer, _

ByVal i1 As Integer, ByVal i2 As Integer)

Dim j As Integer, T As Double

For j = 0 To N-1

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

Next j


End Sub

' Процедурата разменя елементите на стълб j1 и стълб j2

Private Sub Exchange_Columns(ByRef X(,) As Double, ByVal M As Integer, _

ByVal j1 As Integer, ByVal j2 As Integer)

Dim i as Integer, T As Double

For i = 0 To M-1

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

Next i


End Sub

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

Sub Main()

Dim M As Integer, N As Integer

Dim i As Integer, j As Integer

Dim X(,) As Double

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

Do

Console.Write("M=")



M = Console.ReadLine()

Loop Until M > 1

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

Do

Console.Write("N=")



N = Console.ReadLine()

Loop Until N > 1

ReDim X(M, N)

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

Call Exchange_Rows(X, N, 0, M-1)

Call Exchange_Columns(X, M, 0, N-1)

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

Console.ReadKey()

End Sub

End Module1



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

Module Module1


Private Sub Load_Matrix(ByVal filename$, ByRef A(,) As Double, _

ByRef M As Integer, ByRef N As Integer)

Dim F1 As Short

F1 = FreeFile()

FileOpen(F1, filename, OpenMode.Input)

Input(F1, M)

Input(F1, N)

ReDim X(M, N)


Dim i, j As Integer

For i = 0 To M - 1

For j = 0 To N - 1

Input(F1, A(i, j))

Next j

Next


FileClose(F1)

End Sub
' Процедурата показва матрица на екрана

Private Sub DisplayMatrix(ByVal name$, ByVal X(,) As Double, _

ByVal M As Integer, ByVal N As Integer)

Dim i As Integer, j As Integer

For i = 0 To M - 1

For j = 0 To N - 1

Console.WriteLine(name & "(" & i & "," & j & ")=" & X(i, j))

Next j

Next i


End Sub
Private Sub Save_Matrix(ByVal filename$, ByVal X(,) As Double, _

ByVal M As Integer, ByVal N As Integer)

Dim F1 As Short

F1 = FreeFile()

FileOpen(F1, filename, OpenMode.Output)

PrintLine(F1, M, N)

Dim i, j As Integer

For i = 0 To M - 1

For j = 0 To N - 1

Print(F1, X(i, j))

Next j

PrintLine(F1)



Next

FileClose(F1)

End Sub

' Процедурата разменя елементите на ред i1 и ред i2



Private Sub Exchange_Rows(ByRef X(,) As Double, ByVal N As Integer, _

ByVal i1 As Integer, ByVal i2 As Integer)

Dim j As Integer, T As Double

For j = 0 To N - 1

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

Next j


End Sub
' Процедурата разменя елементите на стълб j1 и стълб j2

Private Sub Exchange_Columns(ByRef X(,) As Double, ByVal M As Integer, _

ByVal j1 As Integer, ByVal j2 As Integer)
Dim i As Integer, T As Double

For i = 0 To M - 1

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

Next i


End Sub

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

Sub Main()

Dim M As Integer, N As Integer

Dim X(,) As Double
Call Load_Matrix("D:\Temp\MyData1.txt", X, M, N)

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


Call Exchange_Rows(X, N, 0, M - 1)

Call Exchange_Columns(X, M, 0, N - 1)


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

Call Save_Matrix("D:\Temp\MyData2.txt", X, M, N)


Console.ReadKey()

End Sub


End Module

Файл с входни данни: D:\Temp\MyData1.txt

4 4

1 2 3 4


5 6 7 8

9 10 11 12

13 14 15 16

Резултати във файл: D:\Temp\MyData2.txt

16 14 15 13

8 6 7 5


12 10 11 9

4 2 3 1




База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

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