Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции - VB
Формулировка задачи:
Имеется список 60-ти зданий города, подлежащих реконструкции. Сведения о каждом здании содержат название микрорайона, улицу, номер дома и год постройки. Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции. Сформировать списки, содержащие полные сведения об этих домах по микрорайонам. Если в микрорайоне таких домов нет, выдать соответствующее сообщение.
реализация проекта: со стандартным модулем и двумя формами и вводом с клавиатуры,
Помогите или посоветуйте как сделать а то, даже плана решения нет
Решение задачи: «Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции»
textual
Листинг программы
- Option Explicit On
- Imports System.IO
- Module Module1
- Public A() As String 'массив из текстового файла
- Public MicroRayon(), nMicroRayon(), Ulica() As String
- Public God(), Ndoma() As Integer
- Public n As Integer = -1
- Public Result As String
- 'Процедура вывода строки
- Sub vivod(ByVal M() As String, ByVal Lb As ListBox, ByVal k As Integer)
- Dim i As Integer
- For i = 0 To k
- Lb.Items.Add(M(i))
- Next i
- End Sub
- 'процедура вывода строки , состоящей из целых чисел
- Sub vivodInt(ByVal M() As Integer, ByVal Lb As ListBox, ByVal k As Integer)
- Dim i As Integer
- For i = 0 To k
- Lb.Items.Add(M(i))
- Next i
- End Sub
- 'процедура вывода списков, содержащие сведения о домах
- Sub vivod(ByVal Z As String, ByVal T As TextBox)
- T.Text = CStr(Z)
- End Sub
- 'процедура чтения из файла
- Sub readfile(ByRef M() As String)
- Dim OpenFiledialog1 As New OpenFileDialog
- OpenFiledialog1.InitialDirectory = "C:\"
- OpenFiledialog1.Filter = "Текстовые файлы (*.txt)|*.txt"
- If OpenFiledialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
- Try
- FileOpen(1, OpenFiledialog1.FileName, OpenMode.Input)
- Do Until EOF(1)
- n = n + 1
- ReDim Preserve A(n)
- A(n) = LineInput(1)
- Loop
- Catch ex As Exception
- MsgBox("Ошибка при чтении")
- Finally
- FileClose(1)
- End Try
- End If
- End Sub
- 'процедура распределения частей строки из файла по Listbox
- Sub sp(ByRef M() As String, ByRef MicroRayon() As String, ByRef Ulica() As String, _
- ByRef Ndoma() As Integer, ByRef God() As Integer)
- Dim i As Integer
- Dim sved() As String
- For i = 0 To n
- sved = M(i).Split(CChar(","))
- MicroRayon(i) = sved(0)
- Ulica(i) = sved(1)
- Ndoma(i) = CInt(sved(2))
- God(i) = CInt(sved(3))
- Next i
- End Sub
- 'процедура сравнивающая микрорайоны
- Sub unical(ByRef MicroRayon() As String, ByRef sved() As String)
- Dim i, j, f, k As Integer
- k = 0
- nMicroRayon(k) = MicroRayon(0)
- For i = 0 To UBound(MicroRayon) 'Цикл формирует массив MicroRayon(), который
- 'будет содержать уникальные названия районов (если какое-либо название будет
- 'повторятся, то в массив записыватся уже не будет).
- f = 0
- For j = 0 To k
- If MicroRayon(i) = nMicroRayon(j) Then ' MicroRayon(i)- строка, содержащая
- 'название текущего района.
- f = 1
- Exit For
- End If
- Next j
- If f = 0 Then 'Название не повторяется, тогда:
- k = k + 1
- nMicroRayon(k) = MicroRayon(i)
- End If
- Next i
- ReDim Preserve nMicroRayon(k)
- End Sub
- Sub Resh(ByRef MicroRayon() As String, ByRef Ulica() As String, ByRef Ndoma() As Integer, ByRef God() As Integer, _
- ByRef nMicroRayon() As String, ByRef Result As String)
- Dim mingod, j, k, i As Integer
- Result = ""
- For i = 0 To k
- mingod = 2015
- Result = Result + nMicroRayon(i) + ":" + vbNewLine ' Строка Result поочередно
- 'присваивается район
- For j = 0 To UBound(MicroRayon)
- If nMicroRayon(i) = MicroRayon(j) Then
- If God(j) < mingod Then ' если год 2015 больше года сооружения,
- 'то запоминает год сооружения, далее сравнивает последующие
- 'года сооружения пока не выведет самые старые.
- mingod = God(j)
- k = j
- End If
- Result = Result + Ulica(j) + "," + CStr(Ndoma(j)) + "," + CStr(God(j)) + vbNewLine
- 'если названия j-го района совпадает с названием в ячейке MicroRayon(i), строка Result
- 'построчно запоминает сведения о зданиях в этом районе (улицу, номер дома, год сооружения).
- End If
- Next j
- Next i
- End Sub
- End Module
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- readfile(A)
- ReDim MicroRayon(n), Ulica(n), Ndoma(n), God(n)
- sp(A, MicroRayon, Ulica, Ndoma, God) 'вызов процедуры распределения частей строки из файла по Listbox
- vivod(MicroRayon, ListBox1, n)
- vivod(Ulica, ListBox2, n)
- vivodInt(Ndoma, ListBox3, n)
- vivodInt(God, ListBox4, n)
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Form2.Show() ' показывается форма 2
- Me.Hide() ' закрывается форма1
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- End
- End Sub
- End Class
- Public Class Form2
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ReDim nMicroRayon(n)
- unical(MicroRayon, nMicroRayon)
- Resh(MicroRayon, Ulica, Ndoma, God, nMicroRayon, Result)
- vivod(Result, TextBox1)
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Form1.Show() 'показывается форма 1
- Me.Close() 'закрывается форма 2
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- End
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д