Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Moryarty
Статус: Студент
Рейтинг: 268
∙ повысить рейтинг >>
Шичко Игорь
Статус: Практикант
Рейтинг: 178
∙ повысить рейтинг >>
6a3uJI
Статус: 6-й класс
Рейтинг: 69
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 837
от 09.12.2008, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 260, Экспертов: 30
В номере:Вопросов: 2, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 152752: Здравствуйте, Эксперты! Помогите, пожалуйста, с решением задачи: По условию дан одномерный массив. Нужно подсчитать сколько чисел, больших среднего арифметического всех членов массива, а также удалить из последовательности нулевые элементы. <b...


Вопрос № 152775: Здравствуйте!Помогите, пожалуйста, с задачей:"Дан двумерный массив.Нужно определить в каком из столбцов число перемен знака наибольшее".Возникают сложности с составлением условия....

Вопрос № 152.752
Здравствуйте, Эксперты!
Помогите, пожалуйста, с решением задачи: По условию дан одномерный массив. Нужно подсчитать сколько чисел, больших среднего арифметического всех членов массива, а также удалить из последовательности нулевые элементы.

Код:

Sub Ex11()
Dim A(1 To 20) As Integer, m() As Integer
Dim i As Integer, j As Integer, B As Integer, S As Integer, l As Integer, p As Integer, sum As Integer, ñðåäíÿÿ As Integer
Worksheets("Лист1").Select

Randomize
For i = 1 To 20
A(i) = Int(Rnd * 100 - 50): Cells(5, i) = A(i)
Next i

sum = 0
For i = 1 To 20
sum = sum + A(i)
Next i
For i = 1 To 20
средняя = sum / 20
Next i
Cells(7, 1) = "Среднее арифметич еское всех чисел массива=" & средняя
For i = 1 To 20
If A(i) > средняя Then p = p + 1
Next i
Cells(8, 1) = "Количество чисел больших среднего арифметического=" & p
S = 0
For i = 1 To 20
If A(i) = 0 Then S = S + 1
Next i
l = 20 - S
ReDim m(1 To l)
j = 1
For i = 1 To 20
If A(i) <> 0 Then
m(j) = A(i)
j = j + 1
End If
Next i
For i = 1 To 20
Cells(10, i) = m(i)
Next i



Вопрос такой: как можно сделать так, чтобы датчик случайных чисел выдавал хотя бы 2 нулевых элемента? Если вводить с клавиатуры командой Input, то все хорошо получается, но нужно использовать датчик случайных чисел...
Отправлен: 03.12.2008, 13:49
Вопрос задала: Amidala (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 6a3uJI
Здравствуйте, Amidala!

Sub Ex11()
Dim A(1 To 20) As Integer, m() As Integer
Dim i, j, B, S, l, p, sum As Integer
Dim SrAr As Double
Worksheets("Лист1").Select
Cells.Select
Selection.ClearContents

Randomize
SrAr = 0
S = 0
For i = 1 To 20
A(i) = Int(Rnd * 10)
Cells(5, i) = A(i)
SrAr = SrAr + A(i)
If A(i) = 0 Then S = S + 1
Next i
SrAr = SrAr / 20
sum = 0

Cells(7, 1) = "Среднее арифметическое=" & SrAr
p = 0
For i = 1 To 20
If A(i) > SrAr Then p = p + 1
Next i
Cells(8, 1) = "Кол-во чисел больших среднего арифметического=" & p

l = 20 - S
ReDim m(1 To l)
j = 1
For i = 1 To 20
If A(i) <> 0 Then
m(j) = A(i)
j = j + 1
End If
Next i
For i = 1 To l
Cells(10, i) = m(i)
Next i
End Sub
Ответ отправил: 6a3uJI (статус: 6-й класс)
Ответ отправлен: 03.12.2008, 14:11

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 237497 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо!)


    Вопрос № 152.775
    Здравствуйте!Помогите, пожалуйста, с задачей:"Дан двумерный массив.Нужно определить в каком из столбцов число перемен знака наибольшее".Возникают сложности с составлением условия.

    Приложение:

    Отправлен: 03.12.2008, 15:24
    Вопрос задал: Kirill11 (статус: Посетитель)
    Всего ответов: 3
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: 6a3uJI
    Здравствуйте, Kirill11!
    Вот код, начало твое:

    Sub e2()
    Dim x() As Integer, n As Byte, m As Byte, i As Byte, j As Byte, t As Byte
    Dim znak As Boolean ' true - плюс, false - минус
    Dim max_el, max_st As Integer
    Do
    n = Application.InputBox("число строк:", Type:=1)
    Loop Until n > 0
    Do
    m = Application.InputBox("-число столбцов:", Type:=1)
    Loop Until m > 0
    ReDim x(1 To n, 1 To m)
    Randomize
    Cells.Clear
    For i = 1 To n
    For j = 1 To m
    x(i, j) = 50 * Rnd - 10: Cells(i, j) = x(i, j)
    Next j
    Next i

    max_el = 0
    max_st = 0

    For j = 1 To m
    t = 0:
    znak = False
    If x(1, j) >= 0 Then zhak = True
    t = 1

    For i = 2 To n
    If (x(i, j) >= 0) <> zhak Then
    t = t + 1:
    If znak = True Then znak = False
    Else: znak = True
    End If
    Next i
    If max_el < t Then
    max_el = t:
    max_st = j:
    End If
    Next j

    Cells(n + 2, 1) = &quo t;столбец с наибольш. переменами знаков = " & max_st

    End Sub
    Ответ отправил: 6a3uJI (статус: 6-й класс)
    Ответ отправлен: 03.12.2008, 16:18

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 237514 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Иноземцева Ольга Степановна
    Здравствуйте, Kirill11!
    Все так, но чуть-чуть недоделали. См. приложение.

    Приложение:

    Ответ отправила: Иноземцева Ольга Степановна (статус: 1-й класс)
    Ответ отправлен: 03.12.2008, 19:14

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 237535 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Тесленко Евгений Алексеевич
    Здравствуйте, Kirill11!
    подсчет количества переходов через 0 в двумерном массиве можно выполнить следующим кодом:
    Код:
    Sub countChange()
    Dim x() As Integer, n As Byte, i As Byte, j As Byte, t As Byte
    Const m As Byte = 2, s0$ = "первый второй" + vbCrLf
    Do: n = Application.InputBox(s0, Type:=1): Loop Until n > 0
    ReDim x(1 To n + 1, 1 To m)
    Randomize
    Cells.Clear
    For i = 1 To n
    For j = 1 To 2 'm
    x(i, j) = 50 * Rnd - 10:
    Cells(i, j) = x(i, j)
    If i > 1 Then
    If Not x(i, j) * x(i - 1, j) = Abs(x(i, j) * x(i - 1, j)) Then _
    x(n + 1, j) = x(n + 1, j) + 1
    End If
    Next
    Next
    MsgBox s0 & Space(3) & x(n + 1, 1) & Space(1 5) & x(n + 1, 2)
    End Sub
    Евгений.
    Ответ отправил: Тесленко Евгений Алексеевич (статус: Практикант)
    Ответ отправлен: 03.12.2008, 20:12

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 237540 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное