Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д