Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2010, 14:22   #1
rnboy
 
Регистрация: 12.12.2010
Сообщений: 6
Восклицание 1. Сформировать на листе Excel столбец, состоящий из 30 элементов, случайных чисел ...

День добрый.Прошу помощи в решении задания по офисному програмированию.


1. Сформировать на листе Excel столбец, состоящий из 30 элементов, случайных чисел X, распределенных равномерно в диапазоне:
[1, 5][7, 10];


2. Провести фильтрацию полученных чисел Х. Виды фильтрации:

х  [min, max/4][max/2, max];


3. Заполнить квадратную матрицу размерности k (вводится с клавиатуры) числами, полученными после фильтра и упорядочить ее по заданному закону:


Расположить по возрастанию по диагоналям, параллельным главной.
7 11 14 16
4 8 12 15
2 5 9 13
1 3 6 10


в экселе знаю только самые основные моменты,функцию случмежду я нашел,как заставить ее работать в двух диапазонах(возможно надо задать две функции в одной ячейке,как?)
2 и 3 задания мне совсем непонятны.Буду так же благодарен если дадите ссылку на какойто учебный материал по данной теме.
rnboy вне форума Ответить с цитированием
Старый 13.12.2010, 00:44   #2
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от rnboy Посмотреть сообщение
...функцию случмежду я нашел,как заставить ее работать в двух диапазонах(возможно надо задать две функции в одной ячейке,как?)
Можно даже не две, а три
Код:
=ЕСЛИ(СЛУЧМЕЖДУ(0;1);СЛУЧМЕЖДУ(1;5);СЛУЧМЕЖДУ(7;10))
vikttur вне форума Ответить с цитированием
Старый 13.12.2010, 08:33   #3
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от vikttur Посмотреть сообщение
Можно даже не две, а три
Код:
=ЕСЛИ(СЛУЧМЕЖДУ(0;1);СЛУЧМЕЖДУ(1;5);СЛУЧМЕЖДУ(7;10))
распределение получается не равномерным, лучше так:
Код:
=ЕСЛИ(СЛЧИС()<5/9;СЛУЧМЕЖДУ(1;5);СЛУЧМЕЖДУ(7;10))
MCH вне форума Ответить с цитированием
Старый 13.12.2010, 10:21   #4
rnboy
 
Регистрация: 12.12.2010
Сообщений: 6
По умолчанию

спасибо,еще такой вопрос,во втором задании не пропечаталось условие,на самом деле оно такое
х не принадлежит [min, max/4]n[max/2, max]

как я понимаю [min, max/4]n[max/2, max] задает пустое множество,тогда получается если икс не принадлежит условию,то это любые числа,правильно?смысл тогда в фильтрации....
еще не могу понять как сделать фильтрацию в отдельном столбике
и совсем не понимаю что хотят от меня в третьем задании

Последний раз редактировалось rnboy; 13.12.2010 в 10:40.
rnboy вне форума Ответить с цитированием
Старый 13.12.2010, 13:26   #5
rnboy
 
Регистрация: 12.12.2010
Сообщений: 6
По умолчанию

прошу прощения,задание сильно усложняется,его нужно сделать в VBA.я понимаю что выкладывать готовые коды сдесь не принято,но я к сожалению мало что понимаю в нем,может все таки поможете мне?

Опять такой же вопрос:Int((d2 * Rnd) + d1) даст числа из диапазона от d1 до d2,как сделать два диапазона?

Последний раз редактировалось rnboy; 13.12.2010 в 13:39.
rnboy вне форума Ответить с цитированием
Старый 13.12.2010, 13:59   #6
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от rnboy Посмотреть сообщение
прошу прощения,задание сильно усложняется,его нужно сделать в VBA.я понимаю что выкладывать готовые коды сдесь не принято,но я к сожалению мало что понимаю в нем,может все таки поможете мне?

Опять такой же вопрос:Int((d2 * Rnd) + d1) даст числа из диапазона от d1 до d2,как сделать два диапазона?
Код:
Sub rnd30()
    Dim i
    For i = 1 To 30
        Cells(i, 1) = IIf(Rnd() < 5 / 9, Int(Rnd() * 5 + 1), Int(Rnd() * 4 + 7))
    Next i
End Sub
MCH вне форума Ответить с цитированием
Старый 13.12.2010, 14:11   #7
rnboy
 
Регистрация: 12.12.2010
Сообщений: 6
По умолчанию

спасибо.возможно будут еще вопросы,очень благодарен за помощь)
rnboy вне форума Ответить с цитированием
Старый 13.12.2010, 14:30   #8
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

еще вариант с одним Rnd
Код:
Sub rnd30_2()
    Dim i, r
    For i = 1 To 30
        r = Int(Rnd() * 9) + 1
        Cells(i, 1) = IIf(r > 5, r + 1, r)
    Next i
End Sub
MCH вне форума Ответить с цитированием
Старый 14.12.2010, 10:59   #9
rnboy
 
Регистрация: 12.12.2010
Сообщений: 6
По умолчанию

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

Код:
Sub Test()
Dim k As Integer, X(30) As Integer, i As Integer, j As Integer, r As Integer, a As Integer, b As Integer, c As Integer, d As Integer, m As Integer, Y(30) As Integer, matr() As Integer, n As Integer
 Cells.Clear
Cells(1, 1).Font.Bold = 1
Cells(1, 1) = "Случайные числа"
i = 1

'1-е задание - столбец с случайными числами
' Объявляем промежутки
a = 1
b = 5
c = 7
d = 10

For k = 1 To 30
' Случайное целое число в диапазоне от а до b и c до d
' Если нужны любые числа, а не только целые, то убрать функцию Int

Do
Randomize
r = Int(Rnd() * (10 - 2 + 1)) + 2
Loop While r = 6

X(k) = r
' Записываем в столбец А2 - А31
Cells(i + 1, 1) = X(k)
i = i + 1
Next k


' 2-е задание - сортировка
' Ищем максимум
m = X(1)
For k = 2 To 30
 If X(k) > m Then
  m = X(k)
 End If
Next k
Cells(1, 2).Font.Bold = 1
Cells(1, 2) = "Максимум"
Cells(2, 2) = m
' Ищем минимум
minim = X(1)
For k = 2 To 30
 If X(k) < minim Then
  minim = X(k)
 End If
Next k
Cells(3, 2).Font.Bold = 1
Cells(3, 2) = "Минимум"
Cells(4, 2) = minim
' Фильтрация
j = 1
For k = 1 To 30
  Y(j) = X(k)
  j = j + 1
 Next k

i = 1
Cells(1, 3).Font.Bold = 1
Cells(1, 3) = "Отсортированный массив"
For k = 1 To 30
 Cells(i + 1, 3) = Y(k)
 i = i + 1
Next k

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

Последний раз редактировалось rnboy; 14.12.2010 в 11:21.
rnboy вне форума Ответить с цитированием
Старый 14.12.2010, 11:03   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
кракозябрами вышел русский шрифт,не знаю почему,
При копировании кода из редактора VBA выставьте русскую раскладку клавиатуры
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор случайных чисел Evgenii(Евгений) Помощь студентам 6 23.01.2011 22:41
Сформировать одномерный массив целых чисел М2, состоящий из некратными числу N четным элементам массива М Izymka Помощь студентам 12 30.05.2010 02:10
Ввести одномерный массив, состоящий из 10 элементов zergon Помощь студентам 3 24.12.2009 21:34
Генератор случайных чисел psychopat Общие вопросы Delphi 11 18.02.2009 10:39
Сформировать матрицу A - первый столбец которой равен последнему столбцу исходной матрицы Вика М. Помощь студентам 3 23.12.2008 04:51