Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции - VB

Узнай цену своей работы

Формулировка задачи:

Имеется список 60-ти зданий города, подлежащих реконструкции. Сведения о каждом здании содержат название микрорайона, улицу, номер дома и год постройки. Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции. Сформировать списки, содержащие полные сведения об этих домах по микрорайонам. Если в микрорайоне таких домов нет, выдать соответствующее сообщение. реализация проекта: со стандартным модулем и двумя формами и вводом с клавиатуры, Помогите или посоветуйте как сделать а то, даже плана решения нет

Решение задачи: «Составить алгоритм и программу определения самых старых зданий, подлежащих реконструкции»

textual
Листинг программы
  1. Option Explicit On
  2. Imports System.IO
  3. Module Module1
  4.     Public A() As String 'массив из текстового файла
  5.     Public MicroRayon(), nMicroRayon(), Ulica() As String
  6.     Public God(), Ndoma() As Integer
  7.     Public n As Integer = -1
  8.     Public Result As String
  9.  
  10.     'Процедура вывода строки
  11.     Sub vivod(ByVal M() As String, ByVal Lb As ListBox, ByVal k As Integer)
  12.         Dim i As Integer
  13.         For i = 0 To k
  14.             Lb.Items.Add(M(i))
  15.         Next i
  16.     End Sub
  17.  
  18.     'процедура вывода строки , состоящей из целых чисел
  19.     Sub vivodInt(ByVal M() As Integer, ByVal Lb As ListBox, ByVal k As Integer)
  20.         Dim i As Integer
  21.         For i = 0 To k
  22.             Lb.Items.Add(M(i))
  23.         Next i
  24.     End Sub
  25.  
  26.     'процедура вывода списков, содержащие сведения о домах  
  27.     Sub vivod(ByVal Z As String, ByVal T As TextBox)
  28.         T.Text = CStr(Z)
  29.     End Sub
  30.  
  31.     'процедура чтения из файла
  32.     Sub readfile(ByRef M() As String)
  33.         Dim OpenFiledialog1 As New OpenFileDialog
  34.         OpenFiledialog1.InitialDirectory = "C:\"
  35.         OpenFiledialog1.Filter = "Текстовые файлы (*.txt)|*.txt"
  36.         If OpenFiledialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  37.             Try
  38.                 FileOpen(1, OpenFiledialog1.FileName, OpenMode.Input)
  39.                 Do Until EOF(1)
  40.                     n = n + 1
  41.                     ReDim Preserve A(n)
  42.                     A(n) = LineInput(1)
  43.                 Loop
  44.             Catch ex As Exception
  45.                 MsgBox("Ошибка при чтении")
  46.             Finally
  47.                 FileClose(1)
  48.             End Try
  49.         End If
  50.     End Sub
  51.  
  52.     'процедура распределения частей строки из файла по Listbox
  53.     Sub sp(ByRef M() As String, ByRef MicroRayon() As String, ByRef Ulica() As String, _
  54.            ByRef Ndoma() As Integer, ByRef God() As Integer)
  55.         Dim i As Integer
  56.         Dim sved() As String
  57.         For i = 0 To n
  58.             sved = M(i).Split(CChar(","))
  59.             MicroRayon(i) = sved(0)
  60.             Ulica(i) = sved(1)
  61.             Ndoma(i) = CInt(sved(2))
  62.             God(i) = CInt(sved(3))
  63.         Next i
  64.     End Sub
  65.  
  66.     'процедура сравнивающая микрорайоны
  67.     Sub unical(ByRef MicroRayon() As String, ByRef sved() As String)
  68.         Dim i, j, f, k As Integer
  69.         k = 0
  70.         nMicroRayon(k) = MicroRayon(0)
  71.         For i = 0 To UBound(MicroRayon) 'Цикл формирует массив MicroRayon(), который
  72.             'будет содержать уникальные названия районов (если какое-либо название будет
  73.             'повторятся, то в массив записыватся уже не будет).
  74.             f = 0
  75.             For j = 0 To k
  76.                 If MicroRayon(i) = nMicroRayon(j) Then ' MicroRayon(i)- строка, содержащая
  77.                     'название текущего  района.
  78.                     f = 1
  79.                     Exit For
  80.                 End If
  81.             Next j
  82.             If f = 0 Then 'Название не повторяется, тогда:
  83.                 k = k + 1
  84.                 nMicroRayon(k) = MicroRayon(i)
  85.             End If
  86.         Next i
  87.         ReDim Preserve nMicroRayon(k)
  88.     End Sub
  89.  
  90.     Sub Resh(ByRef MicroRayon() As String, ByRef Ulica() As String, ByRef Ndoma() As Integer, ByRef God() As Integer, _
  91.              ByRef nMicroRayon() As String, ByRef Result As String)
  92.         Dim mingod, j, k, i As Integer
  93.         Result = ""
  94.         For i = 0 To k
  95.             mingod = 2015
  96.             Result = Result + nMicroRayon(i) + ":" + vbNewLine ' Строка Result поочередно
  97.             'присваивается район
  98.             For j = 0 To UBound(MicroRayon)
  99.                 If nMicroRayon(i) = MicroRayon(j) Then
  100.                     If God(j) < mingod Then ' если год 2015 больше года сооружения,
  101.                         'то запоминает год сооружения, далее сравнивает последующие
  102.                         'года сооружения пока не выведет самые старые.
  103.                         mingod = God(j)
  104.                         k = j
  105.                     End If
  106. Result = Result + Ulica(j) + "," + CStr(Ndoma(j)) + "," + CStr(God(j)) + vbNewLine
  107.             'если названия j-го района совпадает с названием в ячейке MicroRayon(i), строка Result
  108.             'построчно запоминает сведения о зданиях в этом районе (улицу, номер дома, год сооружения).
  109.                 End If
  110.             Next j
  111.            
  112.         Next i
  113.     End Sub
  114. End Module
  115.  
  116. Public Class Form1
  117.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  118.         readfile(A)
  119.         ReDim MicroRayon(n), Ulica(n), Ndoma(n), God(n)
  120.         sp(A, MicroRayon, Ulica, Ndoma, God) 'вызов процедуры распределения частей строки из файла по Listbox
  121.         vivod(MicroRayon, ListBox1, n)
  122.         vivod(Ulica, ListBox2, n)
  123.         vivodInt(Ndoma, ListBox3, n)
  124.         vivodInt(God, ListBox4, n)
  125.     End Sub
  126.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  127.         Form2.Show() ' показывается форма 2
  128.         Me.Hide() ' закрывается форма1
  129.     End Sub
  130.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  131.         End
  132.     End Sub
  133. End Class
  134.  
  135. Public Class Form2
  136.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  137.         ReDim nMicroRayon(n)
  138.         unical(MicroRayon, nMicroRayon)
  139.         Resh(MicroRayon, Ulica, Ndoma, God, nMicroRayon, Result)
  140.         vivod(Result, TextBox1)
  141.     End Sub
  142.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  143.         Form1.Show() 'показывается форма 1
  144.         Me.Close() 'закрывается форма 2
  145.     End Sub
  146.  
  147.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  148.         End
  149.     End Sub
  150. End Class

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


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

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

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы