• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите Решить Задачку

  • Автор темы Parenek
  • Дата начала
P

Parenek

Здравствуйте! Передо мной встал вопрос о решении задачи в системе VBA. Но возникли трудности, я попросту не знаю как написать код и блок схему.

Условие таковы:
По результатам продажи жилья за полгода администрацией области получена следующая информация:

Город: Кемерово
Кол-во проданных квартир: 634
Кол-во кв.м: 62800
Сумма от продажи (тыс.руб) - 6781.70

Напечатать исходные данные в виде таблицы и определить город, в котором стоимость 1 кв.метра минимальная.

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

Добавлено через 15 часов 19 минут
вот есть скрипт

Код:
Sub Пример()
Dim N, i As Integer
Dim G() As String
Dim P() As Integer
Dim K() As Single
Dim S() As Single
Dim Sr() As Single
N = InputBox("количество обследуемых городов")
ReDim G(N) As String
ReDim P(N) As Integer
ReDim K(N) As Single
ReDim S(N) As Single
ReDim Sr(N) As Single
For i = 1 To N
G(i) = InputBox("название города")
P(i) = InputBox("количество проданных квартир в")
K(i) = InputBox("количество кв. м.")
S(i) = InputBox("Введите стоимость 1 кв.м в городе")
Next
For i = 1 To N
Next
Debug.Print "город"; Tab(30); "количество проданных квартир"; Tab(50); "количество кв. м."; Tab(70); "Стоимость 1 кв.м"
For i = 1 To N
Debug.Print G(i); Tab(30); P(i); Tab(50); K(i); Tab(70); S(i)
Next
End Sub

Вот мне нужно сделать так, чтобы ниже таблицы выводилась самое маленькое значение S(i), а рядом название города. Подскажите пожалуйста как это реализовать!?
 
N

nayke

гуглите нахождение минимального элемента массива на vb
 
P

Parenek

ну найти на нашел,

Код:
Dim a(10) As Integer ' Описываем массив из 10 элементов
Dim min As Integer ' min - это минимальное число массива

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i = 1 To 10
a(i) = Fix(Rnd() * 100) ' Задаем массив случайным образом, числами от 1 до 99
Next

min = 9999999 ' Значение min должно быть максимально возможным
For i = 1 To 10
If a(i) < min Then min = a(i) ' Сравниваем каждый элемент массива с min. Если он меньше, то min равен данному элементу
Next

MsgBox("Минимум равен: " & min) ' Выводим сообщение с минимальным числом
End Sub
End Class
но проблема в том как связать это все с моим условием. и правильно ли оно вообще :(
Не могли бы Вы показать примерною структуру?
 
P

Parenek

сПАСИБО)))))
Очень помогли!
И еще такой вопросик, как посчитать общую сумму столбца в VBA

Вот есть скрипт.
Но он неправильный. Т.е нужно посчтитать общую сумму в столбце Количество видов. Переменная G(i)

Код:
Sub Пример()
Dim N, i As Integer
Dim G() As Integer
Dim P() As Integer
Dim Z() As String
Dim R() As String
Dim O() As Single
Dim Oi() As Single
N = InputBox("кол-во наименований товара")
ReDim G(N) As Integer
ReDim P(N) As Integer
ReDim Z(N) As String
ReDim R(N) As String
ReDim O(N) As Single
ReDim Oi(N) As Single
For i = 1 To N
Z(i) = InputBox("название")
G(i) = InputBox("кол-во видов")
P(i) = InputBox("импортируемых")
Next
For i = 1 To N
Oi(i) = G(i)
Oi(i) = P(i) + P(i)
Next
Debug.Print "товар"; Tab(30); "кол-во видов"; Tab(50); "импортируемых"
For i = 1 To N
Debug.Print Z(i); Tab(30); G(i); Tab(50); P(i)
Next
For i = 1 To 1
Debug.Print "Общая сумма столбца", O(i)
Next
End Sub
Помогите пожалуйста... С меня пивко))
 
H

hosm

просто просуммировать и вывести сумму можно так
Код:
Dim Sum as Integer
Sum = 0
For i = 1 To N
Sum = Sum + G(i) 
Next
Debug.Print "Общая сумма столбца", Sum
Если есть подозрение, что в Sum as Integer может переполнение, напишите Dim Sum As Single
Еще вот это непонятно что делает:
Код:
For i = 1 To N
Oi(i) = G(i)
Oi(i) = P(i) + P(i)
Next
там опечатка, что ли?
И не надо вообще циклов писать таких - смешно же
Код:
For i = 1 To 1
Debug.Print "Общая сумма столбца", O(i)
Next
 
P

Parenek

Вот вывел как вы показали

Код:
Dim Sum As Integer
Sum = 0
For i = 1 To N
Sum = Sum + G(i)
Next
For i = 1 To N
Z(i) = InputBox("название товара")
G(i) = InputBox("количество видов")
P(i) = InputBox("из них импортых")
Next
Debug.Print "товар"; Tab(30); "количество видов"; Tab(50); "из них ипортных"
For i = 1 To N
Debug.Print Z(i); Tab(30); G(i); Tab(50); P(i)
Next
Debug.Print "Общая сумма столбца", Sum
End Sub

Но пи выводе просто выводит :

Общая сумма столбца 0

Хотя указывал значения G(I) 25 и 23

В чем ошибочка? Мож не туда вставил?
 
H

hosm

да, не туда :) это круто - сумму считать до того, как вводим значения (для справки - вводится в цикле тут: G(i) = InputBox("количество видов") )
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!