Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Решение задач


Автор: kill bill 10.5.2005, 19:34
Всем привет. Требуется решить 9 простых задач(основы VB). За все правильно решенные задачи заплачу 2$(webmoney)
ICQ# 700502

Автор: cardinal 10.5.2005, 20:37
Вываливай smile

Автор: Voldemar2004 11.5.2005, 17:38
Цитата

Требуется решить 9 простых задач(основы VB).


Ну если задачи простые, то давай. smile
А вообще деньги предлагать, чтобы помочь (и грех)- и похоже на взятку, пусть даже если взятка тремя литрами Кефира. smile

Автор: Гость_Run-time Error 13.5.2005, 15:57
Давай за бесплатно решим smile
На форум клади smile

Автор: Катькин 14.5.2005, 15:13
Ребят, помогите пожалуйста! Задачи-элемнтарные! Рещения-ещё проще! Но я абсолютно ничего в этом не понимаю... smile. Поможете,а?
"Дана матрица X(n,m) целых чисел. Возвесьти её во вторую степень. Вывести исходную и получившиеся матрицы."
"Определить наибольший и наименьший элементы массива Х(n), вывести эти элементы, их порядковые номера и весь массив."
"Получены результаты выборов в гордуму: по каждому из k округов известно число голосовавших за представителей каждой из М партий, а также - число неучаствующих в голосовании. Выборы в округе считаются состоявшимися, если в голосовании принимоло участие не менее Р процентов избирателей. Определить, в каких округах был высший процент голосовавших избирателей и номера партий, получивших наибольшее число голосов в округах, где выборы считаются состоявшимися.
(Значения буквенных переменных задавать с клавиатуры)"

Автор: Voldemar2004 14.5.2005, 19:37
Цитата

"Определить наибольший и наименьший элементы массива Х(n), вывести эти элементы, их порядковые номера и весь массив."


Код

Option Explicit
Private Sub Command1_Click()
Dim I As Integer
Dim list(4) As Long
Dim min As Integer
Dim max As Integer

For I = 0 To 4
list(I) = InputBox("")
Print "Порядковый номер: "; I; list(I) ' вывести эти элементы, их порядковые номера и весь массив.
Next I

I = 0
min = list(0)
max = list(4)
For I = 0 To 4
    
    Do
    If list(I) < min Then min = list(I)
    If list(I) > max Then max = list(I)
    I = I + 1
    Loop While I < 4
    
MsgBox ("Самое маленькое из этих 5-ти чисел = ") & min ' наименьший
MsgBox ("Самое большое из этих 5-ти чисел = ") & max ' наибольший

Next I

End Sub


Вот так? smile
Только не ругайте и никому не показывайте smile

Автор: Катькин 14.5.2005, 20:48
ДА ты чего? Какое ругать???? smile ОГРОМНОЕ-ПРЕОГРОМНОЕ ПАСИБА!!!! Ты жутко меня выручил! smile. Чмоки!

Автор: Voldemar2004 15.5.2005, 12:56
Цитата

"Дана матрица X(n,m) целых чисел. Возвесьти её во вторую степень. Вывести исходную и получившиеся матрицы."


Код

Option Explicit
Dim i As Integer, j As Integer


Private Sub Command1_Click()
Dim Matrix(4, 4) As Integer

Print

For i = 0 To 4
    For j = 0 To 4
    Matrix(i, j) = Int(Rnd * 10)
    Print " "; Matrix(i, j);
    Next j
    Print
Next i

Print

For i = 0 To 4
    For j = 0 To 4
    Print " "; Matrix(i, j) ^ 2;
    Next j
    Print
Next i
    
End Sub


С тебя Кефир, студент (я пиво не пью). smile

В третью задачу я че-то не въеду, пусть эксперты решат. smile

Автор: cardinal 15.5.2005, 14:01
Voldemar2004, Randomize забыл smile

Автор: Voldemar2004 15.5.2005, 16:15
Цитата

Voldemar2004, Randomize забыл


Где забыл?

Код

Matrix(i, j) = Int(Rnd * 10)


Здесь что-ли?
Так все ж работает, я показал пример, а числа так путь Катькин cам вставляет которые ему нужны. smile

Автор: cardinal 15.5.2005, 17:29
Не, я просто имел в виду, что надо ИМХО для тестирования всегда добавлять Randomize Statement по причине того, что
Цитата
If Randomize is not used, the Rnd function (with no arguments) uses the same number as a seed the first time it is called, and thereafter uses the last generated number as a seed value.

То есть можно не заметить ошибку в коде именно из-за того, что у тебя каждый раз будет одна и та же последовательность "случ. чисел" и ты будешь думать, что все работает. А на самом деле при других числах может произойти ошибка.

Автор: Voldemar2004 15.5.2005, 18:02
Цитата

та же последовательность "случ. чисел" и ты будешь думать, что все работает


Как реализуется случайность чисел я знаю на примере C++, а вот как в VB? По-моему C++ гораздо лучше справляется с этой проблемой.
З.Ы. А вообще случайные числа хорошо получаются на примере программ, защищенных про принципу KeyGen'а.

Автор: cardinal 15.5.2005, 20:41
Я пока не понял, понял ли ты что я хочу всем этим сказать поэтому еще раз с примером.
Код

Option Explicit

Private Sub Command1_Click()
MsgBox Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10)
End Sub

Если ты запустишь прогу два раза подряд, то ты получишь один и тот же результат.
А теперь пробуем так:
Код

Option Explicit

Private Sub Command1_Click()
Randomize
MsgBox Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10) & Int(Rnd * 10)
End Sub

Автор: Voldemar2004 16.5.2005, 10:06
Ты вот так хотел, чтоб было cardinal

Код

Option Explicit
Dim i As Integer, j As Integer

Private Sub Command1_Click()
Dim Matrix(4, 4) As Integer

Print

For i = 0 To 4
    For j = 0 To 4
    Randomize 'каждый раз новый результат
    Matrix(i, j) = Int(Rnd * 10)
    Print "  "; Matrix(i, j);
    Next j
    Print
Next i

Print

For i = 0 To 4
    For j = 0 To 4
    Print "  "; Matrix(i, j) ^ 2;
    Next j
    Print
Next i

End Sub

Автор: Black_Star 16.5.2005, 13:45
Код

Private Type sc
    Golos As Long
    NoGolos As Long
End Type
Private Type sc2
    Proc As Double
    Number As Long
End Type
Private Sub Command1_Click()
Dim MM() As sc
Dim M As Long, K As Long
Dim i As Long, j As Long
Dim P As Long
K = 5 'Кол. округов
M = 10 'Кол. кондидатов
P = 75 'Процент состоявшихся выборов
ReDim MM(1 To K, 1 To M)

Randomize Time

For i = 1 To K
For j = 1 To M
        'Автоматическое заполнение.
MM(i, j).Golos = Rnd * 10000
MM(i, j).NoGolos = Rnd * 10000
        'Ручное заполнение
'MM(i, j).Golos = InputBox("Введите кол. голосовавших за " & j & _
    "ю партию " & i & "го округа: ")
'MM(i, j).Golos = InputBox("Введите кол. не голосовавших за " & j & _
    "ю партию " & i & "го округа: ")
Next j, i

Dim e As Double
Dim Win() As sc2
Dim Kf As Long
Kf = 100    'К-т округления
ReDim Win(1 To K)

For i = 1 To K
Win(i).Proc = 0
For j = 1 To M
e = MM(i, j).Golos / (MM(i, j).Golos + MM(i, j).NoGolos) * 100
If e > Win(i).Proc Then
    Win(i).Proc = Int(e * Kf) / Kf
    Win(i).Number = j
End If
Next j, i

For i = 1 To K
If Win(i).Proc >= P Then
    Print "В " & i & "м округе выборы состоялись (" & Win(i).Proc & "%)"
    Print "Победила партия № " & Win(i).Number
Else
    Print "В " & i & "м округе выборы не состоялись (" & Win(i).Proc & "%)"
End If
Next i

End Sub




Вот и 3я задачка... smile

Автор: cardinal 16.5.2005, 16:51
Voldemar2004, Randomize достаточно один раз написать...

Автор: Anhost 17.5.2005, 14:19
Я обычно в Form_Load пишу Randomize(Timer) и всё.
Числа всегда случайные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)