Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы